0votos

Matriz Cuadrática en Haskell

por josejuan hace 5 años

Eso

Realizar una matriz cuadrática de n elementos, en el que se pida al usuario el tamaño de la matriz (n*n). De acuerdo a este número se va a realizar la matriz con las diferentes operaciones pedidas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
readNum :: String -> Int 
readNum = read 
 
main = do 
  putStr "Tamaño de la matriz: " 
  n <- getLine >>= return . readNum 
  putStrLn $ "Escribe los " ++ show (n^2) ++ " elementos de la matriz:" 
  m <- getLine >>= return . map readNum . words 
  putStrLn $ "Mayor diagonal: " ++ (unwords $ map show $ mayorDiagonal m n) 
  putStrLn $ "Suma de pares: " ++ (show $ sum $ filter ((==0).flip mod 2) m) 
  putStrLn $ "Suma de impares: " ++ (show $ sum $ filter ((==1).flip mod 2) m) 
  putStrLn $ "Suma de ni 3 ni 5: " ++ (show $ sum $ filter (not.flip elem [3,5]) m) 
 
mayorDiagonal :: [Int] -> Int -> [Int] 
mayorDiagonal m n = if sum p > sum s then p else s 
  where p = [m!!(     x  * (n + 1)) | x <- [0..n - 1]] 
        s = [m!!((1 + x) * (n - 1)) | x <- [0..n - 1]] 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.