Почему не выводится наибольшее число из вектора?

150
24 ноября 2018, 09:10
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
int main() { 
vector<double> numbers; // создаём вектор для внесения значений и их вывода в конце
int values = 0; // создаём переменую счётчик значений 
double number = 0.0; // переменная для ввода значений
string unit; // переменная для еденицы измерения
double result = 0.0; // переменная с результатом
while (cin >> number >> unit) {
    // проверки на единицу измерения
    if (unit == "m") { 
        number *= 10000;
        result += number;
    }
    else if (unit == "cm") {
        number *= 100;
        result += number;
    }
    else if (unit == "in") {
        number *= 2.54 * 100;
        result += number;
    }
    else if (unit == "ft") {
        number *= 30.48 * 100;
        result += number;
    }
    else {
        cout << " Введено неверное значение";
        break;
    }
    numbers.push_back(number); // ввод значения в вектор
    values++; 
}
cout << endl<< "Количество значений " << values << endl;
// сортировка значений в векторе
sort(numbers.begin(),numbers.end());
cout << "Список введёных значений ";
int i = 0;
for(; i < numbers.size(); i++) {
    // вывод значений из вектора
    cout << numbers[i] / 10000 << " m ";
}
cout << endl;
cout << "Сумма введёных значений " << result / 10000 << " m" << endl;
 cout << "Наименьшее значение " << numbers[0] / 10000 << endl;
 cout << "Наибольшее значение " << numbers[i] / 10000 << endl; 

}

Почему вместо "наибольшего значения" выводятся непонятные числа

P.S. Я начинающий над этой задачкой 3 дня ломал голову.

Answer 1

Потому что индекс i в Наибольшее значение " << numbers[i] будет равен numbers.size() и, следовательно, невалиден. Для доступа к последнему элементу используйте numbers.back(), предварительно проверив, что вектор не пустой.

READ ALSO
Вывести сообщение из Edit в excel?

Вывести сообщение из Edit в excel?

В лабе необходимо создать проект MFCКинуть один edit и кнопку

171
VisualStudio не собирает то, что собрал GCC

VisualStudio не собирает то, что собрал GCC

Есть простой класс для операци с переменными под мьютексом:

164
Помогите пожалуйста. Что не так? [закрыт]

Помогите пожалуйста. Что не так? [закрыт]

Первое: При вызове конструктора родителя нужно указать еще и его шаблонные параметры

173