Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Cena   (30.12.2011 в 21:01)
Здраствуйте, я добавил функцию удаления копий максимальных элементов, подскажите пожалуйста, как вызвать ее в главной функции? Т.к у меня считает среднее арифметическое всех элементов, включая и простые копии максильных элементов, а мне нужно удалить копии максимальных элементов:
#include <iostream>
#include <math.h>
using namespace std;
int max(int *x, int n)
{int max=x[0];
int Nmax=0, i=0;
for(i = 0; i<n; i++)
{if(max<x[i])
{max=x[i];
Nmax=i;}}
return Nmax;}
bool prostoe(int n)
{int i=0;
bool pr;
if(n<=2) return 0;
for(i=2; i<n/2; i++)
{if(n%i==0) return pr;}}
// Удаляем копии максимальных элементов
void udal(int*x, int Nmax, int*n)
{int i;
for(i=0; i<*n-1; i++)
{if (x[i]==x[i-1])
{do{
Nmax=i;
x[Nmax-1]=x[Nmax];
Nmax++;
}while(Nmax<*n);
x[*n-1]=0;
i--;
realloc((int *)x,*n*sizeof(int));}}}
int sr_arifm(int *x, int n)
{int s;
int k, i;
for(s=0, i=0, k=0; i<n; s+=x[i], i++)
{if(x[i]>0)
k++;}
if(k) return s/k;
else return 0;
}int main ()
{int *x, Nmax, n,i;
double sr;
cout<<"n=";
cin>>n;
x=(int *)calloc(n,sizeof(int));
cout<<"vvedite massiv X=";
for(i=0; i<n; i++)
cin>>*(x+i);
Nmax=max(x,n);
if(prostoe(*(x+i)))
udal(x, i, &n);
else i++;
sr=sr_arifm(x, n);
cout<<"sr="<<sr<<"\n";
free(x);
system("pause");
return 0;}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: