#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 дня ломал голову.
Потому что индекс i
в Наибольшее значение " << numbers[i]
будет равен numbers.size()
и, следовательно, невалиден. Для доступа к последнему элементу используйте numbers.back()
, предварительно проверив, что вектор не пустой.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В лабе необходимо создать проект MFCКинуть один edit и кнопку
Есть простой класс для операци с переменными под мьютексом:
Первое: При вызове конструктора родителя нужно указать еще и его шаблонные параметры