#c #input #while-loop
#c #ввод #цикл while
Вопрос:
Я совсем новичок в кодировании, поэтому я не совсем понимаю, почему этот цикл while не принимает последнее введенное значение. Вывод в конце, если вы должны были ввести «1, 2, 3, 4, 5» было бы «4, 3, 2, 1». Любая помощь будет высоко оценена.
#include <iostream>
#include <cstdlib>
#include <queue>
#include <vector>
using namespace std;
int main()
{
priority_queue<int> q;
int score;
cin >> score;
int count = 0;
while (count != 4)
{
count ;
q.push(score);
cin >> score;
}
while (!q.empty())
{
cout << q.top() << " ";
q.pop();
}
}
Комментарии:
1. Вы никогда
q.push(score);
не после последнегоcin >> score;
. Попробуйте пошагово выполнить свой код с помощью отладчика, чтобы посмотреть, что произойдетq
.2. Ваша структура немного странная. Просто переместите
cin
передpush
, удалитеcin
вне цикла и остановите цикл, когдаcount
будет 5.3. Спасибо за вашу помощь. Я совершенно забыл, что у меня был другой ввод над циклом while.
4. Разговор с уткой в порядке вещей… Посмотрите, как отлаживать небольшие программы , не смейтесь, это работает…
Ответ №1:
Это потому, что вы никогда не делаете q.push(score);
после последнего cin >> score;
в вашем первом while
цикле. Это означает, что очередь сохраняет только 4 целых числа, что приводит к следующему циклу while для печати только четырех чисел. Приведенный ниже код выведет вам пять чисел.
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> q;
int score;
int count = 0;
while (count != 5)
{
cin >> score;
q.push(score);
count ;
}
while (!q.empty())
{
cout << q.top() << " ";
q.pop();
}
}
Ответ №2:
#include <iostream>
using namespace std;
int arr[5], n = 5;
int main() {
for (int i = 0; i < 5; i )
cin >> arr[i];
for (int i = 0; i < 5; i ) {
n--;
cout << arr[n] << endl;
}
}