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