программа вместо минимального числа выдаёт нули
Задание:
Напишите программу, которая определяет минимальное число в последовательности положительных чисел, которую ввел пользователь. Если в последовательности есть отрицательные числа, то вы должны сообщить об этом пользователю и предложить повторить ввод еще раз.
Ввожу такое: 12 43 23 23 4 #. Программа не минимальное число выдаёт, а кучу нулей в консоли.
#include <iostream>
int main()
{
using namespace std;
int number = 0, min = 0, wrong = 0;
char AnyChar;
cin >> number;
min = number;
while ((AnyChar = cin.get()) != '#' && wrong != -1)
{
cout << number << " ";
if (number < min)
{
min = number;
}
else if (number < 0)
{
wrong = -1;
};
cin >> number;
};
if (wrong == -1)
{
cout << "You entered a negaeive number" << endl;
}
else if (AnyChar == '#')
{
cout << "Your min number is " << min << endl;
};
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы просто загоняете попыткой чтения cin>>number не числа поток в состояние fail, после чего ничего из него не читается, и идет бесконечный цикл — из которого нет выхода...
Если я правильно понимаю, что вы хотите — то это примерно так:
int main()
{
int number = 0, min = 0;
cin >> number;
min = number;
while(cin >> number)
{
cout << number << " ";
if (number < 0)
{
break;
} else if (number < min)
{
min = number;
}
};
cin.clear();
if (number < 0)
{
cout << "You entered a negaeive number" << endl;
}
else
{
cout << "Your min number is " << min << endl;
};
return 0;
}