Форум С++

 

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

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

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

Автор: Cena   (03.01.2012 в 14:21)
Здраствуйте, да, речь идет о функции void udal(int*x, int Nmax, int*n), я исправил udal(x, Nmax, n), после этого ввел массив, состоящий из 3 элементов, к примеру, 13, 13, 1, тоесть 13-число простое и оно максимальное среди данных чисел, также имеются копия максимального числа, среднее арифметическое должно быть(13+1)/2=7, а у меня результат 5, тоесть у меня некорректно считает среднее арифметическое, вроде, элементы повторяющиеся удаляются, где-то ошибся.
#include <iostream>
#include <malloc.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;
}
}
// Удаляем копии максимальных элементов
int udal(int *x, int Nmax, int n) // функция, определяющая элементы массива в единственном экземпляре
{
for (int i= 0; i<n; i++)
{
for (int j = i + 1; j < n ; j++)
{
if ( x[i] == x[j] ) // если найден одинаковый элемент
{
for (int j=Nmax; Nmax<n -1; Nmax++)
{
// выполнить сдвиг всех остальных элементов массива на -1, начиная со следующего элемента, после найденного дубля
x[Nmax] = x[Nmax+1];
}
n-=1; // уменьшить размер массива на 1

if (x[i] == x[j]) // если следующий элемент - дубль
{
j--; // выполнить переход на предыдущий элемент
}
}
}
}
return n;
}
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;
}
int main ()
{
int *x, Nmax, n,i;
double sr;
cout<<"n=";
cin>>n;
x=new int[n];
cout<<"vvedite massiv X=";
for(i=0; i<n; i++)
cin>>*(x+i);
Nmax=max(x,n);
if(prostoe(*(x))+i)
udal(x,Nmax,n);
sr=sr_arifm(x,n);
cout<<"sr="<<sr<<"\n";
free(x);
system("pause");
}

А в функции поиска максимального элемента, правильно ли я возвращаю номер максимального элемета return Nmax; или я должен вернуть n?


Ваше имя:

Пароль:

Цитировать

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

Сообщение:

Прикрепить: