+1 Daumen
460 Aufrufe

Hi ich habe folgendes Problem:

Aus einer Schaltung habe ich einen Pseudocode für einen Algorithmus gemacht

X1 := MAX(A,B);

X2 := MIN(A,B);

while M=0 do

   D := X1 DIV X2;

M := X1 MOD X2;

   if (M != 0) then

begin

X1 := X2;

X2 := M;

end

od;

C := X2;


A und B sind Eingänge. A,B,C,D,M sind alles Binärzahlen einer beliebigen Länge n.

Die Aufgabe ist es die mathematische Funktion des Algorithmus zu bestimmen, aber ich habe überhaupt keine Idee was mit dem Algorithmus dargestellt werden könnte.

Avatar von

Ich würde gern helfen, wenn Code nicht so unlogisch wäre:

1. wozu D := X1 DIV X2;  wenn D nie gebraucht wird?  

(oder ist es wie beim ASM, wo MOD mit Hilfe der DIV berechnet wird)

2. Wo genau beginnt und endet while: entweder {...} oder begin... end   

3. Was soll denn nun die Ergebnisvariable sein? Oder 2 Ergebnisse x1 und x2, da hier END?

4. was sollen die letzten 2 Zeilen?

od;  //was für ein Code??

C := X2;  //wozu das C ??

Kann mich hyperG nur anschließen würde aber aus Spaß mal raten, dass das Programm in seiner richtigen Version den ggT bestimmen soll.

Sorry für den Code den hab ich sogar noch etwas leserlicher gemacht der war so vorgegeben:

Also in der Schaltung sind D, C und M Ausgänge was damit gemacht wird bleibt offen wir sollen eigentlich die Bedeutung dieser Ausgänge in mathematischem Sinn rausfinden.

While beginnt ab while do und endet bei od; das ist eine etwas komische schreibweise.

Die Eingabe ist A und B und das sind zwei Binärzahlen.

Ich hoffe das verdeutlicht das nen bisschen ich habe mittlerweile die Vermutung, dass er der euklidische Algorithmus ist...bin mir da aber nicht so sicher.

1 Antwort

0 Daumen
 
Beste Antwort

Ja, jetzt wird es logisch. Habe es mal per Iterationsrechner nachgerechnet:


http://www.gerdlamprecht.de/Roemisch_JAVA.htm##@Na=1071;b=1029;@B0]=max(a,b);@C0]=min(a,b);aD[0]=0;c=1;IM=1;@NaD[i]=@Bi]%25@Ci];@Bi+1]=@Ci];@Ci+1]=c=aD[i];@Nc%3C=0@N1@N1@Nd=@Bi];

(LINK beinhaltet Code und endet mit Bi];      )


ggT(1071, 1029) = 21 in Variable d 

Bild Mathematik


Dein x1 ist dort aB[ ]

Dein x2 dort aC

Dein M dort aD

Ergebnis in d

Deine While stimmte nicht:

M=1

while (M>0)

begin

 M := X1 MOD X2;  X1 := X2;  X2 := M;

end

Ergebnis = X1

Avatar von 5,7 k

Ja ich habs mir in Java auch nochmal angeschaut. Scheint alles zu passen. Zumindest bin ich mir jetzt sicher, dass ich da nicht auf dem falschen Weg bin :) danke

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
1 Antwort
0 Daumen
2 Antworten
0 Daumen
2 Antworten
0 Daumen
1 Antwort
Gefragt 18 Jan 2015 von Gast

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community