Cześć!
Czytam sobie książke, a tu nagle taki kod:
int fill_array(double ar[], int limit)
{
using namespace std;
double temp;
int i;
for(i=0;i<limit;i++)
{
cout << "Podaj wartosc nr " << (i+1) << ": ";
cin >> temp;
if(!cin)
{
cin.clear();
while(cin.get() != '\n')
continue;
cout << "Bledne dane, wprowadzanie danych przerwane.\n";
break;
}
else if(temp<0)
break;
ar[i]= temp;
}
return i;
}
Nie jestem pewien czy dobrze interpretuje jego część. Mianowicie:
if(!cin)
{
cin.clear();
while(cin.get() != '\n')
continue;
cout << "Bledne dane, wprowadzanie danych przerwane.\n";
break;
}
Moja interpretacja: jeżeli wczytywanir danych cin się nie powiodło, pamięć cin zostaje zwolniona. Następnie wykonujemy pętle dopóki wczytany znak jest inny od znaku nowego wiersza. (jeżeli jest inny wykonujemy powrót do początku pętli). Jeżeli pętla się zakończy przejdż do końca (return i)
Czy moja interpretacja jest prawidłowa?
Mile widziane pochwały oraz krytyka :)
Pozdrawiam