Преведете псевдокод на 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 И така, какво трябва да променя? Въведете друго цяло число, което е в цикъла while, продължава да повтаря. - 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
Няма избор. Нов съм в C++. И трябва да следвам въпроса. Благодаря все пак. - person Rauryn; 24.04.2013
comment
@Rauryn Това е домашно, предполагам? Отговорът е това е глупав псевдокод, ето по-добър начин... - person David; 24.04.2013