Loop-Programme von Funktionen |
bradig
Grünschnabel
Dabei seit: 20.05.2013
Beiträge: 7
|
|
|
20.05.2013 02:39 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
20.05.2013 13:49 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
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?
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
20.05.2013 14:18 |
|
|
bradig
Grünschnabel
Dabei seit: 20.05.2013
Beiträge: 7
|
|
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
|
|
20.05.2013 14:52 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Aha. Und nun?
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
20.05.2013 15:01 |
|
|
bradig
Grünschnabel
Dabei seit: 20.05.2013
Beiträge: 7
|
|
jetzt soll ich das gleiche mit der Funtion div tun.
ich überlege mir gerade,wie ich das am bestens machen kann
|
|
20.05.2013 17:08 |
|
|
bradig
Grünschnabel
Dabei seit: 20.05.2013
Beiträge: 7
|
|
wenn dein code so richtig ist,konnte ich in einem Loop-Programm umwandeln und hier die Lösung posten .
|
|
20.05.2013 17:18 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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?
|
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
|
|
20.05.2013 17:47 |
|
|
bradig
Grünschnabel
Dabei seit: 20.05.2013
Beiträge: 7
|
|
gerade nicht einfach,da der Code für mich nicht ganz verständlich ist.
|
|
20.05.2013 18:52 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Wo hängt es denn?
VG,
Karlito
|
|
20.05.2013 19:50 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
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.
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
20.05.2013 21:08 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
|
20.05.2013 23:22 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Um Gottes Willen nein
Mathematik
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
21.05.2013 06:45 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Na Gott sei Dank, ich habe schon schlimmes befürchtet
.
Genug OFF-Topic. Ich hoffe wir haben unseren Kandidaten nicht verscheucht
VG,
Karlito
|
|
21.05.2013 08:52 |
|
|
|