Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Von Delphi nach C++, kann das mal einer prüfen bitte

PaoloP / 12 Antworten / Flachansicht Nickles

Ich habe einen kurzen demo-quelltext im internet gefunden. jedoch ist er in delphi und darin bin ich absoluter analphabet. ich habe den text sozugen manuell nach c++ portiert, bin mir aber nicht sicher ober stimmt. kann mir jemand sagen ob das so stimmt bzw. wenn nicht was falsch ist?

Delphi:
Function ggTerw(a,b: integer; var u,v: integer):integer;
var u0, v0:integer;
begin
if b = 0 then Begin
result := a;
u := 1;
v := 0;
End else Begin
result := ggTerw(b, a mod b, u0, v0);//rekursiv
u := v0;
v := u0 - (a div b)*v0;
End;
end;

C++:
int ggTerw( int a, int b, int u, int v)
{
int u0= 0; int v0=0;

if(b==0)
{
u = 1; v = 0;
return a;
}
else
{
u = v0;
div_t v = div(a,b); v = u0 - v.quot*v0;
return ggTerw(b, a % b, u0, v0); //rekursiv
}
}

Ich bedanke mich schon mal im vorraus ausserordentlich bei jedem helfenden, werde es aber sicher hinterher nochmal tun.
Vielen Dank
Mike

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
PaoloP mr.escape „Von Delphi nach C++, kann das mal einer prüfen bitte“
Optionen

Hallo, vielen Dank für Deine Mühe. Ich finde das echt super :-)

Ja die beiden ersten Parameter als Referenz zu übergeben scheint nicht notendig , da hast du recht. Ich werde das vergleichend debuggen wenn mein Download der Trial-Version von Delphi endlich fertig ist(174 MB mit analog-verbindung )
---
warum
int u0= 0; int v0=0;
und nicht
int u0, v0

Naja irgendwer hat mir mal eingeprügelt Variablen immer mit einem Startwert zu initialisieren in C++. Siehst Du hier etwa einen Fehler den ich nicht sehe?
----------
warum
div_t dv = div(a, b);
v = u0 - dv.quot * v0;
und nicht
v = u0 - (a / b) * v0;

Also ich bin davon ausgegangen das div in Delphi das Gegenstück zu Modulo ist also den "Rest" einer Modulo-Rechnung ausgibt. Stimmt das etwa nicht und es ist doch nur Division pur?

Vielen Dank und Grüsse (wohin auch immer..)
Mike

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen