Add initial UE4 A.2
This commit is contained in:
parent
b0c2e9ad5b
commit
c31798f66c
@ -289,29 +289,53 @@ Aufgabe A.1
|
|||||||
|
|
||||||
Aufgabe A.2
|
Aufgabe A.2
|
||||||
|
|
||||||
% > data EuroCent = EC { euro :: Nat1,
|
Nur Werte zwischen 0 und 99 fuer cent!
|
||||||
% > cent :: Nat1
|
|
||||||
|
|
||||||
% Nur Werte zwischen 0 und 99 fuer cent!
|
> data EuroCent = EC { euro :: Nat1,
|
||||||
|
> cent :: Nat1
|
||||||
|
> } deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
% > } deriving (Eq,Ord,Show)
|
> data K_Geschaeftsvorfall = K_Zahlung { ec_netto :: EuroCent,
|
||||||
|
> zahlungsdatum' :: Datum
|
||||||
|
> }
|
||||||
|
> | K_Gutschrift { ec_gutschrift :: EuroCent,
|
||||||
|
> gutschriftsdatum' :: Datum
|
||||||
|
> } deriving (Eq,Show)
|
||||||
|
|
||||||
% > data K_Geschaeftsvorfall = K_Zahlung { ec_netto :: EuroCent,
|
> newtype KonsolidiertesKassabuch
|
||||||
% > zahlungsdatum' :: Datum
|
> = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)]
|
||||||
% > }
|
> deriving (Eq,Show)
|
||||||
% > | K_Gutschrift { ec_gutschrift :: EuroCent,
|
|
||||||
% > gutschriftsdatum' :: Datum
|
|
||||||
% > } deriving (Eq,Show)
|
|
||||||
|
|
||||||
% > newtype KonsolidiertesKassabuch
|
> konsolidiere :: Kassabuch -> KonsolidiertesKassabuch
|
||||||
% > = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)]
|
> konsolidiere k = consolidate_cash_book k []
|
||||||
% > deriving (Eq,Show)
|
|
||||||
|
|
||||||
% > konsolidiere :: Kassabuch -> KonsolidiertesKassabuch
|
|
||||||
|
|
||||||
Knapp, aber gut nachvollziehbar geht konsolidiere folgendermassen vor:
|
> consolidate_cash_book :: Kassabuch -> [(P_Geschaeftspartner,K_Geschaeftsvorfall)] -> KonsolidiertesKassabuch
|
||||||
...
|
> consolidate_cash_book (KB (x:xs)) res
|
||||||
|
> | length x /= 0 && null xs = KKB(res ++ [entry])
|
||||||
|
> | otherwise = consolidate_cash_book (KB(xs)) (res ++ [entry])
|
||||||
|
> where
|
||||||
|
> (g, v) = x
|
||||||
|
> entry = consolidate_payment $ eval_payment_sum $ eval_payment_date (g, v)
|
||||||
|
|
||||||
|
> consolidate_payment :: AP_Kassabucheintrag -> (P_Geschaeftspartner,K_Geschaeftsvorfall)
|
||||||
|
> consolidate_payment (g, v) = (g, consolidate_payment_sum v)
|
||||||
|
|
||||||
|
> consolidate_payment_sum :: AP_Geschaeftsvorfall -> K_Geschaeftsvorfall
|
||||||
|
> consolidate_payment_sum g
|
||||||
|
> | is_p_credit g = K_Gutschrift (res) (gutschriftsdatum g)
|
||||||
|
> | otherwise = K_Zahlung (res') (zahlungsdatum g)
|
||||||
|
> where
|
||||||
|
> sum = gutschrift g
|
||||||
|
> sum' = netto g
|
||||||
|
> res = EuroCent (sum/100) (sum `mod` 100)
|
||||||
|
> res' = EuroCent (sum'/100) (sum' `mod` 100)
|
||||||
|
|
||||||
|
> is_p_credit :: AP_Geschaeftsvorfall -> Bool
|
||||||
|
> is_p_credit g =
|
||||||
|
> case g of
|
||||||
|
> P_Gutschrift _ _ -> True
|
||||||
|
> _ -> False
|
||||||
|
|
||||||
Aufgabe A.3
|
Aufgabe A.3
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user