Programmieren - alles kontrollieren 4.938 Themen, 20.667 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
mr.escape PaoloP „Von Delphi nach C++, kann das mal einer prüfen bitte“
Optionen
Hallo mr. esc(alt+f4 geht auch?)
Der nickname mr.escape stammt tatsächlich von einer escape taste, verliehen durch ein programm, wo die benutzung der escape taste verpönt war.

Wie meinst du das mit zufälligen ehemaligen Stack-Werten ?
Das sind die werte, die in nicht initialisierten, nicht statischen und nicht explizit allokierten und damit eben automatischen (stack)variablen drin stehen. Z.b. in :

void foo(){
int i;
}

ist der inhalt von i nicht definiert. Irgend etwas steht aber drin und da der speicherort auf dem stack ist, ist es ein alter stack wert (ehemalige parameter, rücksprungadresse, gesicherte registerinhalte etc.)

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen