[Progra] Blatt 11 Aufgabe 2a

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Beitragvon mirko » 27.01.08 17:17

nehmen wir mal einen datentyp aus der vorlesung:

"data Nats = Zero | Succ Nats deriving Show"

dieser datentyp heißt Nats und hat 2 konstruktoren. zum einen den parameterlosen konstruktor Zero, zum anderen den konstruktor Succ, der als parameter ein "objekt" vom typ Nats erwartet. wenn man nun eine funktion f::Nats->Int erzeugen möchte, könnte die beispielsweise wie folgt aussehen:

f::Nats->Int
f Zero=0
f Succ x=1 + f x

so ähnlich muss deine funktion dann auch aussehn...

edit: zur erläuterung: ein aufruf von f Zero führt nun also zu 0, ein aufruf von f Succ (Succ (Succ Zero)) wird wie folgt ausgewertet:
f Succ (Succ (Succ Zero))=1+ f Succ (Succ Zero)=1+1+f Succ Zero=1+1+1+f Zero=1+1+1+0=3
Zuletzt geändert von mirko am 27.01.08 17:21, insgesamt 1-mal geändert.
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon Purzelbaum » 27.01.08 17:20

Wenn ich das hier so lese:
Coolcat hat geschrieben:Beispielsweise die Funktion insertTask sieht ja so aus:
insertTask :: Eq a => Int -> a -> PriorityQueue a -> PriorityQueue a
Wenn du nun also z.B.
insertTask 5 "Blabla" EmptyQueue
eintippst, sollte da
Store 5 "Blabla" EmptyQueue
rauskommen.

Dann muss doch im Datentypen irgendwie
Code: Alles auswählen
Store Int a (PriorityQueue a)
stehen oder soll a vom Typ Int String sein? Geht das überhaupt?
Wenn ich dann z.B. inserTask 6 "Essen" spq1 aufrufe, sagt er mir "ERROR - Undefined variable "spq1"". Wo muss spq1 definiert werden?
Purzelbaum
 
Beiträge: 63
Registriert: 15.12.07 20:13

Beitragvon mirko » 27.01.08 17:23

Purzelbaum hat geschrieben:Wenn ich dann z.B. inserTask 6 "Essen" spq1 aufrufe, sagt er mir "ERROR - Undefined variable "spq1"". Wo muss spq1 definiert werden?


spq1 ist das ergebnis aus dem vorherigen aufruf. ersetze spq1 durch den wert, der auf dem blatt für spq1 angegeben ist, dann könnte es funktionieren...
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon Coolcat » 27.01.08 17:24

Vielleicht mal III5_Typen, Seite 6 angucken.

Edit: Omg...ich bin viel zu lahm...
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon Purzelbaum » 27.01.08 17:27

mirko hat geschrieben:edit: zur erläuterung: ein aufruf von f Zero führt nun also zu 0, ein aufruf von f Succ (Succ (Succ Zero)) wird wie folgt ausgewertet:
f Succ (Succ (Succ Zero))=1+ f Succ (Succ Zero)=1+1+f Succ Zero=1+1+1+f Zero=1+1+1+0=3

Wie wird er denn genau 1+1+1+0 zusammenfassen?
1+1+1+0=1+1+1=1+2=3 ? oder
1+1+1+0=2+1+0=3+0=3 ?

//edit:

Wenn ich die Datenstruktur änder wie oben von mir angegeben bekomme ich das richtige raus und zwar auch nur dann....
Main> insertTask 3 "kochen" (Store 5 "Waschen" (Store 1 "Essen" EmptyQueue))
Store 5 "Waschen" (Store 3 "kochen" (Store 1 "Essen" EmptyQueue))

Main> insertTask 1 "kochen" (Store 5 "Waschen" (Store 1 "Essen" EmptyQueue))
Store 5 "Waschen" (Store 1 "kochen" EmptyQueue)

So sollte es doch aussehen?
Purzelbaum
 
Beiträge: 63
Registriert: 15.12.07 20:13

Beitragvon aRo » 27.01.08 20:01

dürfen wir uns bei der g) eine separate Hilfsfunktion a la CompareLists schreiben?
aRo
 
Beiträge: 311
Registriert: 23.10.07 01:28
Anwendungsfach: Medizin

Beitragvon Purzelbaum » 27.01.08 20:05

aRo hat geschrieben:dürfen wir uns bei der g) eine separate Hilfsfunktion a la CompareLists schreiben?

Reicht es nicht auch einfach Stelle für Stelle die Priorität und die Aufgabe zu vergleichen (priorität1 == priotität2 && aufgabe1 == aufgabe2) und wenn mind. eine davon unterschiedlich ist, sind die Priority Queues unterschiedlich?
Wir gehen ja davon aus, dass die Aufgaben nach Priorität sortiert sind.
So hab ich das zumindest ohne Hilfsfunktion gelöst.
Purzelbaum
 
Beiträge: 63
Registriert: 15.12.07 20:13

Beitragvon mirko » 27.01.08 20:07

Purzelbaum hat geschrieben:[...]
So sollte es doch aussehen?


jap

aRo hat geschrieben:dürfen wir uns bei der g) eine separate Hilfsfunktion a la CompareLists schreiben?


steht irgendwo, dass ihr es nicht dürft?
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon mirko » 27.01.08 20:08

Purzelbaum hat geschrieben:
aRo hat geschrieben:dürfen wir uns bei der g) eine separate Hilfsfunktion a la CompareLists schreiben?

Reicht es nicht auch einfach Stelle für Stelle die Priorität und die Aufgabe zu vergleichen (priorität1 == priotität2 && aufgabe1 == aufgabe2) und wenn mind. eine davon unterschiedlich ist, sind die Priority Queues unterschiedlich?


jap
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon aRo » 27.01.08 20:09

@Purzelbaum:

Eigentlich müsste es so gehen, stimmt.
Allerdings steht oben nur, dass wir die korrekte Ordnung für b)-f) voraussetzen dürfen, oder?

ich mein ich hätt natürlich nichts dagegen, weil es so viel einfacher ist :)
aRo
 
Beiträge: 311
Registriert: 23.10.07 01:28
Anwendungsfach: Medizin

Beitragvon mirko » 27.01.08 20:12

aRo hat geschrieben:@Purzelbaum:

Eigentlich müsste es so gehen, stimmt.
Allerdings steht oben nur, dass wir die korrekte Ordnung für b)-f) voraussetzen dürfen, oder?


das sollte wohl b)-g) heißen. wenn ich ePQ auf die musterlösung aufrufe kommt jedenfalls das bei rum:

Code: Alles auswählen
Main> equalPriorityQueues (Store 5 "a"(Store 4 "b" EmptyQueue)) (Store 4 "b"(Store 5 "a" EmptyQueue))
False


ich denke, das beantwortet alles :P
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon Der Fuß » 28.01.08 13:04

Ich habe nun die beiden Funktionen delete und insert hinbekommen, und sie funktionieren auch. ABER: die spq, in die ich die neuen Sachen eingefügt habe, speichert das nicht. Wenn ich die dann nochmal aufrufe, oder einen weiteren Wert einfügen will, ist es wieder die ursprüngliche spq, ohne, dass das, was ich vorher eingefügt habe, drin ist.

soll das so sein oder habe ich noch nen Fehler drin?
Benutzeravatar
Der Fuß
 
Beiträge: 114
Registriert: 27.10.07 17:11

Beitragvon Coolcat » 28.01.08 14:03

soll das so sein oder habe ich noch nen Fehler drin?


Ähm....wie soll den spq irgendwas speichern? Wenn du spq so definiert hast wie auf dem Aufgabenblatt ist das nichts weiter als eine Funktion ohne Parameter, also eine Konstante.
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon Der Fuß » 28.01.08 14:14

ok und wie soll ich dann in aufgabe 2 c) rausfinden, ob mein programm die selbe Aufgabe mit verschiedenen Prioritäten anlegen kann?
Benutzeravatar
Der Fuß
 
Beiträge: 114
Registriert: 27.10.07 17:11

Beitragvon theTux » 28.01.08 14:20

Indem du deine Funktionen mit entsprechenden Parametern aufrufst.
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41

VorherigeNächste

Zurück zu Praktische Informatik