Блок-схема программы


Листинг программы

#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;

}