Witam mam mały problem z przekształceniem pseudo kodu w program.
Jest to Algorytm euklidesa :
Read (a,b)
while(b>0) do
begin
if (a<b) then zamien (a,b)
if (parzyste(a) and parzyste(b)) then
begin
a:=a div 2;
b:=b div 2;
end;
else
if (parzyste(a) and not parzyste(b)) then a:=a div 2; else
if (not parzyste(a) and parzyste(b)) then b:=b div 2; else
a:=a-b;
end;
Write(a);
div to dzielenie całkowite, parzyste sprawdza czy liczba jest parzysta .
Mając taki kod dla danych wejściowych 50 i 10 dostaję błędny wynik 5
int euklides_3(int a,int b)
{
if(a<b && a+b<0)
return -1;
while (b>0)
{
if(a<b)swap(a,b);
if(a%2==0 && b%2==0)
{
a=a/(2);
b=b/(2);
}
else if(a%2==0 && b%2!=0)
{
a=a/(2);
}
else if(a%2!=0 && b%2==0)
{
b=b/(2);
}
else
{
a=a-b;
}
}
return a;
}
Jakieś podpowiedzi?? Byłbym wdzięczny.