-- Bons estudos à TODOS
-- Lista de Exercicio 01
vendas :: Int -> Int
vendas 1 = 20
vendas 2 = 32
vendas 3 = 21
vendas 4 = 60
vendas 5 = 25
vendas 6 = 12
vendas 7 = 52
vendas 8 = 28
vendas 9 = 29
vendas 10 = 40
vendas 11 = 50
vendas 12 = 33
-- Questao 01
desloca :: Int -> String -> String
desloca d palavra
| d == 0 = palavra
| d > 0 = " " ++ desloca (d - 1) palavra
-- Questao 02
impAsterisco :: Int -> String
impAsterisco qtd
| qtd == 0 = ""
| qtd > 0 = "*" ++ impAsterisco (qtd - 1)
-- Questao 03
centraliza:: String -> String
centraliza palavra = desloca (length (palavra)) palavra ++ desloca (length (palavra)) ""
-- Questao 04
tamanhoLinha :: Int
tamanhoLinha = 40
cabecalho :: String
titulo = "Relatorio de Venda de Microcomputadores"
cabecalho = impAsterisco tamanhoLinha ++ centraliza titulo ++ impAsterisco (tamanhoLinha +1) ++ "\n"
-- Questao 05
mes :: Int -> String
mes m
| m == 00 = "Este mes nao existe."
| m == 01 = "Janeiro"
| m == 02 = "Fevereiro"
| m == 03 = "Marco"
| m == 04 = "Abril"
| m == 05 = "Maio"
| m == 06 = "Junho"
| m == 07 = "Julho"
| m == 08 = "Agosto"
| m == 09 = "Setembro"
| m == 10 = "Outubro"
| m == 11 = "Novembro"
| m == 12 = "Dezembro"
-- Questao 06
impBranco :: Int -> String
impBranco qtd
| qtd == 0 = ""
| qtd > 0 = " " ++ impBranco (qtd - 1)
-- Questao 07
impMes :: Int -> String
impMes mesp = desloca 6 (mes mesp) ++ impBranco (tamanhoLinha - length(mes mesp)) ++ show (vendas mesp) ++ "\n"
-- Questao 08
impMeses :: Int -> String
impMeses 1 = impMes 1 ++ "\n"
impMeses messp = impMeses (messp - 1) ++ impMes messp ++ "\n"
-- Questao 09
somaVendas :: Int -> Int
somaVendas 1 = vendas 1
somaVendas v = somaVendas (v - 1) + vendas v
-- Questao 10
impSoma :: Int -> String
impSoma sv = impAsterisco tamanhoLinha ++ "\n" ++ desloca 6 ("Total de Vendas: ") ++ show (somaVendas sv) ++ "\n"
-- Questao 11
maiorVenda :: Int -> Int
maiorVenda 1 = vendas 1
maiorVenda maior = maiorVendaAux (vendas maior) (maiorVenda (maior - 1))
maiorVendaAux :: Int -> Int -> Int
maiorVendaAux v1 v2
| v1 >= v2 = v1
| otherwise = v2
-- Questao 12
impMaior :: Int -> String
impMaior mv = desloca 5 (" Maior Venda no Periodo: ") ++ show (maiorVenda mv)
impVendaZerada :: Int -> String
impVendaZerada vz = desloca 6 ("Vendas Zeradas: ") ++ show (vendasZeradas vz) ++ "\n"
vendasZeradas :: Int -> Int
vendasZeradas 0 = 0
vendasZeradas vmes = testa0 (vmes) + vendasZeradas (vmes - 1)
testa0 :: Int -> Int
testa0 vmz
| vendas vmz == 0 = 1
| otherwise = 0
-- Questao 13
geraGraf :: Int -> String
geraGraf 1 = "\n" ++ desloca 6 ("Grafico de Vendas: ") ++ "\n" ++ "\t" ++ impAsterisco (vendas 1) ++ "\n"
geraGraf astGraf = geraGraf (astGraf - 1) ++ "\t" ++ impAsterisco (vendas astGraf) ++ "\n"
-- Questao 14
relatorio :: Int -> IO( )
relatorio n = putStr (cabecalho ++ impMeses n ++
impSoma n ++ impVendaZerada n ++ impMaior n ++ geraGraf n)
quarta-feira, 9 de outubro de 2013
Inicio »
Haskell
,
IO ( ) em haskell
,
putStr em haskell
,
relatorio de vendas em haskell
» Lista 01 - Recursão Completa
0 comentários:
Postar um comentário