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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2010, 22:59   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию Среднее значение

Подскажите пожалуйста, нужно найти среднее значение чисел, например массив 1 4 2 5 7, ср. знач. = 4, т. к. 4 больше 1 и 2, но меньше 5 и 7.
Я выбрала такой алгоритм, сначала отсортировать числа в возрастающем порядке, затем по формуле i = (n+1)/2 можно найти место среднего числа в этом массиве, n - кол-во введенных цифр.

Код:
#include <iostream>
using namespace std;

	int main()
	{
	 int n, i,j,k, tmp=0;
	 cin>>n;
	 int a[n];
	 

	 	for (int i=0; i<n; i++)
	 	cin>>a[i];
	 	
	 		for (int i=0; i<n; i++)
	 		for (int j=0; j<n-1; j++)
	 	    if (a[j] > a[j+1])
	 	    {
	 	    tmp = a[j+1];
	 	    a[j+1]=a[j];
	 	    a[j]=tmp;

	 	   } 
	 	      
	 	       
	 	    	for (int i=0; i<n; i++)
	 	    	cout <<a[i];

   return 0;
   }
здесь сортировка в возр. порядке, как добавить сюда ту формулу, чтобы найти само среднее значение? Заранее спасибо)
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 06.11.2010, 23:03   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
i=(n+1)/2;
cout<<a[i];
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 06.11.2010 в 23:06.
Mad_Cat вне форума Ответить с цитированием
Старый 06.11.2010, 23:08   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Просто обратиться к элементу: a[(n+1)/2]
Как мне кажется, более правильным было бы такое решение:
1. Находим среднее арифметическое всех элементов массива.
2. Находим элемент, наиболее близкий к среднему - это и есть ответ.
Пример: 1 9 12 14. Среднее арифметическое: 9, т.е. логично выдать ответ 9 (т.к. такой элемент присутствует в массиве). Однако Ваш метод даст ответ 12.
Arigato вне форума Ответить с цитированием
Старый 06.11.2010, 23:12   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

точно ж нумерация с 0(
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 06.11.2010 в 23:43.
Mad_Cat вне форума Ответить с цитированием
Старый 06.11.2010, 23:23   #5
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
i=(n+1)/2;
cout<<a[i];
да) но только в какую часть это вставить, так чтобы это работало уже в отсортированном массиве? (вставляю в условие...выводит чушь))
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 06.11.2010, 23:28   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
но только в какую часть это вставить
перед
Код:
return 0;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 06.11.2010, 23:33   #7
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Mad_Cat, выводит не правильный ответ(
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 06.11.2010, 23:37   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
неа он и даст 9)
[1,9,12,14]
(4+1) div 2 = 2 ; ===> a[2]=9
Вообще-то a[2]=12
Arigato вне форума Ответить с цитированием
Старый 06.11.2010, 23:42   #9
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Arigato, а мы напишем
Код:
i=(n+1)/2;
	 	    cout <<a[i-1];
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 06.11.2010, 23:43   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Mad_Cat, выводит не правильный ответ(
http://programmersforum.ru/showpost....87&postcount=3
Цитата:
Вообще-то a[2]=12
Цитата:
точно ж нумерация с 0(
Цитата:
Arigato, а мы напишем
и под каждый массив будем переписывать прогу
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Среднее значение SB86 Microsoft Office Excel 3 08.06.2010 07:24
Среднее значение Storm.7117 Microsoft Office Excel 3 13.01.2010 15:09
Среднее значение acidcool SQL, базы данных 11 16.08.2009 16:34
среднее значение MyQwErTy Паскаль, Turbo Pascal, PascalABC.NET 3 09.11.2008 21:17
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20