@Screpka

Почему не сохраняет и не выводит последнее введенное число?

#include "stdafx.h"
#include "iostream"

using std::cout;
using std::cin;
using std::endl;


int main()
{
	setlocale(LC_ALL, "rus");

	int currval = 0, val = 0;

	if (cin >> currval) {
		int cnt = 1;
		while (cin >> val) {
			if (val == currval) 
				++cnt;
			else {
				cout << currval << " Введено " << cnt << "раз." << endl;
				currval = val;
				cnt = 1;
			}
		}
		cout << currval << " Введено " << cnt << "раз." << endl;
	}

    return 0;
}


Программа должна работать так, что при вводе чисел через пробел подсчитывает количество введенных одинаковых и остальных чисел. Учу С++ по учебнику - Стенли Б. Липпман. Жози Лажойе. Барбара Э. Язык программирования C++. Базовый курс (2014). Программа идентична той, что на странице 44(46).

Но, программа не выводит последнее введенное число. А при повторном вводе не сбрасывает значение последнего не выведенного числа, а продолжает считать, как будто оно введено в новой строке. Помогите найти решение, пожалуйста. Объясните.
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Код while (cin >> val) подразумевает, что мы ждём конца консоли.
Если консоль перенаправлена из файла — ну, с этим всё понятно.
А если нужно сделать конец в настоящей консоли, нажмите Ctrl+Z.

Код высчитывает количество введённых подряд одинаковых чисел; если мы вводим другое или заканчиваем поток — он выводит, сколько их было.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы