--Musterlösung Bogen 6 Aufgabe 1


--Aufgabe 1a)
{-median berechnet den Median der gegebenen 3 Zahlen durch Fallunterscheidung-}
median::Int->Int->Int->Int
median x y z 	| (y<=x)&&(x<=z) || (y>=x)&&(x>=z)	= x 	-- Hier sind die Fälle y<=x<=z und z<=x<=y
				| (x<=y)&&(y<=z) || (y>=x)&&(x>=z)	= y 	-- Hier sind die Fälle x<=y<=z und z<=y<=y
				| otherwise 						= z 	-- Und zu guter letzt die letzen beiden Fälle
				
--Aufgabe 1b)				
{-plusminus berechnet die Funktion f(k,m,n)=m+((-1)^k)*m, hier muss nur unterschieden werden, ob k gerade, oder ungerade ist.-}
plusminus::Int->Int->Int->Int
plusminus k m n |even k 							= m+n	-- Wenn k gerade, dann ist (-1)^k=1
				|otherwise							= m-n	-- sonst ist (-1)^k=-1
				
--Aufgabe 1c)				
{-distinctOf3 bestimmt die Anzahl der verschiedenen Zahlen, von den drei gegeben-}
distinctOf3::Int->Int->Int->Int
distinctOf3 a b c	 | a==b&&b==c					= 1		-- Entweder sind alle gleich, also gibt es genau eine Zahl,
					 | a/=b && b/=c && c/=a 		= 3     -- oder sie sind alle unterschiedlich - also drei verschiedene-,
					 | otherwise 					= 2		-- oder es müssen genau zwei gleich sein.
					 
--Aufgabe 1d)					 
{-distinctOf4 macht das Selbe wie distinctOf3, nur werden jetzt 4 Zahlen eingeben-}					 
distinctOf4::Int->Int->Int->Int->Int					 			
distinctOf4 a b c d | a==b&&b==c&&d==c 								= 1	-- alle gleich?
					| a/=b && b/=c && c/=a && d/=a && d/=b && d/=c	= 4	-- alle unterschiedlich?
					| (a==b && distinctOf3 b c d==3) 				= 3	-- nur a und b gleich
					| (a==c && distinctOf3 b c d==3) 				= 3	-- nur a und c gleich
					| (a==d && distinctOf3 b c d==3) 				= 3	-- nur a und d gleich
					| (b==c && distinctOf3 a c d==3) 				= 3	-- nur b und c gleich
					| (b==d && distinctOf3 a c d==3) 				= 3	-- nur b und d gleich
					| (c==d && distinctOf3 a b d==3) 				= 3	-- nur c und d gleich
					| otherwise 									= 2 -- Ja und sonst müssen es genau zwei verschidene sein.
