Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Berechenbarkeits- und Komplexitätstheorie » Loop-Programme von Funktionen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Loop-Programme von Funktionen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
bradig
Grünschnabel


Dabei seit: 20.05.2013
Beiträge: 7

Loop-Programme von Funktionen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
20.05.2013 02:39 bradig ist offline Beiträge von bradig suchen Nehmen Sie bradig in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________
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 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Noch eine Kleinigkeit: Ich denke, die Schleife sollte mit Zaehler = 0 anfangen und insgesamt (y+1)-mal laufen.

__________________
The best thing about a boolean is that even if you're wrong, you're only off by a bit.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Airblader: 20.05.2013 14:38.

20.05.2013 14:29 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
bradig
Grünschnabel


Dabei seit: 20.05.2013
Beiträge: 7

RE: Loop-Programme von Funktionen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 bradig ist offline Beiträge von bradig suchen Nehmen Sie bradig in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Aha. Und nun? verwirrt

__________________
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 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
bradig
Grünschnabel


Dabei seit: 20.05.2013
Beiträge: 7

Loop-programm Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 ist offline Beiträge von bradig suchen Nehmen Sie bradig in Ihre Freundesliste auf
bradig
Grünschnabel


Dabei seit: 20.05.2013
Beiträge: 7

richtig Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

wenn dein code so richtig ist,konnte ich in einem Loop-Programm umwandeln und hier die Lösung posten .
20.05.2013 17:18 bradig ist offline Beiträge von bradig suchen Nehmen Sie bradig in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
20.05.2013 17:47 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
bradig
Grünschnabel


Dabei seit: 20.05.2013
Beiträge: 7

Loop-Programm Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

gerade nicht einfach,da der Code für mich nicht ganz verständlich ist.
20.05.2013 18:52 bradig ist offline Beiträge von bradig suchen Nehmen Sie bradig in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wo hängt es denn?

VG,

Karlito
20.05.2013 19:50 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________
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 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

BWL?
20.05.2013 23:22 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Airblader Airblader ist männlich
Doppel-As


Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Um Gottes Willen nein großes Grinsen Mathematik Augenzwinkern

__________________
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 Airblader ist offline Beiträge von Airblader suchen Nehmen Sie Airblader in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
21.05.2013 08:52 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Berechenbarkeits- und Komplexitätstheorie » Loop-Programme von Funktionen