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.