В одномерном массиве, состоящем из n вещественных элементов, вычислить:
- номер максимального по модулю элемента массива;
- сумму элементов массива, расположенных после первого положительного элемента;
- преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [а,b], а потом — все остальные.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<conio.h> #include<windows.h> #include<math.h> #include <vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text); int main(int argc, char* argv[]) { int i,n,ibeg=0,imax; float max=0,sum=0,a,b; cout<<rus("Введите размерность n=");cin>>n; cout<<rus("Введите интервал")<<endl; cout<<rus("\na=");cin>>a; cout<<rus("b=");cin>>b; cout<<rus("\nВведите элементы массива:")<<endl<<endl; float *p=new float[n]; for(i=0;i<n;i++)cin>>p[i]; for(i=0;i<n;i++) if(fabs(p[i])>fabs(max)) { max=p[i]; imax=i; } cout<<rus("\nМаксимальный по модулю элемент: ")<<max<<endl; cout<<rus("Позиция максимального по модулю элемента: ")<<imax+1<<endl; for(i=0;i<n;i++) if(p[i]>0) { ibeg=i; break; } for(i=ibeg+1;i<n;i++)sum+=p[i]; cout<<rus("\nСумма элементов расположенных после 1-го положительного элемента: ")<<sum; cout<<rus("\nПреобразованный массив:")<<endl<<endl; for(i=0;i<n;i++) if((int(p[i])>=a)&&(int(p[i])<=b)) { cout<<p[i]<<' '; } for(i=0;i<n;i++) if((int(p[i])<a)||(int(p[i])>b)) { cout<<p[i]<<' '; } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text,bufrus); return bufrus; } //---------------------------------------------------------------------------
Результат работы программы: