Thursday, January 28, 2010

APLC lab session lab 9 28 Jan 2010

import Prelude

--question 1
data Shape = Rectangle Float Float | Circle Float | Triangle Float Float

area :: Shape -> Float
area (Circle r) = pi * r * r
area (Rectangle w h) = w*h
area (Triangle w h) = 0.5 * w * h

--question 2
perimeter::Shape -> Float
perimeter (Circle r) = 2 * pi * r
perimeter (Rectangle w h) = (2 * w) + (2 * h)
perimeter (Triangle w h) = w + h + sqrt (w^2 + h^2)

--question 3

data Tree = Nil | Node Float Tree Tree

tree2list :: Tree -> [Float]
tree2list Nil = []
tree2list (Node val left right) = [val]++ tree2list left ++ tree2list right


maxintree :: Tree -> Float
maxintree tr = maximum (tree2list tr)

--sample data
--maxintree (Node 1 (Node 2 (Node 4 Nil Nil) (Node 5 (Node 6 Nil Nil) (Node 7 Nil Nil)))(Node 3 Nil Nil))

minintree :: Tree -> Float
minintree tr = minimum (tree2list tr)

--sample data
--minintree (Node 1 (Node 2 (Node 4 Nil Nil) (Node 5 (Node 6 Nil Nil) (Node 7 Nil Nil)))(Node 3 Nil Nil))

maximini :: Tree -> (Float,Float)
maximini tr = (maximum (tree2list tr) , minimum (tree2list tr))

--sample data
--maximini (Node 1 (Node 2 (Node 4 Nil Nil) (Node 5 (Node 6 Nil Nil) (Node 7 Nil Nil)))(Node 3 Nil Nil))

No comments: