Блок-схема программы
Листинг программы
#include <cstdlib>
#include <iostream>
using namespace std;
bool prostoe(int X)
{
int i;
bool p;
if (X>0) for (p=true,i=2;i<=X/2&&p==true;i++)
{if (X%i==0) p=false;}
else p=false;
return p;
}
int max_el(int *x, int n)
{
int i,max,Nmax;
for (max=x[0],Nmax=0,i=1;i<n;i++) if (x[i]>max) {max=x[i]; Nmax=i;}
return Nmax;
}
float sr_arifm(int *x,int n)
//вычисление среднего арифметического положительных элементов.
*x - адрес первого элемента, n - количество элементов массива.
{
int i,k,s;
for (i=k=s=0;i<n;i++) if (x[i]>0) {s+=x[i]; k++;}
if (k!=0) return (float)s/k;
else {cout<<"В массиве нет положительных элементов."; return 0;}
}
int del_el(int *x,int n,int k) //k - элемент, который необходимо удалить.
{
int i;
for (i=k;i<n-1;x[i]=x[i+1], i++);
realloc((int *) x, (n--)*sizeof(int));
return n;
}
int main(int argc, char *argv[])
{
int i,n,Nmax[2],Npr[2],k;
float sr;
cout<<"Ввоодится целочисленный массив X[n]. Программа удаляет 2 первых простых числа, определяет изменилось ли положение максимального элемента массива, находит среднее арифметическое положительных элементов до и после удаления.";
cout<<"\nN= "; cin>>n; int X[n];
for (k=i=0;i<n;i++)
{
cout<<"X["<<i+1<<"]= "; cin>>X[i];
if (prostoe(X[i])) if (k<2) {Npr[k]=i; k++;}
}
Nmax[0]=max_el(X,n); sr=sr_arifm(X,n);
cout<<"Среднее арифметическое положительных элементов до удаления: "<<sr<<endl;
if (k>0)
{n=del_el(X,n,Npr[0]);
if (k>1) n=del_el(X,n,Npr[1]-1);
else cout<<"В массиве только 1 простой элемент.\n";}
else cout<<"В массиве нет простых элементов.\n";
Nmax[1]=max_el(X,n);
sr=sr_arifm(X,n);
cout<<"Среднее арифметическое положительных элементов после удаления: "<<sr<<endl;
if (Nmax[0]!=Nmax[1]) cout<<"Положение максимального элемента изменилось.\n";
else cout<<"Положение максимального элемента не изменилось.\n";
for (i=0;i<n;cout<<"X["<<i+1<<"]= "<<X[i]<<endl, i++);
system("PAUSE");
return EXIT_SUCCESS;
}