Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 26.04.2012, 22:15   #1
monro86
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 31
Восклицание Массив -> Вектор

Доброго времени суток!
Ребят подскажите пожалуйста. Задача состоит вот в чем. Есть массив например из 10 чисел. Нужно найти сумму всем чисел, максимальное значение, и индекс максимального значения. Вот набросал код:
Код:
int main()
{
	const int arraySize = 10;
	int n[ arraySize ] = { 32, 27, 64, 95, 18, 14, 95, 70, 64, 90};
	int sum = 0;
	int max = 0;
	int max2;

	for ( int i = 0; i < arraySize; i++)
		sum += n[ i ];
	cout << "Sum is: " << sum << endl;

	for( int j = 0; j < arraySize; j++ )
		if ( max < n[ j ])
		{
			max = n[ j ];
			max2 = j;
		}
	cout << "Max elem of: " << max << "\nEnd index of elem is: " << max2 << endl;
		

	return 0;
}
Но проблема в том что, если есть повторяющиеся значение в массиве, то программа не учитывает повторение, вот на примере числа "95". Как можно сделать чтобы выводились все значение и индекс в массиве.
Или это можно сделать через вектор? Подскажите как?
Спасибо!
monro86 вне форума Ответить с цитированием
Старый 27.04.2012, 00:02   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

Нужно найти сумму всем чисел

Код:
std::cout << "Сумма висех сисел, насяльника: " << std::accumulate(n, n + arraySize, 0) << std::endl;
максимальное значение, и индекс максимального значения

Код:
int* max = std::max_element(n, n + arraySize);
std::cout << "Максимальное снасение, насяльника: " << *max << std::endl;
std::cout << "Индекс максимального снасения, насяльника: " << std::distance(n, max) << std::endl;
Rififi вне форума Ответить с цитированием
Старый 27.04.2012, 00:47   #3
monro86
Пользователь
 
Регистрация: 14.12.2011
Сообщений: 31
По умолчанию

Премного благодарен. Код заметно меньше стал, но при повторе числа "95", а оно повторяется в индексе n[3] и n[6], а программа выводит только первый индекс. Это можно исправить?
monro86 вне форума Ответить с цитированием
Старый 29.04.2012, 10:21   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

monro86

при повторе числа "95", а оно повторяется в индексе n[3] и n[6], а программа выводит только первый индекс. Это можно исправить?

Можно. Но не с помощью алгоритма max_element
Rififi вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив ( построить вектор) Юля 19 Паскаль, Turbo Pascal, PascalABC.NET 6 08.04.2012 19:47
Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W leha_demi Помощь студентам 2 24.09.2011 17:12
Вектор массив RUSSTUDENT Помощь студентам 1 12.10.2010 09:37
Одномерный массив и вещественный вектор Sychev11 Помощь студентам 1 29.04.2010 22:54


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS