Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 20:07   #1
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию Одномерный масив.Сложное задание.С++.

Вот задание:

Уничтожить из массива все элементы, превышающие его среднее значение более чем на 10%.

Вот не знаю как это сделать,точнее не знаю как уничтожить элементы и не знаю как записать те что больше на 10%?

Если кому то не сложно помогите сделать функцию для этого.Хотя бы алгоритм,а с него я уже что то буду делать))

Вот функция которая считает среднее арифметическое,но она должна еще уничтожать елементы которые больше на 10 %:

Код:
double average( int n, int *a)
{
    int count = 0, sum = 0, aver, i;

    for ( i=0; i < n; i++)
    {
        sum += a[i];
        count++;
    }
        aver = sum / count;
    return aver;
}
Ну и вот основная програма,осталась только функция уничтожения.

Код:
#include <iostream>

using namespace std;

void Input ( int n, int*a )
{
	int i;
	for (i=0; i<n; i++)
	{
		std :: cout << "Please input element number [" << i+1 <<"] :";
		std :: cin >> a[i];

	}
}


void Output ( int n, int*a )
{
	  int i;
      for (i=0; i<n; i++)
		  std :: cout << a[i] << " ";
		  std :: cout << std::endl;
}


void Zmina( int n, int*a)
{
 int temp, i, min, pozmin, max, pozmax;
 min=a[0];
 pozmin=0;
 for(i=1;i<n;i++)
 {
  if(a[i]<min)
   {
   min=a[i];
   pozmin=i;
   }
  }
  max=a[0];
  pozmax=0;
  for(i=1;i<n;i++)
  {
  if(a[i]>max)
  {
   max=a[i];
   pozmax=i;
   }
 }

 temp=a[pozmax];
 a[pozmax]=a[pozmin];
 a[pozmin]=temp;
}


int main ()
{
	cout << "How many element's? :";
	int n;
	cin >> n;

	int*a = new int [n];

	Input ( n, a );
	cout << "Your array:";
	Output ( n, a );
    Zmina ( n, a);
    cout << "Your array after transformation:";
    Output ( n, a );
	cin.get ();
	cin.get ();
	return 0;
}

Последний раз редактировалось DIQUON; 19.12.2012 в 20:26.
DIQUON вне форума Ответить с цитированием
Старый 19.12.2012, 20:33   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <iostream>

using namespace std;

void
Input(int n, int *a) {
    for (int i = 0; i < n; ++i) {
        cout << "Please input element number [" << i+1 <<"] :";
        cin >> a[i];
    }
}

void
Output(int n, int *a) {
    for (int i = 0; i < n; ++i) {
        cout << a[i] << " ";
    }
    cout << endl;
}

int
ClearArr(int n, int *a) {
    double s = 0;
    for (int i = 0; i < n; ++i) {
        s += a[i];
    }
    s /= n;
    int j = 0;
    for (int i = 0; i < n; ++i) {
        if (fabs(a[i] - s) < 10) {
            a[j++] = a[i]; 
        }
    }
    return j;
}

int main ()
{
    cout << "How many element's? :";
    int n;
    cin >> n;
    int *a = new int [n];
    Input(n, a);
    cout << "Your array:";
    Output(n, a);
    n = ClearArr(n, a);
    cout << "Your array after transformation:";
    Output(n, a);
    cin.get();
    cin.get();
    return 0;
}
Удаляются те, которые отличаются от среднего на 10 и более.
Не могу понять, что значит на 10%. На 10% от чего?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.12.2012, 20:42   #3
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

ну 10% это вроде надо умножить среднее арифметическое на 0.1
DIQUON вне форума Ответить с цитированием
Старый 19.12.2012, 20:48   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
if (a[i] <= s + fabs(0.1 * s))
Тогда такое условие.
Например, s = 10, тогда останутся все элементы <= 11.
s = -10, тогда <= -9.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.12.2012, 20:54   #5
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

мне не понятно зачем тут a[j++] = a[i]; ?
Мы же должны формировать новый массив и записывать туда элементы которые прошли проверку?
DIQUON вне форума Ответить с цитированием
Старый 19.12.2012, 21:01   #6
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Ну в общем спасибо Вам огромное!)))вы мне очень помогли))
DIQUON вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Язык Си. Графика. Сложное задание. Землянин Помощь студентам 0 14.05.2012 16:05
Сложное задание ВаликАматор Общие вопросы C/C++ 4 27.02.2011 14:32
Не сложное задание wma57 Фриланс 5 19.06.2010 20:44
не сложное задание Instant coffee Помощь студентам 3 13.05.2009 17:33
TURBO PASCAL 7.0 сложное задание Nook Помощь студентам 14 26.02.2007 19:10