Перевести псевдокод на C++

Мне дали псевдокод для перевода на C++:

    Set a Boolean variable “first” to true.
    While another value has been read successfully
          If first is true
          Set the minimum to the value.
          Set first to false.
          Else if the value is less than the minimum
          Set the minimum to the value.
    Print the minimum

И вот мои коды:

bool first = true;
bool read_value = true;
int value = 0;
int minimum = 0;
cout << "Enter an integer : " ;
cin >> value;
while(cin.hasNextInt())   // error here
{
    cout << "Enter another integer : " ;
    cin >> minimum;
    if( first == true){
        minimum = value;
        first = false;
    }else if ( value < minimum){
        minimum = value;
    }
}
cout << minimum;

system("PAUSE");
return 0;

Там есть ошибка в hasNextInt. И я действительно не знаю, чего хочет псевдокод. Кто-нибудь может мне объяснить?

Заранее спасибо.


person Rauryn    schedule 24.04.2013    source источник


Ответы (3)


В стандартных библиотеках C++ нет функции hasNextInt() (и поэтому вы не можете ее скомпилировать). Однако в Java есть один!

person Victor Sand    schedule 24.04.2013
comment
@ Rauryn Ты на правильном пути, просто ты делаешь это не так. Вам нужно while (cin >> value). - person jrok; 24.04.2013
comment
@jrok Так что я должен изменить? Введите другое целое число, которое находится в цикле, продолжайте повторяться. - person Rauryn; 24.04.2013
comment
Вы остановите цикл, когда введете что-то, что не может быть интерпретировано как целое число, - тогда условие cin >> value оценивается как ложное. Вы можете передать EOF в cin, например, введя Ctrl+Z (Windows) или Ctrl+D (linux). - person jrok; 24.04.2013
comment
О, вот что означает псевдокод? Система продолжает предлагать пользователю ввести целое число, пока не будет что-то, что не является целым числом. Тогда он будет отфильтровывать минимум? - person Rauryn; 24.04.2013

Это ближе к коду, который вы хотите:

cout << "Enter an integer : " ;
while( cin >> value )
{
    if( first == true){
        minimum = value;
     first = false;
    }else if ( value < minimum){
        minimum = value;
    }
    cout << "Enter another integer : " ;
}
person Shafik Yaghmour    schedule 24.04.2013
comment
Но он не показывает минимум. Просто продолжайте повторять - person Rauryn; 24.04.2013
comment
@Rauryn Вам нужно отправить символ EOF ctrl-D в Linux, и я думаю, что ctrl-Z в Windows заголовок stackoverflow.com/questions/5360129/the-question-on-while-cin - person Shafik Yaghmour; 24.04.2013

Это глупый псевдокод. Мы можем добиться большего успеха без какой-то бесполезной ерунды...

int min = std::numeric_limits<int>::max();

for(int val; cin >> val)
{
    if(val < min)
        min = val;
}

cout << "Minimum: " << min << '\n';
person David    schedule 24.04.2013
comment
Нет выбора. Я новичок в С++. И я должен следить за вопросом. Спасибо, в любом случае. - person Rauryn; 24.04.2013
comment
@Rauryn Это домашнее задание, я полагаю? Ответ: это глупый псевдокод, вот способ получше... - person David; 24.04.2013