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

Ce nu este bine în program?

//divizorii comuni ai lui a și b
#include
using namespace std;
int main()
{
int a,b,maxx,d;
cin>>a>>b;
if(b else maxx=a;
d=1;
while(d {
if(a%d==0 && b%d==0) cout< }
d=d+1;
return 0;
}


PTeodorică: //divizorii comuni ai lui a și b
#include <iostream>
using namespace std;
int main()
{
int a,b,maxx,d;
cin>>a>>b;
if(b<a) maxx=b;
else maxx=a;
d=1;
while(d<maxx/2);
{
if(a%d==0 && b%d==0) cout<<d;
}
d=d+1;
return 0;
}

Răspunsuri la întrebare

Răspuns de DemonBolt
0
In primul rand, cand ai chestii de divizibilitate nu pui niciodata while.Pui for. De ce? For este o instructiune cu numar cunoscut de pasi, iar tu cunosti nr de pasi (de la 1 la a sau b )
Probabil ca nu merge pt ca nu iese niciodata din while.

In al doilea rand, cand declari o variabila in interiorul int main(), i se atribuie o valoare la intamplare. Ori tu nu vrei asta, ci vrei sa inceapa de la 0. Solutia: Intializeaza pe 0 sau declara-le global (in afara main)

Codul corect si testat:

#include <iostream>
using namespace std;
int main()
{
int a,b,i,d=0;
// citesti a si b
for(i=1;i<=a;i++)
-----if( a%i ==0 && b%i ==0 )
------------d++;
//afisezi d
return 0;
}

PTeodorică: Acest program afișează numărul divizorilor comuni, nu divizorii comuni în sine.
DemonBolt: Nicio problema. Nu mai exista variabila d. In loc de d afisezi i
DemonBolt: Adica unde scrie d++ afisezi i
Alte întrebări interesante