Add basic checks for UE3 A.4, fix UE3 A.3
This commit is contained in:
parent
6d705ad01e
commit
32f7a83d2d
@ -29,7 +29,7 @@ Solution:
|
|||||||
|
|
||||||
> matrixToString :: Matrix -> String -> String
|
> matrixToString :: Matrix -> String -> String
|
||||||
> matrixToString matrix res
|
> matrixToString matrix res
|
||||||
> | matrix == fehlerwert = "()"
|
> | isEmpty matrix = "()"
|
||||||
> | length m /= 0 && null ms = res ++ show m ++ ")"
|
> | length m /= 0 && null ms = res ++ show m ++ ")"
|
||||||
> | otherwise = matrixToString restMatrix (res ++ show m ++ " ")
|
> | otherwise = matrixToString restMatrix (res ++ show m ++ " ")
|
||||||
> where
|
> where
|
||||||
@ -45,13 +45,14 @@ Solution:
|
|||||||
|
|
||||||
> matrixtyp :: Matrix -> Matrixtyp
|
> matrixtyp :: Matrix -> Matrixtyp
|
||||||
> matrixtyp m
|
> matrixtyp m
|
||||||
> | m == fehlerwert = KeineMatrix
|
> | isEmpty m = KeineMatrix
|
||||||
> | isCorrectMatrix m 0 == False = KeineMatrix
|
> | isCorrectMatrix m 0 == False = KeineMatrix
|
||||||
> | otherwise = getMatrixType m
|
> | otherwise = getMatrixType m
|
||||||
|
|
||||||
> isCorrectMatrix :: Matrix -> Int -> Bool
|
> isCorrectMatrix :: Matrix -> Int -> Bool
|
||||||
> isCorrectMatrix matrix n
|
> isCorrectMatrix matrix n
|
||||||
> | matrix == fehlerwert = True
|
> | isEmpty matrix = True
|
||||||
|
> | n == 0 && length m == 0 = False
|
||||||
> | n == 0 && length m /= 0 = isCorrectMatrix matrix (length m)
|
> | n == 0 && length m /= 0 = isCorrectMatrix matrix (length m)
|
||||||
> | n == length m = isCorrectMatrix (M ms) n
|
> | n == length m = isCorrectMatrix (M ms) n
|
||||||
> | otherwise = False
|
> | otherwise = False
|
||||||
@ -64,14 +65,65 @@ Solution:
|
|||||||
Aufgabe A.3
|
Aufgabe A.3
|
||||||
|
|
||||||
> instance Eq Matrix where
|
> instance Eq Matrix where
|
||||||
> (==) (M m1) (M m2) = (m1 Prelude.== m2)
|
> (==) (M m1) (M m2)
|
||||||
> (/=) (M m1) (M m2) = (m1 Prelude./= m2)
|
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Gleichheit undefiniert"
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Gleichheit undefiniert"
|
||||||
|
> | otherwise = (m1 Prelude.== m2)
|
||||||
|
> (/=) (M m1) (M m2)
|
||||||
|
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Ungleichheit undefiniert"
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Ungleichheit undefiniert"
|
||||||
|
> | otherwise = (m1 Prelude./= m2)
|
||||||
|
|
||||||
|
> isEmpty :: Matrix -> Bool
|
||||||
|
> isEmpty (M m)
|
||||||
|
> | null m = True
|
||||||
|
> | otherwise = False
|
||||||
|
|
||||||
Aufgabe A.4
|
Aufgabe A.4
|
||||||
|
|
||||||
Knapp, aber gut nachvollziebar geht die Instanzdeklaration fuer Num folgendermassen vor:
|
> instance Num Matrix where
|
||||||
...
|
> (+) m1 m2 = (add m1 m2)
|
||||||
|
> (-) m1 m2 = (diff m1 m2)
|
||||||
|
> (*) m1 m2 = (mult m1 m2)
|
||||||
|
> negate m = negation m
|
||||||
|
> abs m = absolute m
|
||||||
|
> signum m = sign m
|
||||||
|
> fromInteger z = (M [[fromIntegral z]])
|
||||||
|
|
||||||
|
> add :: Matrix -> Matrix -> Matrix
|
||||||
|
> add (M m1) (M m2)
|
||||||
|
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
|
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
instance Num Matrix where
|
> diff :: Matrix -> Matrix -> Matrix
|
||||||
...
|
> diff (M m1) (M m2)
|
||||||
|
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
|
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
|
> mult :: Matrix -> Matrix -> Matrix
|
||||||
|
> mult (M m1) (M m2)
|
||||||
|
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
|
> negation :: Matrix -> Matrix
|
||||||
|
> negation (M m1)
|
||||||
|
> | isEmpty (M m1)= fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
|
> absolute :: Matrix -> Matrix
|
||||||
|
> absolute (M m1)
|
||||||
|
> | isEmpty (M m1)= fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
|
> sign :: Matrix -> Matrix
|
||||||
|
> sign (M m1)
|
||||||
|
> | isEmpty (M m1)= fehlerwert
|
||||||
|
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||||
|
> | otherwise = M ([[0]])
|
||||||
|
Reference in New Issue
Block a user