Я начинающий программист и пытаюсь написать программу, которая запрашивает у пользователя следующее:
- P - Печать номеров
- A - Добавление номеров
- M - отображение среднего числа
- S - отображение наименьшего числа
- L - отображение наибольшего числа
- Q - выход
Пользователь должен набрать эти буквы (будь то строчные или прописные), чтобы работать с ним. Цель состоит в том, чтобы создать список чисел только с использованием вектора и выполнить вышеуказанные действия
Для Например, если я наберу p, он должен отобразить пустой список (если в списке нет номера) или отобразить числа в следующем формате: [1 2 3]
Применить этот же формат здесь для других вариантов
Так вот код, который я написал сам:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int Count {1};
char selection {};
int Numbers {};
double Sum {0};
double Average {};
int Minimum {};
int Maximum {};
vector <int> list;
do {
cout << "P - Print Numbers" << endl;
cout << "A - Add Numbers" << endl;
cout << "M - Display The Mean Of The Numbers" << endl;
cout << "S - Display The Smallest Number" << endl;
cout << "L - Display The Largest Number" << endl;
cout << "Q - Quit" << endl;
cout << "\nEnter Your Choice: ";
cin >> selection;
switch(selection){
case 'P':
case 'p':
if(list.size() == 0){
cout << "\n[] - The List Is Empty" << endl;
} else{
cout << "\n[ ";
for(size_t i{0}; i<=list.size(); ++i)
cout << list.at(i) << " ";
cout << "]" << endl;
}
break;
case 'a':
case 'A':
cout << "\nEnter Your Number: ";
cin >> Numbers;
if (Count == 1){
Maximum = Numbers;
Minimum = Numbers;
}
if (Numbers > Maximum)
Maximum = Numbers;
if (Numbers < Minimum)
Minimum = Numbers;
list.push_back(Numbers);
cout << "Added " << Numbers << endl;
Count += 1;
break;
case 'm':
case 'M':
if (list.size() == 0)
cout << "Unable To Calculate The Mean - No Data" << endl;
else {
for (size_t j{0}; j<=list.size(); ++j){
Sum += list.at(j);
Average = Sum / list.size();
}
cout << "\nThe Mean Is : " << Average << endl;
}
break;
case 's':
case 'S':
if (list.size() == 0)
cout << "Unable To Determine The Smallest Number - List Is Empty" << endl;
else
cout << "\nThe smallest number is : " << Minimum << endl;
break;
case 'l':
case 'L':
if (list.size() == 0)
cout << "Unable To Determine The Largest Number - List Is Empty" << endl;
else
cout << "\nThe Largest number is : " << Maximum << endl;
break;
case 'q':
case 'Q':
cout << "Goodbye!!" << endl;
break;
default:
cout << "Unknown Selection, Please Try Again!" << endl;
}
} while (selection != 'q' && selection != 'Q');
return 0;
}
Проблема в том, что я могу успешно добавить номер, но когда я пытаюсь распечатать список, я получаю это:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 1) >= this->size() (which is 1)
Теперь, как я уже сказал, я могу запустить это без каких-либо ошибок или предупреждений. d, чтобы изменить size_t
на int
, но я получил два предупреждения ... и я также использую .push_back()
для вектора, поэтому у меня нет пустого вектора ...
Любая помощь было бы здорово .. Спасибо :)