программа вместо минимального числа выдаёт нули

Задание:

Напишите программу, которая определяет минимальное число в последовательности положительных чисел, которую ввел пользователь. Если в последовательности есть отрицательные числа, то вы должны сообщить об этом пользователю и предложить повторить ввод еще раз.

Ввожу такое: 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;
}
→ Ссылка