Форум программистов, компьютерный форум CyberForum.ru

Наибольший элемент вектора - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.93
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
21.04.2011, 17:16     Наибольший элемент вектора #1
Помогите, пожалуйста разобраться с ошибкой. Прога-ма запрашивает числа, записывает в вектор, находит самое большое число и выводит его на екран.

#include <iostream>
#include <vector>
using namespace std;

int main()
{

vector<int>ivec2;
int num, max=0;

cout << "Enter numbers:"<<endl;

while (cin>>num)

ivec2.push_back(num);

for (vector<int>::size_type ip=0; ip!=ivec2.size()-1; ++ip)
if (ivec2[ip]>ivec2[ip+1])
max=ivec2[ip];
<<"The biggest element is : "<<max<< endl;
system("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
21.04.2011, 17:17     Наибольший элемент вектора #2
что пишет компилятор?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
21.04.2011, 17:26     Наибольший элемент вектора #3
Господи, зачем же так извращаться.
C++
1
std::cout << "Max: " << *std::max_element (vec.begin(), vec.end());
А тут, сама реализация алгоритма есть: http://www.cplusplus.com/reference/a...m/max_element/
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
21.04.2011, 17:31  [ТС]     Наибольший элемент вектора #4
Я пропустил команду cout, когда перемещал код в сообщение форума. Компилятор ошибок не выдаёт. Программа компилируется и работает, но неверно. Она выдаёт не самый большой элемент из вектора, а кокой-нибудь другой. Логическую ошибку обнаружить не могу, вроде всё очень просто и правильно.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
21.04.2011, 17:38     Наибольший элемент вектора #5
ответ написан выше, используйте STL с умом
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
21.04.2011, 17:48  [ТС]     Наибольший элемент вектора #6
При написании этой прог-мы я использовал те знания, которые имею на данный момент. До STL ещё не дошёл. Учу всё сам. И не понимаю почему нельзя правильно написать такую лёгкую программу используя только 1 цикл и условный оператор сравнения. Пока не выучу весь учебник + STL, про-гу написать невозможно?
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
21.04.2011, 17:54     Наибольший элемент вектора #7
создайте обычный массив и пишите, в чем сложность? если уж взялись за использование std::vector то воспользуйтесь STL. Зачем учить STL? откройте мануал по готовым функция и пользуйтесь, что мешает?
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
21.04.2011, 17:58     Наибольший элемент вектора #8
Ну учится человек, что вы так взъелись на него.

Romiys, у вас проверка неправильная. Правильно так:
C++
1
2
3
for (vector<int>::size_type ip = 0; ip < ivec2.size(); ++ip)
  if (max < ivec2[ip])
    max = ivec2[ip];
Или даже так:
C++
1
2
3
for (vector<int>::iterator it = ivec2.begin(); it != ivec2.end(); ++it)
  if (max < *it)
    max = *it;
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
21.04.2011, 18:11  [ТС]     Наибольший элемент вектора #9
Извиняюсь за глупый вопрос новичка, но что значит "мануал"? Названия функций вектора и их описания беру из учебников для новичков. Что есть - тем и работаю. "Мануал" - типа справки гдеть в компиляторе?

Добавлено через 10 минут
Спасибо всем за участие и внимание! Исправил прог-му , как Вы подсказали, на экран выводит, что наибольший элемент вектора 0?!

#include <iostream>
#include <vector>
using namespace std;

int main()
{

vector<int>ivec2;
int num, max=0;

cout << "Enter numbers:"<<endl;

while (cin>>num)

ivec2.push_back(num);

for (vector<int>::size_type ip=0; ip<ivec2.size(); ++ip)
if (max>ivec2[ip])
max=ivec2[ip];

cout<<"The biggest element is : "<<max<< endl;
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2011, 18:43     Наибольший элемент вектора
Еще ссылки по теме:

Задана вещественная матрица размером m×n. Найти наибольший элемент. Перестановкой строк и столбцов, добиться того, чтобы данный элемент оказался в вер C++
C++ Наибольший элемент
C++ Найти наибольший элемент и выбросить из матрицы строку и столбец, на пересечении которых стоит этот элемент

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
21.04.2011, 18:43  [ТС]     Наибольший элемент вектора #10
Всем спасибо за помощь и участие. Ошибку нашёл. Успехов в работе!
Yandex
Объявления
21.04.2011, 18:43     Наибольший элемент вектора
Ответ Создать тему
Опции темы

Текущее время: 07:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru