Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: Cena (02.01.2012 в 21:59) Здраствуйте, я добавил функцию удаления копий максимальных элементов, подскажите пожалуйста, как вызвать ее в главной функции? Т.к у меня считает среднее арифметическое всех элементов, включая и простые копии максильных элементов, а мне нужно удалить копии максимальных элементов:
#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]
Сообщение:
Прикрепить: