Вариант 18

В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. количество элементов массива, меньших С;
  2. сумму целых частей элементов массива, расположенных после последнего отрицательного элемента;
  3. преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 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;
 }
//---------------------------------------------------------------------------

Результат работы программы:

Результат работы. Восемнадцатый вариант. Одномерные массивы и указатели

Вариант 17
Вариант 19
error: Content is protected !!