Форум С++

 

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

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

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

Автор: 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]

Сообщение:

Прикрепить: