www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Moch

Gepostet:
09.12.2010 23:42

Aufgabenstellung: Signatur passt nicht  
Hallo,
Ich wende mich mit einem neuen Problem an Euch.

Ich soll etwas Programmieren, dass in einem Dateiformat die Bytes zählt
Hierbei geht es um sog. Container.

Ein Container ist definiert als:
data Container =
Dir String Erstellung [Container] | -- String steht für den Namen, Erstellung für das Datum
File String Int Erstellung Extension -- String steht für den Namen, Int für die Groeße, Extension ist eine Dateiendung

Mein Auftrag nun: Ich soll eine Funktion zaehleBytes erstellen. Sie soll die Summe der Größen aller Dateien zaehlen
Diese soll folgende Signatur haben:
zeahleBytes:: Container -> Int

dazu gibt es drei Konstanten, deren korrekte Werte Ausgegeben werden sollen. Die Signaturen lauten:
Aufgabe1:: Container
Aufgabe2:: Container
Aufgabe3:: [Container]

Die ersten zwei Aufgaben funktionieren tadellos, aber ich bekomme den dritten Fall einfach nicht hin - Signatur passt (natürlich) nicht. Wie kann ich das Problem lösen/umgehen?

Bisheriger Quelltext

--Aufgabe 11b
zeahleBytes:: Container -> Int
zaehleBytes (File _ a _ _) = a -- Umwandlung in Int-Wert
zaehleBytes (Dir _ _ []) = 0 -- abbruchbedingung der Rekursion
zaehleBytes (Dir _ _ (c:cs) = zeahleBytes (c) + zaehleBytes (Dir "dummy" (0,0,0,0,0) (cs)) -- Rekursives "zerlegen" der im Container enthaltenen Liste c:cs


liebe Grüße
Moch
Zum Seitenanfang    
 
Siracusa

Gepostet:
10.12.2010 17:31

   
Hallo,

Aufgabe 3 soll vermutlich die Größen aller Container in der Liste summieren. Das geht am einfachsten, indem du mittels map die Funktion zaehleBytes auf jedes Element der Liste anwendest (damit entsteht eine Liste vom Typ [Int]), und dann einfach alle Ints in der Liste aufsummierst. Dafür gibt es auch schon die Funktion sum.


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Moch

Gepostet:
11.12.2010 01:16

   
Vielen Dank! Hab's hinbekommen =)
Zum Seitenanfang