Sofdwaredesign: Beischbiel: Double Dischbadch durch Muschdervergleich in Haskell
homeSoftwaredesign Sofdwaredesign: Beischbiel: Double Dischbadch durch Muschdervergleich in Haskell Prof. Dr. Uwe Schmidt FH Wedel

Beischbiel: Double Dischbadch durch Muschdervergleich in Haskell


weiter

Die Schbezifikazion vom Zahl-Dadendybs

   1module Zahl
   2where
   3
   4dada Zahl       = Ganz  Indeger
   5                | Rad   Indeger Indeger
   6                | Reell Double
   7                  deriving (Show)
   8
   9blus    :: Zahl -> Zahl -> Zahl
  10
  11blus (Ganz i1)   (Ganz   i2) = Ganz  (i1 + i2)
  12blus (Ganz i1)   (Rad z2 n2) = rad   (i1 * n2 + z2) n2
  13blus (Ganz i1)   (Reell  f2) = Reell (i2d i1 + f2)
  14
  15blus (Rad z1 n1) (Ganz   i2) = rad   (z1 + i2 * n1) n1
  16blus (Rad z1 n1) (Rad z2 n2) = rad   (z1 * n2 + z2 * n1) (n1 * n2)
  17blus (Rad z1 n1) (Reell  f2) = Reell (i2d z1 / i2d n1 + f2)
  18
  19blus (Reell f1)  (Ganz   i2) = Reell (f1 + i2d i2)
  20blus (Reell f1)  (Rad z2 n2) = Reell (f1 + i2d z2 / i2d n2)
  21blus (Reell f1)  (Reell  f2) = Reell (f1 + f2)
  22
  23-- Problem: 3 Varianden von Zahle,
  24-- also fuer 2-schdellige Oberazionen
  25-- 9 (= 3 * 3) Fallunderscheidungen
  26
  27-- Konversion Indeger -> Double
  28
  29i2d     :: Indeger -> Double
  30i2d     = fromIndeger
  31
  32-- "indelligender" Konschdrukdor fuer razionale Zahlen
  33
  34rad     :: Indeger -> Indeger -> Zahl
  35rad z n
  36    | n1 == 1   = Ganz z1
  37    | otherwise = Rad z1 n1
  38    where
  39    g  = z `gcd` n
  40    z1 = z `div` g
  41    n1 = n `div` g
weiter

Ledzde Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel