Обяснение на C ++ задача

Criz

Registered
Ще може ли някой да ми обясни всеки един ред от тази C++ програма какво действие извършва.

unsigned long int chislo,maxnechetno;
maxnechetno=0;
while((chislo!=0)&&(chislo>0))
{
if((chislo%2!=0)&&(chislo>maxnechetno))
maxnechetno=chislo;
cin>>chislo;
}
if(maxnechetno==0) cout<<"ne ste vuveli nechetni chisla"<<endl;
else cout<<maxnechetno<<endl;

Благодаря предварително. :)
 
Код:
unsigned long int chislo,maxnechetno; // unsigned long int -> 64битово (най-често) цяло положително число

    maxnechetno=0;

// Докато chislo е различно от 0 и е > 0... Едно от двете условия няма смисъл, защото chislo и без това може да е само положително или нула
    while((chislo!=0)&&(chislo>0))
    {
// Ако chislo е нечетно (тоест се дели на 2 с остатък) и chislo е > от maxnechetno
                                  if((chislo%2!=0)&&(chislo>maxnechetno))
                                  maxnechetno=chislo;

// Въвежда се число от клавиатурата
                                  cin>>chislo;
                                  }
// Ако maxnechetno == 0
                                  if(maxnechetno==0) cout<<"ne ste vuveli nechetni chisla"<<endl;
// Извежда maxnechetno
                                  else cout<<maxnechetno<<endl;

В кода има грешка и няма да работи както очакваш. Поправен вариант:

Код:
unsigned long int chislo,maxnechetno;

    maxnechetno=0;
cin >> chislo;

    while(chislo != 0)
    {
                                  if ( chislo % 2 != 0 && chislo > maxnechetno)
                                  maxnechetno=chislo;

                                  cin>>chislo;
     }

     if(maxnechetno==0)
cout<<"ne ste vuveli nechetni chisla"<<endl;
     else
cout<<maxnechetno<<endl;

Основната грешка е, че ползваш chislo без да си въвел стойност преди това в него. Имаш излишни скоби и проверки
 

Back
Горе