символ — C ++: выход из команды for loop push_back с определенной командой

Я учился отталкивать векторы в C ++, и я попал туда, где я могу его использовать. Однако код, который я сделал, вставленный ниже, спрашивает пользователя каждый раз, когда цикл заканчивается, хочет ли пользователь продолжить цикл или нет. Я обнаружил, что это очень неудобно, поэтому я хотел изменить код, чтобы при вводе пользователем («EXIT») цикл for прерывался. Как мне изменить код в этом случае?
Я вставил весь код на случай, если мне придется изменить части кроме цикла for.

#define all student_marks.begin(), student_marks.end()

using namespace std;

int main()
{
vector<double> student_marks; //create container

double mark;
char more_students = 'y'; //set default to yes ('y')

while (more_students=='y' || more_students=='Y') {
cout<<"Enter mark for student #"<<student_marks.size()+1<<":";
cin>>mark; //enter mark

student_marks.push_back(mark); //push_back

cout<<"More students?(y/n)";
cin>>more_students; //user selects to break or continue the loop
}

double sum = accumulate(all, 0.0), average = sum/student_marks.size(); //sum and ave

cout<<endl
<<"Total mark:\t\t"<<sum<<endl
<<"Average mark:\t"<<average<<endl
<<"Highest mark:\t"<<*max_element(all)<<endl
<<"Lowest mark:\t"<<*min_element(all)<<endl<<endl;

cout<<"-----Score list-----"<<endl;
sort(all,greater<double>()); //sort list

for (size_t i=0; i<student_marks.size(); i++)
cout<<"#"<<i+1<<". "<<student_marks[i]<<endl; //outputs results as listreturn 0;
}

1

Решение

Вы можете просто оставаться в цикле, пока пользователь вводит правильные метки:

cout << "Enter mark for student #1:"
while(cin >> mark) {
students_marks.push_bak(mark);
cout << "Enter mark for student #" << marks.size() + 1;
}

Цикл завершится, как только пользователь введет что-то отличное от doubleнапример, EOF флаг.

2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector