Informatică, întrebare adresată de alexmysulica, 8 ani în urmă

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ăspunsuri la întrebare

Răspuns de fatman195322
1

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


fatman195322: Foarte posibil sa nu fie cea mai eficienta varianta; poate-l poti micsora tu.
fatman195322: Poti sa pui break si sa nu mai iei ok.
alexmysulica: dupa ce am vazut rezolvarea ta, am facut asa
alexmysulica: #include
using namespace std;
int main()
{
int x,y,cmmdc;
cin>>x;
if (x!=0)
{
cin>>y;
while (x!=y)
{
if (x>y)
{
x=x-y;
}
if (y>x)
{
y=y-x;
}
}
cmmdc=x;
cin>>x;
if (x!=0)
{
while (cmmdc!=x)
{
if (cmmdc>x)
{
cmmdc=cmmdc-x;
}
if (x>cmmdc)
{
x=x-cmmdc;
}
}
}
cmmdc=cmmdc;
}
cout< return 0;
}
alexmysulica: si mi-a iesit
alexmysulica: am mai pus o intrebare, daca poti sa ma ajuti si cu aia ar fi genial
fatman195322: O sa ma uit. Pe de alta parte, testeaza programul tau, te rog, pentru 12 24 36 8 0 25. Ar trebui sa-ti dea 4; mie mi-a dat 12 cu programul tau, insa e posibil sa fie din cauza ca nu s-a copiat bine pe brainly comentariul.
Alte întrebări interesante