Loop-Programme von Funktionen

Neue Frage »

Auf diesen Beitrag antworten »
bradig Loop-Programme von Funktionen

c)ich soll ein Loop-Programm für folgende Funktion geben:

div: !N^2 ------> !N

o falls x=0 oder (x>0 und x teilt y nicht) 

div(x,y)={
1 falls x>0 und x teilt y 



also mit Addition und Multiplikation habe ich schon gemacht aber das kriege ich seit gestern nicht hin.

Bitte Hilfe

herzlich

Bradig
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

Schau dir mal folgenden Lösungsansatz an. Ich hoffe er stimmt.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
IF X = 0 THEN
	Erg := 0
ELSE
	Zaehler := 1; DoCalc := 1;
	LOOP y DO
		IF DoCalc = 0 THEN
			X1 := y - Zaehler*x
			IF X1 = 0
				DoCalc := 0;
			ELSE
				Zaehler := Zaehler + 1;
			END
		ELSE
		END
	END
	X2 := X*Zaehler - y
	IF X2 = 0 THEN
		Erg := 1
	ELSE
		Erg := 0
	END
END


Ich weiß, dass das Programm nicht vollständig LOOP-Konform ist. Jedoch sollte sich jeder Ausdruck in eine äquivalentes LOOP-Programm umwandeln lassen.

Der Ansatz funktioniert folgendermaßen:
- Ist x=0 ist keine Berechnung notwendig -> Erg = 0
Ansonsten:
- Wir Probieren alle Faktoren von x aus bis maximal y*x
- ist zaehler*x > y, dann werden keine weiteren Faktoren ausprobiert (Zähler wird nicht erhöht)
Jetzt kann Zähler*x nur noch größer oder gleich y sein. Dies wird geprüft, indem x*zähler - y gerechnet wird. Ergibt sich dabei eine 0, so ist x teiler von y ansonsten nicht.

Ich hoffe ich habe nichts übersehen.

VG,

Karlito
Auf diesen Beitrag antworten »
Airblader

Ich kenne LOOP nicht, aber es erscheint mir merkwürdig, dass du DoCalc auf 1 setzt und in der Schleife auf 0 überprüfst – der Teil wird damit doch niemals ausgeführt, oder? verwirrt
Auf diesen Beitrag antworten »
Airblader

Noch eine Kleinigkeit: Ich denke, die Schleife sollte mit Zaehler = 0 anfangen und insgesamt (y+1)-mal laufen.
 
Auf diesen Beitrag antworten »
bradig RE: Loop-Programme von Funktionen

Loop-Programm (berechenbarkeit theoretische informatik)


besipiel add: IN*IN--->IN
mit add(x,y)=x+y
die Funktion add ist Loop-berechenbar,weil sie sich durch ein Loop-Programm berechnet lässt.
Resultat xo=x+y

Loop-Programm für die Funktion add:

xo=x+0;
Loop yDo
xo=x+1;
End
Auf diesen Beitrag antworten »
Airblader

Aha. Und nun? verwirrt
Auf diesen Beitrag antworten »
bradig Loop-programm

jetzt soll ich das gleiche mit der Funtion div tun.
ich überlege mir gerade,wie ich das am bestens machen kann
Auf diesen Beitrag antworten »
bradig richtig

wenn dein code so richtig ist,konnte ich in einem Loop-Programm umwandeln und hier die Lösung posten .
Auf diesen Beitrag antworten »
Karlito

Zitat:
Original von Airblader
Ich kenne LOOP nicht, aber es erscheint mir merkwürdig, dass du DoCalc auf 1 setzt und in der Schleife auf 0 überprüfst – der Teil wird damit doch niemals ausgeführt, oder? verwirrt


Danke Airblader! Alles was im THEN-Zweig steht muss in den ELSE-Zweig.

Ich hoffe das wars mit Fehlern.

@Airblader: LOOP-Programme kommen aus der theoretischen Informatik.
Dabei gibt es nur die Operationen LOOP, was wie eine for-Schleife funktioniert und Zuweisungen und die Addition und Substraktion mit einer Konstanten. Die Substraktion ist dabei eine modifizierte Substraktion bei der alle Werte, die Kleiner als 0 sind auf 0 abgebildet werden.

@bradig Schau noch mal genau drauf, ich hoffe dass es so richtig ist. Und wenn du zu dem Ergebnis kommst, wäre eine gepostete Lösung schön. Ich möchte aber, dass du den Code nachvollziehst und verstehst.

VG,

Karlito
Auf diesen Beitrag antworten »
bradig Loop-Programm

gerade nicht einfach,da der Code für mich nicht ganz verständlich ist.
Auf diesen Beitrag antworten »
Karlito

Wo hängt es denn?

VG,

Karlito
Auf diesen Beitrag antworten »
Airblader

Zitat:
Original von Karlito
Die Substraktion ist dabei eine modifizierte Substraktion bei der alle Werte, die Kleiner als 0 sind auf 0 abgebildet werden.


Stimmt… da war im Studium mal was. Naja, Informatik war nur mein Nebenfach. großes Grinsen
Auf diesen Beitrag antworten »
Karlito

BWL?
Auf diesen Beitrag antworten »
Airblader

Um Gottes Willen nein großes Grinsen Mathematik Augenzwinkern
Auf diesen Beitrag antworten »
Karlito

Na Gott sei Dank, ich habe schon schlimmes befürchtet großes Grinsen .

Genug OFF-Topic. Ich hoffe wir haben unseren Kandidaten nicht verscheucht smile

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »