www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

Moch

Gepostet:
30.11.2010 21:57

String in Integer konvertieren / Formate vergleichen  
Hallo,
Ich habe mir so langsam die Augen wund gesucht, aber nichts wirklich brauchbares gefunden.
In einem Programm sollen wir einen String in einen Integer umwandeln.
Der String soll ein Datum in der Form (DD.MM.YYYY) enthalten und in eine Timedata umgewandelt werden

TimeData ist definiert als
type Timedata = (Tag, Monat, Jahr)
type Tag = Int
type Monat = Int
type Jahr = Int

Hiervon kann ich auch nicht so einfach weg, da alle anderen Teile, die ich programmiert habe, alle auf genau diesem Ding basieren.
Nun soll der Nutzer ein solches Datum eingeben können
Signatur wäre also

name:: String -> Int

als einzigen Hinweis im Skript haben wir, dass wir readInt verwenden sollen und "zum Zerlegen des Strings eine
ein (l¨angliches) Muster, in dem f¨ur jede
Stelle entweder ein Parameter oder das dort erwartete Zeichen steht.

Ein weiteres Problem habe ich damit, den eingegebenen String mit einem vorgegebenen Format zu vergleichen. Dabei finde ich gar keinen Ansatz. Kann mir hier jemand einen Denkanstoß geben?

Vielen dank im Vorraus
Moch
Zum Seitenanfang    
 
Siracusa

Gepostet:
02.12.2010 18:00

   
Hallo,

günstiger wäre es hier readDec zu verwenden, da es ja überhaupt nur um Dezimalzahlen geht. Die Funktion hat (vereinfacht) den Typ String -> [(Int, String)], wobei der erste String die Eingabe, der Int der geparste Wert und der letzte String der Rest der Eingabe ist. Wurde erfolgreich ein Wert geparst, sollte genau ein Paar in der Ergebnisliste stehen, andernfalls ist sie leer. Du könntest nun also abwechselnd diese Funktion aufrufen, bei erfolgreichem Parsen einer Zahl auf dem Reststring weiterarbeiten und versuchen einen Punkt zu lesen, dann wieder eine Zahl, etc. Wurden so drei Zahlen gelesen und ist der Reststring dann leer, kannst die drei Zahlen in ein TimeData-Wert umwandeln und als Ergebnis zurückgeben.


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
Moch

Gepostet:
09.12.2010 23:31

   
Danke!
Habs trotzdem doch anderes lösen können.
Habe mit "isDigit" gearbeitet und die Punkte über ord ausgelesen.
Trotzdem danke :-)
Zum Seitenanfang