Add UE4
This commit is contained in:
parent
226d053dca
commit
dfd064ba39
112
code/Angabe4.lhs
Normal file
112
code/Angabe4.lhs
Normal file
@ -0,0 +1,112 @@
|
||||
> module Angabe4 where
|
||||
|
||||
1. Vervollstaendigen Sie gemaess Angabentext!
|
||||
2. Vervollständigen Sie auch die vorgegebenen Kommentaranfänge!
|
||||
3. Loeschen Sie keine Deklarationen aus diesem Rahmenprogramm, auch nicht die Modulanweisug!
|
||||
4. Achten Sie darauf, dass `Gruppe' Leserechte fuer Ihre Abgabedatei hat!
|
||||
|
||||
|
||||
Datenstrukturen fuer eine einfache Buchhaltung:
|
||||
|
||||
> type Nat1 = Int
|
||||
> type Name = String
|
||||
> newtype Cent = C { cents :: Nat1
|
||||
> } deriving (Eq,Ord,Show)
|
||||
> type Brutto = Cent
|
||||
> type Netto = Cent
|
||||
> data Skonto = KeinSkonto | DreiProzent
|
||||
> | FuenfProzent | ZehnProzent deriving (Eq,Ord,Show)
|
||||
> data Tag = I | II | III | IV | V | VI | VII | VIII | IX | X
|
||||
> | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII
|
||||
> | XIX | XX | XXI | XXII | XXIII | XXIV | XXV
|
||||
> | XXVI | XXVII | XXVIII | XXIX | XXX
|
||||
> | XXXI deriving (Eq,Ord,Show)
|
||||
> data Monat = Jan | Feb | Mar | Apr | Mai | Jun | Jul | Aug
|
||||
> | Sep | Okt | Nov | Dez deriving (Eq,Ord,Show)
|
||||
> type Jahr = Nat1
|
||||
> data Datum = D { tag :: Tag,
|
||||
> monat :: Monat,
|
||||
> jahr :: Jahr
|
||||
> } deriving (Eq,Show)
|
||||
|
||||
> newtype Geschaeftspartner = GP { partner :: Name,
|
||||
> seit :: Datum
|
||||
> } deriving (Eq,Show)
|
||||
> data Geschaeftsvorfall = Zahlung { brutto :: Brutto,
|
||||
> skonto :: Skonto,
|
||||
> zahlung_vom :: Datum
|
||||
> }
|
||||
> | Gutschrift { gutschrift :: Cent,
|
||||
> gutschrift_vom :: Datum
|
||||
> }
|
||||
> deriving (Eq,Show)
|
||||
> type Kassabucheintrag = (Geschaeftspartner,Geschaeftsvorfall)
|
||||
> newtype Kassabuch = KB [Kassabucheintrag] deriving (Eq,Show)
|
||||
|
||||
|
||||
Aufgabe A.1
|
||||
|
||||
> type P_Geschaeftspartner = Geschaeftspartner
|
||||
> data AP_Geschaeftsvorfall
|
||||
> = AP_Zahlung { netto :: Netto,
|
||||
> zahlungsdatum :: Datum
|
||||
> }
|
||||
> | P_Gutschrift { gutschrift :: Cent,
|
||||
> gutschriftsdatum :: Datum
|
||||
> } deriving (Eq,Show)
|
||||
> type AP_Kassabucheintrag = (P_Geschaeftspartner,AP_Geschaeftsvorfall)
|
||||
|
||||
> waup :: Kassabucheintrag -> AP_Kassabucheintrag
|
||||
|
||||
Knapp, aber gut nachvollziehbar geht waup folgendermassen vor:
|
||||
...
|
||||
|
||||
|
||||
Aufgabe A.2
|
||||
|
||||
> data EuroCent = EC { euro :: Nat1,
|
||||
> cent :: Nat1
|
||||
|
||||
Nur Werte zwischen 0 und 99 für cent!
|
||||
|
||||
> } deriving (Eq,Ord,Show)
|
||||
|
||||
> data K_Geschaeftsvorfall = K_Zahlung { ec_netto :: EuroCent,
|
||||
> zahlungsdatum' :: Datum
|
||||
> }
|
||||
> | K_Gutschrift { ec_gutschrift :: EuroCent,
|
||||
> gutschriftsdatum' :: Datum
|
||||
> } deriving (Eq,Show)
|
||||
|
||||
> newtype KonsolidiertesKassabuch
|
||||
> = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)]
|
||||
> deriving (Eq,Show)
|
||||
|
||||
> konsolidiere :: Kassabuch -> KonsolidiertesKassabuch
|
||||
|
||||
Knapp, aber gut nachvollziehbar geht konsolidiere folgendermassen vor:
|
||||
...
|
||||
|
||||
|
||||
Aufgabe A.3
|
||||
|
||||
> data Saldo = Forderungssaldo { fs :: EuroCent }
|
||||
> | Zahlungssaldo { zs :: EuroCent }
|
||||
> | Ausgeglichen
|
||||
> | Keine_Geschaeftsbeziehung deriving (Eq,Show)
|
||||
|
||||
> saldo :: P_Geschaeftspartner -> KonsolidiertesKassabuch -> Saldo
|
||||
|
||||
Knapp, aber gut nachvollziehbar geht saldo folgendermassen vor:
|
||||
...
|
||||
|
||||
|
||||
Aufgabe A.4
|
||||
|
||||
> newtype SaldiertesKassabuch = SKB [(Geschaeftspartner,Saldo)]
|
||||
|
||||
> saldiere :: Kassabuch -> SaldiertesKassabuch
|
||||
|
||||
Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor:
|
||||
...
|
||||
|
Reference in New Issue
Block a user