👤

In C++, cu while, va rog
Cerinta
Scrieti un algoritm care citeste de la tastatura mai multe numere pana la aparitia cifrei 0. In momentul cand s-a citit aceasta cifra, programul se opreste din executie si arata cel mai mare divizor al numerelor citite pana in acel moment.



Date de intrare
Se citesc de la tastatura numerele pana la intalnirea lui 0.



Date de iesire
Se vor afisa pe ecran toti cel mai mare divizor al numerelor citite.



Restrictii si precizari
Pentru orice numar X citit se garanteaza faptul ca: 0 < X < 1,000,000,000


Exemplu
Date de intrare Date de iesire
60 36 40 80 0 4


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int main()

{unsigned int x,copx,cmmdc,ult;

bool ok=1;

cin>>x;

ult=x;

cin>>x;

copx=x;

{if(copx>ult)

copx=copx-ult;

else

ult=ult-copx;}

cmmdc=copx;

ult=x;

while (x!=0)

   {cin>>x;

if (x!=0)

{copx=x;

while(ult!=copx)

{if(copx>ult)

copx=copx-ult;

else

ult=ult-copx;}

if (ok==1)

   if (cmmdc==copx)

   cmmdc=copx;

   else

       if (cmmdc<copx)

           {while (copx>cmmdc)

           copx=copx-cmmdc;

           if (cmmdc!=copx)

           ok=0;}

      else

           {if (cmmdc>copx)

           while (cmmdc>copx)

           cmmdc=cmmdc-copx;

           if (cmmdc!=copx)

           ok=0;}

ult=x;}}

cout<<cmmdc;

return 0;

}

copx --> copia lui x

ult --> ultimul x citit