Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Programação Funcional (Atividade Final)
- //
- //NOME: Gabriel Eduardo da Silva
- //Matricula: 11121BSI215
- //
- //Exercícios de Programação (1a Parte)
- //
- //1. Faça uma função que peça as 4 notas bimestrais e retorne a média.
- open System
- let principal =
- System.Console.WriteLine("Digite uma nota: ")
- let nota1 = float(System.Console.ReadLine())
- System.Console.WriteLine("Digite uma nota: ")
- let nota2 = float(System.Console.ReadLine())
- System.Console.WriteLine("Digite uma nota: ")
- let nota3 = float(System.Console.ReadLine())
- System.Console.WriteLine("Digite uma nota: ")
- let nota4 = float(System.Console.ReadLine())
- let media = ((nota1+nota2+nota3+nota4)/4.0)
- printf ("A media das notas eh: %A") media
- 0
- System.Console.WrieLine()
- //2. Faça um Programa que pergunte quanto você ganha por hora e o número de horas trabalhadas no mês.
- //Calcule e mostre o total do seu salário no referido mês.
- //3. Faça um Programa que pergunte quanto você ganha por hora e o número de horas trabalhadas no mês.
- //Calcule e mostre o total do seu salário no referido mês, sabendo-se que são descontados 11% para o
- //Imposto de Renda, 8% para o INSS e 5% para o sindicato, faça um programa que nos dê:
- //a. salário bruto.
- //i. quanto pagou ao INSS.
- //ii. quanto pagou ao sindicato.
- //iii. o salário líquido.
- //iv. calcule os descontos e o salário líquido, conforme a tabela abaixo:
- //v. + Salário Bruto : R$
- //vi. - IR (11%) : R$
- //vii. - INSS (8%) : R$
- //viii. - Sindicato ( 5%) : R$
- //ix. = Salário Liquido : R$ (Obs.: Salário Bruto - Descontos = Salário Líquido.)
- open System
- let principal =
- System.Console.WriteLine("Qual o seu salario por hora? ")
- let salarioHora = float(System.Console.ReadLine())
- System.Console.WriteLine("Quantas horas trabalhadas? ")
- let horasTrab = float(System.Console.ReadLine())
- let salarioBruto = float(salarioHora * horasTrab)
- let IR = float((11.*salarioBruto)/100.)
- let INSS = float((8.*salarioBruto)/100.)
- let Sindicato = float((5.*salarioBruto)/100.)
- printf("Seu salario bruto eh: R$ %A\n") salarioBruto
- printf("Voce pagou ao sindicato: R$ %A\n") Sindicato
- let salarioLiquido = salarioBruto - (IR+INSS+Sindicato)
- printf("Seu salario liquido eh: R$ %A\n") salarioLiquido
- 0
- System.Console.ReadKey()
- //4. Faça um programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada.
- //Considere que a cobertura da tinta é de 1 litro para cada 3 metros quadrados e que a tinta é vendida em latas de 18 litros,
- //que custam R$ 80,00. Informe ao usuário a quantidades de latas de tinta a serem compradas e o preço total.
- open System
- let principal =
- System.Console.WriteLine("Qual o tamanho em metros quadrados da area: ")
- let area = float(System.Console.ReadLine())
- let cobertura = 3.0
- let latasL = 18.0
- let latasP = 80.00
- let latasT = Math.Ceiling((area/(latasL*cobertura)))
- printf("Sao necessarias %A latas. \n") latasT
- let total = latasT*latasP
- printf("O valor total eh: R$ %A \n") (latasT*latasP)
- System.Console.ReadKey()
- //5. Faça um Programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada.
- //Considere que a cobertura da tinta é de 1 litro para cada 6 metros quadrados e que a tinta é vendida em latas de 18 litros,
- //que custam R$ 80,00 ou em galões de 3,6 litros, que custam R$ 25,00. Informe ao usuário as quantidades de tinta a serem compradas
- //e os respectivos preços em 3 situações:
- //i. comprar apenas latas de 18 litros;
- //ii. comprar apenas galões de 3,6 litros;
- //iii. misturar latas e galões, de forma que o preço seja o menor.
- open System
- let principal =
- printf "Entre com a área em m2: "
- let area = float(System.Console.ReadLine())
- let maxlatas = Math.Ceiling(area/(18.*6.))
- let maxgaloes = Math.Ceiling(area/(3.6*6.))
- printf "1) número de latas = %.1f\n" maxlatas
- printf " custo = R$ %.2f\n" (maxlatas*80.)
- printf "2) número de galoes = %.1f\n" maxgaloes
- printf " custo = R$ %.2f\n" (maxgaloes*25.)
- let mutable custoMinimo = 10000000.0
- let mutable custo = 0.0
- let mutable cobertura = 0.0
- let mutable latas = 0
- let mutable galoes = 0
- for i = 0 to int(maxlatas) do
- for j = 0 to int(maxgaloes) do
- custo <- 80.*(float i) + 25.*(float j)
- cobertura <- 108.*(float i)+21.6*(float j)
- if (custo < custoMinimo) && (cobertura >= area)
- then
- custoMinimo <- custo
- latas <- i
- galoes <- j
- printf "3) número de latas = %d\n" latas
- printf " número de galoes = %d\n" galoes
- printf " custo = R$ %.2f\n" custoMinimo
- System.Console.ReadKey()
- //Exercícios de Programação (2a Parte)
- //1. Faça um Programa que peça um valor e mostre na tela se o valor é positivo ou negativo.
- open System
- let principal =
- System.Console.WriteLine("Digite um valor: ")
- let valor = int (System.Console.ReadLine())
- if valor < 0 then printf("O valor eh negativo.\n")
- elif valor = 0 then printf("O valor 0 eh Neutro.\n")
- else printf("O valor eh positivo.\n")
- System.Console.ReadKey()
- //2. Faça um programa para a leitura de duas notas parciais de um aluno.
- //O programa deve calcular a média alcançada por aluno e apresentar:
- //o A mensagem "Aprovado", se a média alcançada for maior ou igual a sete;
- //o A mensagem "Reprovado", se a média for menor do que sete;
- //o A mensagem "Aprovado com Distinção", se a média for igual a dez.
- open System
- let principal =
- System.Console.WriteLine("Digite a primeira nota: ")
- let nota1= float(System.Console.ReadLine())
- System.Console.WriteLine("Digite a segunda nota: ")
- let nota2= float(System.Console.ReadLine())
- let media = (nota1+nota2)/2.0
- if media < 10.0 && media >= 7.0 then printf("Aprovado!!\n")
- elif media < 7.0 then printf("Reprovado!!\n")
- elif media = 10.0 then printf("Aprovado com Distinção!!\n")
- else printf("Digite notas entre 0.0 e 10.0\n")
- System.Console.ReadKey()
- //3. Faça um Programa que leia três números e mostre o maior deles.
- open System
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n1 = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let n2 = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let n3 = int(System.Console.ReadLine())
- let mutable maior = n1
- if n2 > maior then maior <- n2
- if n3 > maior then maior <- n3
- printf("O maior numero digitado foi: %A\n") maior
- 0
- System.Console.ReadKey()
- //4. Faça um Programa que leia três números e mostre o maior e o menor deles.
- open System
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n1 = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let n2 = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let n3 = int(System.Console.ReadLine())
- let mutable maior = n1
- let mutable menor = n1
- if n2 > maior then maior <- n2
- if n3 > maior then maior <- n3
- if n2 < menor then menor <- n2
- if n3 < menor then menor <- n3
- printf("O menor numero digitado foi: %A\n") menor
- printf("O maior numero digitado foi: %A\n") maior
- 0
- System.Console.ReadKey()
- //5. Faça um Programa que leia três números e mostre-os em ordem decrescente.
- open System
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let a = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let b = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let c = int(System.Console.ReadLine())
- if (a > b && a > c && b > c) then printf("Os valores em ordem decrescente são: %A %A %A\n") a b c
- elif (a > c && a > b && c > b) then printf("Os valores em ordem decrescente são: %A %A %A\n") a c b
- elif (c > b && c > a && b > a) then printf("Os valores em ordem decrescente são: %A %A %A\n") c b a
- elif (c > b && c > a && a > b) then printf("Os valores em ordem decrescente são: %A %A %A\n") c a b
- elif (b > a && b > c && a > c) then printf("Os valores em ordem decrescente são: %A %A %A\n") b a c
- elif (b > c && b > a && c > a) then printf("Os valores em ordem decrescente são: %A %A %A\n") b c a
- 0
- System.Console.ReadKey()
- //6. As Organizações Tabajara resolveram dar um aumento de salário aos seus colaboradores e
- //lhe contraram para desenvolver o programa que calculará os reajustes. Faça um programa que
- //recebe o salário de um colaborador e o reajuste segundo o seguinte critério, baseado no salário atual:
- //o salários até R$ 280,00 (incluindo) : aumento de 20%
- //o salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
- //o salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
- //o salários de R$ 1500,00 em diante : aumento de 5%
- //Após o aumento ser realizado, informe na tela:
- //o o salário antes do reajuste;
- //o o percentual de aumento aplicado;
- //o o valor do aumento;
- //o o novo salário, após o aumento.
- let principal =
- System.Console.WriteLine("Digite o seu salário: ")
- let mutable salario = float(System.Console.ReadLine())
- let mutable salarioPos = salario
- let mutable reajuste = 0
- if salario <= 280.0 then salarioPos <- (salario + ((salario*20.0)/100.0))
- elif salario > 280.0 && salario <= 700.0 then salarioPos <- (salario + ((salario*15.0)/100.0))
- elif salario > 700.0 && salario <= 1500.0 then salarioPos <- (salario + ((salario*10.0)/100.0))
- elif salario > 1500.0 then salarioPos <- (salario + ((salario*5.0)/100.0))
- printf("Seu salario anterior era: R$ %A\n") salario
- let mutable reajuste = 0.0
- if salario <= 280.0 then reajuste <- 20.0
- elif salario > 280.0 && salario <= 700.0 then reajuste <- 15.0
- elif salario > 700.0 && salario <= 1500.0 then reajuste <- 10.0
- elif salario > 1500.0 then reajuste <- 5.0
- printf("O percentual de reajuste foi de %A porcento\n") reajuste
- let mutable aumento = 0.0
- if salario <= 280.0 then aumento <- (salarioPos - salario)
- elif salario > 280.0 && salario <= 700.0 then aumento <- (salarioPos - salario)
- elif salario > 700.0 && salario <= 1500.0 then aumento <- (salarioPos - salario)
- elif salario > 1500.0 then aumento <- (salarioPos - salario)
- printf("Seu aumento foi de: R$ %A\n") aumento
- printf("Seu novo salário é: %A\n") salarioPos
- 0
- System.Console.ReadKey()
- //7. Faça um Programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto.
- open System
- let principal =
- System.Console.WriteLine("Digite um ano: ")
- let ano = int(System.Console.ReadLine())
- if ano%4 = 0 && ano%100 <> 0 then
- printf("O ano %A é BISSEXTO!!") ano
- if ano%400 then
- printf("O ano %A é BISSEXTO!!") ano
- else printf("O ano %A NÃO é BISSEXTO!!") ano
- 0
- System.Console.ReadKey()
- //Faça um Programa que peça uma data no formato dd/mm/aaaa e determine se a mesma é uma data válida.
- let principal =
- System.Console.WriteLine("Digite uma dia no formato dd: ")
- let dia = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um mês no formato mm: ")
- let mes = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um ano no formato aaaa: ")
- let ano = int(System.Console.ReadLine())
- if (dia > 0 && dia <= 31 && mes > 0 && mes < 13) then printf("Data Válida \n Nota: A data pode ser inválida dependendo do mês, para conferir cheque o seu calendário. \n")
- else printf("Data Inválida\n")
- 0
- let fim = System.Console.ReadKey()
- //9. Faça um Programa que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.
- //o Observando os termos no plural a colocação do "e", da vírgula entre outros. Exemplo:
- //o 326 = 3 centenas, 2 dezenas e 6 unidades
- //o 12 = 1 dezena e 2 unidades Testar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16
- open System
- let rec aplica f lista1 lista2 =
- match lista1, lista2 with
- | [], [] -> []
- | x::xs, y::ys -> (f x y)::(aplica f xs ys)
- let ftexto nro texto =
- match nro with
- | 0 -> ""
- | 1 -> string(nro) + texto
- | _ -> string(nro) + texto + "s"
- let pp =
- System.Console.WriteLine("Digite um numero inteiro: ")
- let valor = int (System.Console.ReadLine())
- let [c;d;u] = aplica ftexto [valor/100; (valor/10)%10; valor%10] [" centena";" dezena";" unidade"]
- printf "O numero digitado tem: %s %s %s" c d u
- 0
- pp
- System.Console.ReadKey()
- // Learn more about F# at http://fsharp.net
- //Faça um Programa para um caixa eletrônico. O programa deverá perguntar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. As notas disponíveis serão as de 1, 5, 10, 50 e 100 reais. O valor mínimo é de 10 reais e o máximo de 600 reais. O programa não deve se preocupar com a quantidade de notas existentes na máquina.
- //o Exemplo 1: Para sacar a quantia de 256 reais, o programa fornece duas notas de 100, uma nota de 50, uma nota de 5 e uma nota de 1;
- //o Exemplo 2: Para sacar a quantia de 399 reais, o programa fornece três notas de 100, uma nota de 50, quatro notas de 10, uma nota de 5 e quatro notas de 1.
- open System
- let principal =
- System.Console.WriteLine("Digite o valor desejado: ")
- let mutable valor = int(System.Console.ReadLine())
- let mutable nota1 = 0
- let mutable nota5 = 0
- let mutable nota10 = 0
- let mutable nota50 = 0
- let mutable nota100 = 0
- if valor >= 100 then
- nota100 <- (valor/100)
- valor <- (valor%100)
- if valor > 50 then
- nota50 <- (valor/50)
- valor <- (valor%50)
- if valor > 10 then
- nota10 <- (valor/10)
- valor <- (valor%10)
- if valor > 5 then
- nota5 <- (valor/5)
- valor <- (valor%5)
- printf("O caixa deve retornar: \n %A Notas de Cem; \n %A Notas de Cinquenta; \n %A Notas de Dez; \n %A Notas de Cinco;\n %A Notas de Um; \n") nota100 nota50 nota10 nota5 valor
- System.Console.ReadKey()
- //11. Faça um Programa que peça um número e informe se o número é inteiro ou ponto flutuante (racional).
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let numero = float(System.Console.ReadLine())
- if numero%2.0 = 0.0 || numero%2.0 = 1.0 then printf("Numero Inteiro!!\n")
- else printf("Numero Real!!\n")
- 0
- System.Console.ReadKey()
- //12. Um posto está vendendo combustíveis com a seguinte tabela de descontos:
- //Álcool:
- //o até 20 litros, desconto de 3% por litro
- //o acima de 20 litros, desconto de 5% por litro
- //Gasolina:
- //o até 20 litros, desconto de 4% por litro
- //o acima de 20 litros, desconto de 6% por litro
- //Escreva um algoritmo que leia o número de litros vendidos,
- //o tipo de combustível (codificado da seguinte forma: A-álcool,
- //G-gasolina), calcule e imprima o valor a ser pago pelo cliente
- //sabendo-se que o preço do litro da gasolina é R$ 2,50 o preço
- //do litro do álcool é R$ 1,90.
- open System
- let principal =
- System.Console.WriteLine("Digite o numero de litros vendidos: ")
- let litros = float(System.Console.ReadLine())
- System.Console.WriteLine("Digite o Tipo de Combustivel: use A para Alcool e G para Gasolina: ")
- let tipo = char(System.Console.ReadLine())
- let mutable valor = 0.0
- if tipo = 'A' || tipo = 'a' then
- valor <- litros * 1.9
- if litros > 0. && litros <= 20. then
- valor <- (valor - ((3.0*valor)/100.0))
- printf("O valor a ser pago é: R$ %A\n") valor
- elif litros > 20. then
- valor <- (valor - ((5.0*valor)/100.0))
- printf("O valor a ser pago é: R$ %A\n") valor
- else printf("Valor Inválido!!\n")
- elif tipo = 'G' || tipo = 'g' then
- valor <- litros * 2.5
- if litros > 0.0 && litros <= 20.0 then
- valor <- (valor - ((4.0*valor)/100.0))
- printf("O valor a ser pago é: R$ %A\n") valor
- elif litros > 20. then
- valor <- (valor - ((6.0*valor)/100.0))
- printf("O valor a ser pago é: R$ %A\n") valor
- else printf("Valor Inválido!!\n")
- else printf("Tipo Inválido!!")
- 0
- System.Console.ReadKey()
- //Exercícios de Programação (3a Parte)
- //13. Faça um programa que peça uma nota, entre zero e dez.
- //Mostre uma mensagem caso o valor seja inválido e continue
- // pedindo até que o usuário informe um valor válido.
- let valido n = if n>=0 && n<=10 then true
- else false
- let principal =
- System.Console.WriteLine("Digite um numero entre zero e dez: ")
- let mutable n = int(System.Console.ReadLine())
- while (valido n) = false do
- printf("Numero Inválido!!\n Digite um numero entre zero e dez: ")
- n <- int(System.Console.ReadLine())
- printf("Numero Válido. Obrigado.\n")
- 0
- principal
- System.Console.ReadKey()
- //14. Faça um programa que leia um nome de usuário e a sua senha e não aceite a
- //senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando
- //a pedir as informações.
- let principal =
- System.Console.WriteLine("Username: ")
- let mutable username = string(System.Console.ReadLine())
- System.Console.WriteLine("Password: ")
- let mutable password = string(System.Console.ReadLine())
- while username.Equals(password) do
- printf("Erro!! O Username e Password são iguais.\n")
- System.Console.WriteLine("Username: ")
- username <- string(System.Console.ReadLine())
- System.Console.WriteLine("Password: ")
- password <- string(System.Console.ReadLine())
- printf("Username e Password válidos. Obrigado.")
- principal
- System.Console.ReadKey()
- //15. Supondo que a população de um país A seja da ordem de 80000 habitantes com uma
- //taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes
- //com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o
- //número de anos necessários para que a população do país A ultrapasse ou iguale
- //a população do país B, mantidas as taxas de crescimento.
- let principal =
- let mutable popA = 80000.0
- let mutable popB = 200000.0
- let mutable ac = 0
- while popA < popB do
- popA <- (popA + (3.*popA/100.))
- popB <- (popB + (1.5*popB/100.))
- ac <- ac+1
- printf("São necessários %A anos.\n") ac
- principal
- System.Console.ReadKey()
- //16. Faça um programa que imprima na tela os números de 1 a 20, um abaixo do outro.
- //Depois modifique o programa para que ele mostre os números um ao lado do outro.
- let principal =
- let mutable n = 1
- while n <= 20 do
- printf "%A\n" n
- n <- n+1
- n <- 1
- while n <= 20 do
- printf "%A " n
- n <- n+1
- principal
- System.Console.ReadKey()
- //17. Faça um programa que receba dois números inteiros e gere os números inteiros
- //que estão no intervalo compreendido por eles.
- let principal =
- System.Console.WriteLine("Digite um valor A: ")
- let A = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um valor B: ")
- let B = int(System.Console.ReadLine())
- let intervalo = [(A+1)..(B-1)]
- printf("%A\n") intervalo
- 0
- principal
- System.Console.ReadKey()
- //18. Altere o programa anterior para mostrar no final a soma dos números.
- let rec soma lista =
- match lista with
- |[] -> 0
- |x::xs -> x + soma xs
- let principal =
- System.Console.WriteLine("Digite um valor A: ")
- let A = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um valor B: ")
- let B = int(System.Console.ReadLine())
- let intervalo = [(A+1)..(B-1)]
- printf("Intervalo: %A\n") intervalo
- printf("Soma do Intervalo: %A\n") (soma intervalo)
- 0
- principal
- System.Console.ReadKey()
- //19. Desenvolva um gerador de tabuada, capaz de gerar a tabuada de qualquer número
- //inteiro entre 1 a 10. O usuário deve informar de qual numero ele deseja ver a
- //tabuada. A saída deve ser conforme o exemplo abaixo:
- //Tabuada de 5: 5 X 1 = 5 5 X 2 = 10 ... 5 X 10 = 50
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- printf("Tabuada: \n")
- for i = 1 to 10 do
- printf("%A x %A = %A\n") n i (n*i)
- 0
- principal
- System.Console.ReadKey()
- //20. Faça um programa que peça dois números, base e expoente,
- //calcule e mostre o primeiro número elevado ao segundo número.
- // Não utilize a função de potência da linguagem.
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let A = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um numero: ")
- let B = int(System.Console.ReadLine())
- let mutable soma = A
- for i = 2 to B do
- soma <- (soma * A)
- printf("%A\n") soma
- 0
- principal
- System.Console.ReadKey()
- //20. Faça um programa que peça 10 números inteiros, calcule e mostre a quantidade
- //de números pares e a quantidade de números impares.
- let principal =
- let mutable n = 0
- let mutable par = 0
- let mutable impar = 0
- for i = 1 to 10 do
- System.Console.WriteLine("Digite um numero: ")
- n <- int(System.Console.ReadLine())
- if n%2 = 0 then
- par <- par+1
- else impar <- impar+1
- printf("Foram digitados %A numero(s) par(es) e %A numero(s) impar(es).\n") par impar
- 0
- principal
- System.Console.ReadKey()
- //22. A série de Fibonacci é formada pela seqüência 0,1,1,2,3,5,8,13,21,34,55,...
- //Faça um programa que gere a série até que o valor seja maior que 500.
- let rec fib n =
- match n with
- |0 -> 0
- |1 -> 1
- |_ -> fib(n-1)+fib(n-2)
- let principal =
- let mutable n = 0
- while (fib n) <= 500 do
- printf("%A,") (fib n)
- n <- n + 1
- n <- n + 1
- printf("%A,") (fib n)
- printf(".\n")
- 0
- principal
- System.Console.ReadKey()
- //23. Faça um programa que, dado um conjunto de N números,
- //determine o menor valor, o maior valor e a soma dos valores.
- let principal =
- System.Console.WriteLine("Digite o tamanho do conjunto: ")
- let mutable N = int(System.Console.ReadLine())
- System.Console.WriteLine("Digite o 1° elemento do Conjunto: ")
- let mutable n = int(System.Console.ReadLine())
- let mutable soma = n
- let mutable menor = n
- let mutable maior = n
- for i = 2 to N do
- printf("Digite o %A° elemento do Conjunto: \n") i
- n <- int(System.Console.ReadLine())
- soma <- (soma + n)
- if n < menor then
- menor <- n
- if n > maior then
- maior <- n
- printf(" Menor: %A\n Maior: %A\n Soma: %A\n") menor maior soma
- 0
- principal
- System.Console.ReadKey()
- //24. Altere o programa anterior para que ele aceite apenas números entre 0 e 1000.
- let principal =
- System.Console.WriteLine("[1° Numero] Digite um numero entre 0 e 1000: ")
- let mutable n = int(System.Console.ReadLine())
- while n < 0 || n > 1000 do
- printf("Numero inválido!!\n")
- System.Console.WriteLine("[1° Numero]Digite um numero entre 0 e 1000: ")
- n <- int(System.Console.ReadLine())
- let mutable soma = n
- let mutable menor = n
- let mutable maior = n
- for i = 2 to 10 do
- printf("[%d° Numero]Digite um numero entre 0 e 1000: \n") i
- n <- int(System.Console.ReadLine())
- while n < 0 || n > 1000 do
- printf("Numero inválido!!\n")
- printf("[%d° Numero]Digite um numero entre 0 e 1000: \n") i
- n <- int(System.Console.ReadLine())
- soma <- (soma + n)
- if n < menor then
- menor <- n
- if n > maior then
- maior <- n
- printf(" Menor: %A\n Maior: %A\n Soma: %A\n") menor maior soma
- 0
- principal
- System.Console.ReadKey()
- //25. Faça um programa que peça um número inteiro e determine se ele é ou não um número primo.
- //Um número primo é aquele que é divisível somente por ele mesmo e por 1.
- let rec nroDivisoresAux n lista ac =
- match lista with
- |[]-> ac
- |x::xs -> if (n%x=0) then nroDivisoresAux n xs (ac+1)
- else nroDivisoresAux n xs ac
- let nroDivisores n = nroDivisoresAux n [1..n] 0
- let principal =
- System.Console.WriteLine("Digite um numero inteiro: ")
- let n = int(System.Console.ReadLine())
- if (nroDivisores n) = 2 then
- printf("O numero é primo!!\n")
- else printf("O numero não é primo!!\n")
- 0
- principal
- System.Console.ReadKey()
- //26. Altere o programa de cálculo dos números primos, informando, caso o número não seja primo,
- //por quais número ele é divisível.
- let rec nroDivisoresAux n lista ac =
- match lista with
- |[]-> ac
- |x::xs -> if (n%x=0) then nroDivisoresAux n xs (ac+1)
- else nroDivisoresAux n xs ac
- let nroDivisores n = nroDivisoresAux n [1..n] 0
- let rec DivisoresAux n lista lista2 =
- match lista with
- |[] -> lista2
- |x::xs -> if (n%x=0) then DivisoresAux n xs (x::lista2)
- else DivisoresAux n xs lista2
- let divisores n = DivisoresAux n [1..n] []
- let principal =
- System.Console.WriteLine("Digite um numero inteiro: ")
- let n = int(System.Console.ReadLine())
- if (nroDivisores n) = 2 then
- printf("O numero é primo!!\n")
- else printf("O numero não é primo!!\n Seus divisores são: %A \n") (divisores n)
- 0
- principal
- System.Console.ReadKey()
- //27. Faça um programa que mostre todos os primos entre 1 e N sendo N
- //um número inteiro fornecido pelo usuário. O programa deverá mostrar
- //também o número de divisões que ele executou para encontrar os números primos.
- //Serão avaliados o funcionamento, o estilo e o número de testes (divisões) executados.
- let rec nroDivisoresAux n lista ac=
- match lista with
- |[]-> ac
- |x::xs -> if (n%x=0) then nroDivisoresAux n xs (ac+1)
- else nroDivisoresAux n xs ac
- let nroDivisores n = nroDivisoresAux n [1..n] 0
- let rec primoAux lista =
- match lista with
- |[] -> []
- |x::xs -> if (nroDivisores x = 2) then x::primoAux xs
- else primoAux xs
- let primosAteN n = primoAux [1..n]
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- printf("Os numeros primos até %A são: %A\n") n (primosAteN n)
- printf("Foram necessárias %A divisões.\n") n
- 0
- principal
- System.Console.ReadKey()
- //28. Faça um programa que calcule o mostre a média aritmética de N valores.
- let principal =
- System.Console.WriteLine("Digite a quantidade de valores: ")
- let N = int(System.Console.ReadLine())
- let mutable valor = 0
- let mutable soma = 0
- for i = 1 to N do
- System.Console.WriteLine("Digite um valor: ")
- valor <- int(System.Console.ReadLine())
- soma <- (soma + valor)
- let media = (float(soma) / float(N))
- printf("A media é: %A\n") media
- 0
- principal
- System.Console.ReadKey()
- //29. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário.
- //Ex.: 5!=5.4.3.2.1=120.
- //A saída deve ser conforme o exemplo abaixo:
- //Fatorial de: 5 5! = 5 . 4 . 3 . 2 . 1 = 120
- //29. Faça um programa que calcule o fatorial de um número inteiro fornecido pelo usuário.
- //Ex.: 5!=5.4.3.2.1=120.
- //A saída deve ser conforme o exemplo abaixo:
- //Fatorial de: 5 5! = 5 . 4 . 3 . 2 . 1 = 120
- open System
- let rec fat n =
- match n with
- |0->1
- |_->n*fat(n-1)
- let rec Muda lista texto ac=
- match lista with
- |[] -> texto
- |x::xs -> if ac =0 then Muda xs (string(x) + texto) (ac+1)
- else Muda xs (string(x) + "." + texto) ac
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- let L1 = [(1)..(n)]
- printf("%A! = %A = %A \n") n (Muda L1 "" 0) (fat n)
- 0
- principal
- System.Console.ReadKey()
- //30. Um funcionário de uma empresa recebe aumento salarial anualmente: Sabe-se que:
- //a. Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00;
- //b. Em 1996 recebeu aumento de 1,5% sobre seu salário inicial;
- //c. A partir de 1997 (inclusive), os aumentos salariais sempre correspondem ao dobro
- //do percentual do ano anterior. Faça um programa que determine o salário atual desse funcionário.
- //Após concluir isto, altere o programa permitindo que o usuário digite o salário inicial do funcionário.
- //Considerei o reajuste anual baseado SEMPRE no salário inicial.
- //Caso use o reajuste baseado no salário atual, o buffer irá estourar.
- let principal =
- System.Console.WriteLine("Entre com um salário inicial: ")
- let salarioI = float(System.Console.ReadLine())
- let mutable taxa = 1.5
- let mutable salario = salarioI
- let mutable reajuste = (salarioI*taxa/100.)
- salario <- (salario + reajuste)
- for i = 1997 to 2011 do
- taxa <- taxa * 2.
- reajuste <- ((salarioI*taxa)/100.0)
- salario <- salario + reajuste
- printf("Salário atual: %A\n") salario
- 0
- principal
- System.Console.ReadKey()
- //31. Foi feita uma estatística em cinco cidades brasileiras para coletar dados sobre acidentes de trânsito.
- //Foram obtidos os seguintes dados: Código da cidade; Número de veículos de passeio (em 1999)
- //e Número de acidentes de trânsito com vítimas (em 1999). Deseja-se saber:
- //
- //a. Qual o maior e menor índice de acidentes de transito e a que cidade pertence;
- //b. Qual a média de veículos nas cinco cidades juntas;
- //c. Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
- let indice v a = (a/v)
- let rec maiorAux maior lista =
- match lista with
- |[] -> maior
- |x::xs -> if x>maior then maiorAux x xs
- else maiorAux maior xs
- let maior lista =
- match lista with
- |x::xs -> maiorAux x xs
- let rec menorAux menor lista =
- match lista with
- |[] -> menor
- |x::xs -> if x<menor then menorAux x xs
- else menorAux menor xs
- let menor lista =
- match lista with
- |x::xs -> menorAux x xs
- let principal =
- //Lendo cidade 1
- System.Console.WriteLine("Digite o Código da Cidade: ")
- let c1 = int(System.Console.ReadLine())
- System.Console.WriteLine("Numero de veículos de passeio: ")
- let v1 = float(System.Console.ReadLine())
- System.Console.WriteLine("Numero de acidadents de trânsito com vítimas: ")
- let a1 = float(System.Console.ReadLine())
- //Lendo cidade 2
- let ind1 = (indice v1 a1)
- System.Console.WriteLine("Digite o Código da Cidade: ")
- let c2 = int(System.Console.ReadLine())
- System.Console.WriteLine("Numero de veículos de passeio: ")
- let v2 = float(System.Console.ReadLine())
- System.Console.WriteLine("Numero de acidadents de trânsito com vítimas: ")
- let a2 = float(System.Console.ReadLine())
- let ind2 = (indice v2 a2)
- //Lendo cidade 3
- System.Console.WriteLine("Digite o Código da Cidade: ")
- let c3 = int(System.Console.ReadLine())
- System.Console.WriteLine("Numero de veículos de passeio: ")
- let v3 = float(System.Console.ReadLine())
- System.Console.WriteLine("Numero de acidadents de trânsito com vítimas: ")
- let a3 = float(System.Console.ReadLine())
- let ind3 = (indice v2 a2)
- //Lendo cidade 4
- System.Console.WriteLine("Digite o Código da Cidade: ")
- let c4 = int(System.Console.ReadLine())
- System.Console.WriteLine("Numero de veículos de passeio: ")
- let v4 = float(System.Console.ReadLine())
- System.Console.WriteLine("Numero de acidadents de trânsito com vítimas: ")
- let a4 = float(System.Console.ReadLine())
- let ind4 = (indice v4 a4)
- //Lendo cidade 5
- System.Console.WriteLine("Digite o Código da Cidade: ")
- let c5 = int(System.Console.ReadLine())
- System.Console.WriteLine("Numero de veículos de passeio: ")
- let v5 = float(System.Console.ReadLine())
- System.Console.WriteLine("Numero de acidadents de trânsito com vítimas: ")
- let a5 = float(System.Console.ReadLine())
- let ind5 = (indice v5 a5)
- //Calculando Indice
- let indices = [ind1;ind2;ind3;ind4;ind5]
- let maiorI = (maior indices)
- let menorI = (menor indices)
- //Resposta A
- let mutable maiorIC = 0
- if (maiorI = ind1) then
- maiorIC <- c1
- if (maiorI = ind2) then
- maiorIC <- c2
- if (maiorI = ind3) then
- maiorIC <- c3
- if (maiorI = ind4) then
- maiorIC <- c4
- if (maiorI = ind5) then
- maiorIC <- c5
- printf("O maior indice é [%A] acidentes por veiculo e pertence a cidade de Código [%A].\n") maiorI maiorIC
- let mutable menorIC = 0
- if (menorI = ind1) then
- menorIC <- c1
- if (menorI = ind2) then
- menorIC <- c2
- if (menorI = ind3) then
- menorIC <- c3
- if (menorI = ind4) then
- menorIC <- c4
- if (menorI = ind5) then
- menorIC <- c5
- printf("O menor indice é [%A] acidentes por veiculo e pertence a cidade de Cógido[%A].\n") menorI menorIC
- //Resposta B
- let mediaV = (v1+v2+v3+v4+v5)/5.0
- printf("A Média de Veiculos entre as cidades é: %A\n") mediaV
- //Resposta C
- //Qual a média de acidentes de trânsito nas cidades com menos de 2.000 veículos de passeio.
- let mutable somaAM = 0.0
- let mutable contAM = 0.0
- if v1 <= 2000. then
- somaAM <- (somaAM + a1)
- contAM <- (contAM + 1.)
- if v2 <= 2000. then
- somaAM <- (somaAM + a2)
- contAM <- (contAM + 1.)
- if v3 <= 2000. then
- somaAM <- (somaAM + a3)
- contAM <- (contAM + 1.)
- if v4 <= 2000. then
- somaAM <- (somaAM + a4)
- contAM <- (contAM + 1.)
- if v5 <= 2000. then
- somaAM <- (somaAM + a5)
- contAM <- (contAM + 1.)
- let mediaAM = float((float somaAM) / (float contAM))
- printf("A média de acidentes de trânsito entre as cidades com menos de 2.000 veículos é: %A") mediaAM
- 0
- principal
- System.Console.ReadKey()
- //32. Faça um programa que leia uma quantidade indeterminada de números positivos e conte
- //quantos deles estão nos seguintes intervalos: [0-25], [26-50], [51-75] e [76-100].
- //A entrada de dados deverá terminar quando for lido um número negativo.
- let principal =
- let mutable n = 1
- let mutable c1 = 0
- let mutable c2 = 0
- let mutable c3 = 0
- let mutable c4 = 0
- System.Console.WriteLine("Digite um numero negativo para encerrar o programa.\n")
- while n > 0 do
- System.Console.WriteLine("Digite um numero: ")
- n <- int(System.Console.ReadLine())
- if n >= 0 && n <= 25 then
- c1 <- c1 + 1
- if n >= 26 && n <= 50 then
- c2 <- c2 + 1
- if n >= 51 && n <= 75 then
- c3 <- c3 + 1
- if n >= 76 && n <= 100 then
- c4 <- c4 + 1
- if n > 100 then
- printf("Numero inválido!!\n")
- printf("Foram digitados [%A] numeros no intervalo entre [0-25]\n
- Foram digitados [%A] numeros no intervalo entre [26-50]\n
- Foram digitados [%A] numeros no intervalo entre [51-75]\n
- Foram digitados [%A] numeros no intervalo entre [76-100]\n") c1 c2 c3 c4
- 0
- principal
- System.Console.ReadKey()
- //33. Código Preço
- //Cachorro Quente 100 R$ 1,20
- //Bauru Simples 101 R$ 1,30
- //Bauru com ovo 102 R$ 1,50
- //Hambúrguer 103 R$ 1,20
- //Cheeseburguer 104 R$ 1,30
- //Refrigerante 105 R$ 1,00
- //Faça um programa que leia o código dos itens pedidos e as quantidades desejadas.
- //Calcule e mostre o valor a ser pago por item (preço * quantidade) e o total geral do pedido.
- //Considere que o cliente deve informar quando o pedido deve ser encerrado.
- let principal =
- let mutable cod = 0
- let mutable quant = 0.
- let mutable item = 0.
- let mutable total = 0.0
- System.Console.WriteLine("Digite o Código 999 para encerrar o pedido;\n")
- System.Console.WriteLine("Especificação Código Preço \n
- Cachorro Quente 100 R$ 1,20 \n
- Bauru Simples 101 R$ 1,30 \n
- Bauru com ovo 102 R$ 1,50 \n
- Hambúrguer 103 R$ 1,20 \n
- Cheeseburguer 104 R$ 1,30 \n
- Refrigerante 105 R$ 1,00\n ")
- while(cod <> 999) do
- System.Console.WriteLine("Digite o Código do seu pedido: ")
- cod <- int(System.Console.ReadLine())
- if cod = 100 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.2 * quant)
- item <- (1.2 * quant)
- printf("Foram pedidos [%A] Cachorro(s) Quente(s). Valor do item: R$ %A\n")quant item
- if cod = 101 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.3 * quant)
- item <- (1.3 * quant)
- printf("Foram pedidos [%A] Bauru(s) Simples. Valor do item: R$ %A\n")quant item
- if cod = 102 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.5 * quant)
- item <- (1.5 * quant)
- printf("Foram pedidos [%A] Bauru(s) com Ovo(s). Valor do item: R$ %A\n")quant item
- if cod = 103 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.2 * quant)
- item <- (1.2 * quant)
- printf("Foram pedidos [%A] Hamburguer(es). Valor do item: R$ %A\n")quant item
- if cod = 104 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.3 * quant)
- item <- (1.3 * quant)
- printf("Foram pedidos [%A] Cheeseburguer(es). Valor do item: R$ %A\n")quant item
- if cod = 105 then
- System.Console.WriteLine("Digite a quantidade desejada: ")
- quant <- float(System.Console.ReadLine())
- total <- total + (1.0 * quant)
- item <- (1.0 * quant)
- printf("Foram pedidos [%A] Refrigerante(s). Valor do item: R$ %A\n")quant item
- if cod = 999 then
- printf("O valor total do pedido é: R$ %A\n") total
- 0
- principal
- System.Console.ReadKey()
- //34. Em uma eleição presidencial existem quatro candidatos. Os votos são informados por meio de código.
- //Os códigos utilizados são: 1 , 2, 3, 4 - Votos para os respectivos candidatos (você deve montar a tabela ex: 1 - Jose/ 2- João/etc) 5 - Voto Nulo 6 - Voto em Branco
- //Faça um programa que calcule e mostre:
- //o O total de votos para cada candidato;
- //o O total de votos nulos;
- //o O total de votos em branco;
- //o A percentagem de votos nulos sobre o total de votos;
- //o A percentagem de votos em branco sobre o total de votos. Para finalizar o conjunto de votos tem-se o valor zero.
- open System
- let principal =
- System.Console.WriteLine("Tabela de Candidatos:\n
- 1 - João\n
- 2 - José\n
- 3 - Maria\n
- 4 - Ana\n
- 5 - Voto Nulo\n
- 6 - Voto em Branco\n")
- let mutable ac1 = 0
- let mutable ac2 = 0
- let mutable ac3 = 0
- let mutable ac4 = 0
- let mutable ac5 = 0
- let mutable ac6 = 0
- let mutable voto = 15
- while (voto <> 0) do
- printf("Digite o numero referente ao seu voto: ")
- voto <- int(System.Console.ReadLine())
- if voto < 0 && voto > 6 then
- printf("Numero Inválido!!\n")
- if voto = 1 then ac1 <- (ac1 + 1)
- if voto = 2 then ac2 <- (ac2 + 1)
- if voto = 3 then ac3 <- (ac3 + 1)
- if voto = 4 then ac4 <- (ac4 + 1)
- if voto = 5 then ac5 <- (ac5 + 1)
- if voto = 6 then ac6 <- (ac6 + 1)
- let totalV = (ac1 + ac2 + ac3 + ac4 + ac5 + ac6)
- let percentualN = ((ac5*100)/totalV)
- let percentualB = ((ac6*100)/totalV)
- printf("O total de votos para o candidado [1 - João] foi: %A\n") ac1
- printf("O total de votos para o candidado [2 - José ] foi: %A\n") ac2
- printf("O total de votos para o candidado [3 - Maria] foi: %A\n") ac3
- printf("O total de votos para o candidado [4 - Ana] foi: %A\n") ac4
- printf("O total de votos nulos[5] foi: %A\n") ac5
- printf("O total de votos em branco [6] foi: %A\n") ac6
- printf("O percentual de votos nulos foi de %A porcento.\n") percentualN
- printf("O percentual de votos brancos foi de %A porcento.\n") percentualB
- 0
- principal
- System.Console.ReadKey()
- //35. Faça um programa que peça um numero inteiro positivo e em seguida mostre este numero invertido.
- //Exemplo: 12376489 retorna 98467321
- let rec inverteAux N aux = if (N = 0) then aux
- else inverteAux (N/10) (aux*10 + N%10)
- let principal =
- System.Console.WriteLine("Digite um numero inteiro positivo: ")
- let n = int(System.Console.ReadLine())
- let n1 = (inverteAux n 0)
- printf("O numero inverso a [%A] é [%A]")n n1
- 0
- principal
- System.Console.ReadKey()
- //Faça um programa que mostre os n termos da Série a seguir: S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m.
- //e imprime no final a soma da série.
- let principal =
- System.Console.WriteLine("Digite um valor para n: ")
- let n = int(System.Console.ReadLine())
- let N = float(n)
- let mutable Soma = 0.0
- let mutable M = 0
- printf("S = ")
- for i = 1 to n do
- if i < n then
- M <- ((2*i)-1)
- Soma <- (Soma + ((float(i))/(float(M))))
- printf("%A/%A + ")i M
- if (i = n) then
- M <- ((2*i)-1)
- Soma <- (Soma + ((float(i))/(float(M))))
- printf(" %A/%A")i M
- printf("\n")
- printf("A soma é: %A\n") Soma
- 0
- principal
- System.Console.ReadKey()
- //Sendo H= 1 + 1/2 + 1/3 + 1/4 + ... + 1/N, faça um programa que calcule o valor de H com N termos.
- //Faça um programa que mostre os n termos da Série a seguir: S = 1/1 + 2/3 + 3/5 + 4/7 + 5/9 + ... + n/m.
- //e imprima no final a soma da série.
- let principal =
- System.Console.WriteLine("Digite um valor para n: ")
- let n = int(System.Console.ReadLine())
- let mutable SomaS = 0.0
- let mutable SomaH = 0.0
- let mutable M = 0
- printf("H = ")
- for i = 1 to n do
- if i < n then
- SomaH <- (SomaH + (1./(float(i))))
- printf("1/%A + ")i
- if (i = n) then
- SomaH <- (SomaH + (1./(float(i))))
- printf("1/%A")i
- printf("\n")
- printf("A soma de H é: %A\n") SomaH
- printf("S = ")
- for i = 1 to n do
- if i < n then
- M <- ((2*i)-1)
- SomaS <- (SomaS + ((float(i))/(float(M))))
- printf("%A/%A + ")i M
- if (i = n) then
- M <- ((2*i)-1)
- SomaS <- (SomaS + ((float(i))/(float(M))))
- printf(" %A/%A")i M
- printf("\n")
- printf("A soma de S é: %A\n") SomaS
- 0
- principal
- System.Console.ReadKey()
- //Exercícios de Programação (4a Parte)
- //36. Faça um Programa que leia um vetor de 5 números inteiros e mostre-os.
- open System
- let principal =
- let vetor = Array.zeroCreate 5
- for i = 0 to vetor.Length - 1 do
- printf("Digite um numero: ")
- vetor.[i] <- int(System.Console.ReadLine())
- printf("Você criou o vetor: %A\n") vetor
- 0
- principal
- System.Console.ReadKey()
- //37. Faça um Programa que leia um vetor de 10 números reais e mostre-os na ordem inversa.
- open System
- let principal=
- let vetor = Array.zeroCreate 10
- for i = 0 to vetor.Length-1 do
- printf("Digite um numero: ")
- vetor.[i] <- float(System.Console.ReadLine())
- let mutable aux = (vetor.Length-1)
- printf("Vetor inverso: \n")
- while(aux >= 0) do
- printf("%A\n") vetor.[aux]
- aux <- (aux-1)
- 0
- principal
- System.Console.ReadKey()
- //38. Faça um Programa que leia 20 números inteiros e armazene-os num vetor.
- //Armazene os números pares no vetor PAR e os números IMPARES no vetor impar.
- //Imprima os três vetores.
- open System
- let principal =
- let vetor = [|(1)..(20)|]
- let mutable acP = 0
- let mutable acI = 0
- for i = 0 to vetor.Length - 1 do
- System.Console.WriteLine("Digite um valor: ")
- vetor.[i] <- int(System.Console.ReadLine())
- if vetor.[i]%2 = 0 then
- acP <- (acP + 1)
- else acI <- (acI + 1)
- let PAR = [|(1)..(acP)|]
- let IMPAR = [|(1)..(acI)|]
- let mutable j = 0
- for i = 0 to vetor.Length - 1 do
- if vetor.[i]%2 = 0 then
- PAR.[j] <- vetor.[i]
- j <- j+1
- j <- 0
- for i = 0 to vetor.Length - 1 do
- if vetor.[i]%2 = 1 then
- IMPAR.[j] <- vetor.[i]
- j <- j+1
- printf("Vetor: %A\n") vetor
- printf("Vetor Par: %A\n") PAR
- printf("Vetor Impar: %A\n") IMPAR
- 0
- principal
- System.Console.ReadKey()
- //39. Faça um Programa que peça as quatro notas de 10 alunos,
- // calcule e armazene num vetor a média de cada aluno,
- // imprima o número de alunos com média maior ou igual a 7.0.
- let principal =
- let mutable sNota = 0.
- let mutable nota = -1.0
- let vetorM = Array.zeroCreate 10
- for i = 0 to vetorM.Length - 1 do
- printf("Aluno [%A] \n")(i+1)
- for j = 1 to 4 do
- while(nota<0. || nota > 10.) do
- printf("Digite a %A° nota: ") j
- nota <- float(System.Console.ReadLine())
- if nota<0. || nota > 10. then
- printf("Nota inválida!!\n")
- sNota <- (sNota + nota)
- vetorM.[i] <- (sNota/4.)
- sNota <- 0.
- for i = 0 to (vetorM.Length) - 1 do
- if vetorM.[i] >= 7. then
- printf("O Aluno [%A] teve média: %A\n")(i+1) vetorM.[i]
- 0
- principal
- System.Console.ReadKey()
- //40. Faça um Programa que leia dois vetores com 10 elementos cada.
- //Gere um terceiro vetor de 20 elementos, cujos valores deverão
- //ser compostos pelos elementos intercalados dos dois outros vetores.
- let principal =
- let v1 = Array.zeroCreate 10
- let v2 = Array.zeroCreate 10
- let v3 = Array.zeroCreate 20
- let mutable aux = 0
- for i = 0 to (v1.Length) - 1 do
- printf("Digite um valor para a posição [%A] do 1° vetor: ")i
- v1.[i] <- int(System.Console.ReadLine())
- for i = 0 to (v2.Length) - 1 do
- printf("Digite um valor para a posição [%A] do 2° vetor: ")i
- v2.[i] <- int(System.Console.ReadLine())
- for i = 0 to (v1.Length) - 1 do
- if aux%2 = 0 then
- v3.[aux] <- v1.[i]
- aux <- (aux+1)
- if aux%2 = 1 then
- v3.[aux] <- v2.[i]
- aux <- (aux+1)
- printf("Vetor Composto: %A\n") v3
- 0
- principal
- System.Console.ReadKey()
- //41. Faça um programa que receba a temperatura média de cada mês do ano e armazene-as em uma lista.
- //Após isto, calcule a média anual das temperaturas e mostre todas as temperaturas acima da média anual,
- // e em que mês elas ocorreram (mostrar o mês por extenso: 1 – Janeiro, 2 – Fevereiro, . . . ).
- let principal =
- let meses = [|"1 - Janeiro"
- "2 - Fevereiro"
- "3 - Março"
- "4 - Abril"
- "5 - Maio"
- "6 - Junho"
- "7 - Julho"
- "8 - Agosto"
- "9 - Setembro"
- "10 - Outubro"
- "11 - Novembro"
- "12 - Dezembro"|]
- let mutable somaT = 0.
- let vetor = [|(1.)..(12.)|]
- for i = 0 to (vetor.Length)-1 do
- printf("Digite a temperatura para [%A]:") meses.[i]
- vetor.[i] <- float(System.Console.ReadLine())
- somaT <- (somaT + vetor.[i])
- let media = (somaT/float(vetor.Length))
- printf("A média anual é de: %A°. \n") media
- for i = 0 to vetor.Length-1 do
- if vetor.[i] > media then
- printf("A temperatura %A° ocorrida no mês %A está acima da média atual.\n")vetor.[i] meses.[i]
- 0
- principal
- System.Console.ReadKey()
- //42. Faça um programa que leia um número indeterminado de valores, correspondentes a notas,
- //encerrando a entrada de dados quando for informado um valor igual a -1 (que não deve ser armazenado).
- //Após esta entrada de dados, faça:
- //
- //a. Mostre a quantidade de valores que foram lidos;
- //b. Exiba todos os valores na ordem em que foram informados, um ao lado do outro;
- //c. Exiba todos os valores na ordem inversa à que foram informados, um abaixo do outro;
- //d. Calcule e mostre a soma dos valores;
- //e. Calcule e mostre a média dos valores;
- //f. Calcule e mostre a quantidade de valores acima da média calculada;
- //g. Calcule e mostre a quantidade de valores abaixo de sete;
- //h. Encerre o programa com uma mensagem;
- let principal =
- let mutable nota = 0.
- let mutable soma = 0.
- let mutable ac7 = 0
- let vetor = [|(1.)..(999.)|]
- let mutable ac = 0
- while nota <> -1. do
- printf("Digite uma nota: ")
- nota <- float(System.Console.ReadLine())
- if nota <> -1. then
- vetor.[ac] <- nota
- soma <- (soma + nota)
- ac <- (ac+1)
- printf("\n")
- printf("Foram lidos %A valores.\n") ac
- printf("\n")
- let media = (soma/float(ac))
- printf("Valores em ordem: ")
- for i = 0 to ac-1 do
- printf("%A, ")vetor.[i]
- printf("\n")
- printf("\n")
- printf("Valores em ordem inversa: \n")
- while (ac <> 0) do
- printf("%A\n") vetor.[ac-1]
- ac <- (ac-1)
- printf("\n")
- printf("Soma: %A\n") soma
- printf("\n")
- printf("Media: %A\n") media
- printf("\n")
- for i = 0 to ac-1 do
- if vetor.[i] > media then
- printf("O Vetor[%A] tem valor {%A} que é maior que a média [%A]\n")i vetor.[i] media
- for i = 0 to ac-1 do
- if vetor.[i] < 7. then
- printf("O Vetor[%A] tem valor {%A} que é menor do que 7.\n")i vetor.[i]
- ac7 <- ((ac7)+1)
- printf("\n")
- printf("Foram digitados [%A] valores abaixo de 7.\n")ac7
- printf("\n")
- System.Console.WriteLine("Mensagem de Encerramento!!")
- 0
- principal
- System.Console.ReadKey()
- //43. Uma empresa de pesquisas precisa tabular os resultados da seguinte enquete feita a um grande quantidade de organizações:
- //"Qual o melhor Sistema Operacional para uso es?m servidore" As possíveis respostas são:
- //1- Windows Server
- //2- Unix
- //3- Linux
- //4- Netware
- //5- Mac OS
- //6- Outro
- //Você foi contratado para desenvolver um programa que leia o resultado da enquete e informe ao final o resultado da mesma.
- //O programa deverá ler os valores até ser informado o valor 0, que encerra a entrada dos dados.
- //Não deverão ser aceitos valores além dos válidos para o programa (0 a 6).
- //Os valores referentes a cada uma das opções devem ser armazenados num vetor.
- //Após os dados terem sido completamente informados, o programa deverá calcular a percentual de cada
- //um dos concorrentes e informar o vencedor da enquete. O formato da saída foi dado pela empresa, e é o seguinte:
- // SistemaOperacional Votos %
- // ------------------- ----- ---
- // Windows Server 1500 17%
- // Unix 3500 40% Linux 3000 34%
- // Netware 500 5%
- // Mac OS 150 2%
- // Outro 150 2%
- // ------------------- ----- ---
- // Total 8800
- //
- // O Sistema Operacional mais votado foi o Unix, com 3500 votos, correspondendo a 40% dos votos.
- let percentual n ac = ((float(n))*100.)/(float(ac))
- let principal =
- let vN = [|"1- Windows Server";"2- Unix";"3- Linux";"4- Netware" ;"5- Mac OS";"6- Outro"|]
- let pergunta = "Qual o melhor Sistema Operacional para uso em servidores?"
- let opcao = "1- Windows Server \n 2- Unix \n 3- Linux \n 4- Netware \n 5- Mac OS \n 6- Outro"
- let votos = Array.zeroCreate 6
- printf("%A\n") pergunta
- System.Console.WriteLine(" Tabela de Votação\n")
- printf("----------------------------------- \n %A \n -----------------------------------\n") opcao
- printf("Digite 0 para encerrar a votação.\n")
- printf("\n")
- let mutable n = 1
- let mutable ac = 0
- while n <> 0 do
- System.Console.WriteLine("Digite o numero correspondente ao seu voto: ")
- n <- int(System.Console.ReadLine())
- if n = 1 then
- votos.[0] <- (votos.[0]+1)
- ac <- (ac+1)
- if n = 2 then
- votos.[1] <- (votos.[1]+1)
- ac <- (ac+1)
- if n = 3 then
- votos.[2] <- (votos.[2]+1)
- ac <- (ac+1)
- if n = 4 then
- votos.[3] <- (votos.[3]+1)
- ac <- (ac+1)
- if n = 5 then
- votos.[4] <- (votos.[4]+1)
- ac <- (ac+1)
- if n = 6 then
- votos.[5] <- (votos.[5]+1)
- ac <- (ac+1)
- printf("\n")
- printf("Votação Encerrada.\n")
- printf("\n")
- printf("SistemaOperacional / Votos / Percentual \n ------------------------------------------------------ \b")
- printf("\n")
- for i = 0 to votos.Length-1 do
- printf("%A / %A / %.2f \n")vN.[i] votos.[i] (percentual votos.[i] ac)
- printf("------------------------------------------------------ ")
- 0
- principal
- System.Console.ReadKey()
- //44. A ACME Inc., uma empresa de 500 funcionários, está tendo problemas de espaço em disco no seu servidor de arquivos.
- //Para tentar resolver este problema, o Administrador de Rede precisa saber qual o espaço ocupado pelos usuários, e
- //identificar os usuários com maior espaço ocupado. Através de um programa, baixado da Internet, ele conseguiu gerar o
- //seguinte arquivo, chamado "usuarios.txt":
- //
- //alexandre 456123789
- //anderson 1245698456
- //antonio 123456456
- //carlos 91257581
- //cesar 987458
- //rosemary 789456125
- //Neste arquivo, o nome do usuário possui 15 caracteres. A partir deste arquivo, você deve criar um programa que gere um relatório,
- //chamado "relatório.txt", no seguinte formato:
- //
- //ACME Inc. Uso do espaço em disco pelos usuários
- //------------------------------------------------------------------------
- //Nr. Usuário Espaço utilizado % do uso
- //1 alexandre 434,99 MB 16,85%
- //2 anderson 1187,99 MB 46,02%
- //3 antonio 117,73 MB 4,56%
- //4 carlos 87,03 MB 3,37%
- //5 cesar 0,94 MB 0,04%
- //6 rosemary 752,88 MB 29,16%
- //Espaço total ocupado: 2581,57 MB
- //Espaço médio ocupado: 430,26 MB
- //
- //O arquivo de entrada deve ser lido uma única vez, e os dados armazenados em memória, caso sejam necessários,
- //de forma a agilizar a execução do programa. A conversão da espaço ocupado em disco, de bytes para megabytes
- //deverá ser feita através de uma função separada, que será chamada pelo programa principal. O cálculo do percentual
- //de uso também deverá ser feito através de uma função, que será chamada pelo programa principal.
- //45. Faça um programa que simule um lançamento de dados.
- //Lance o dado 100 vezes e armazene os resultados em um vetor .
- //Depois, mostre quantas vezes cada valor foi conseguido.
- //Dica: use um vetor de contadores(1-6) e uma função para gerar numeros aleatórios,
- //simulando os lançamentos dos dados.
- open System
- let principal =
- let num = Array.zeroCreate 6
- let vetor = Array.zeroCreate 100
- let rand = System.Random()
- for i = 0 to vetor.Length - 1 do
- vetor.[i] <- rand.Next(1,7)
- if vetor.[i] = 1 then
- num.[0] <- (num.[0] + 1)
- elif vetor.[i] = 2 then
- num.[1] <- (num.[1] + 1)
- elif vetor.[i] = 3 then
- num.[2] <- (num.[2] + 1)
- elif vetor.[i] = 4 then
- num.[3] <- (num.[3] + 1)
- elif vetor.[i] = 5 then
- num.[4] <- (num.[4] + 1)
- elif vetor.[i] = 6 then
- num.[5] <- (num.[5] + 1)
- for i = 0 to num.Length - 1 do
- printf("O numero [%A] foi lançado [%A] vezes.\n")
- (i+1)
- (num.[i])
- 0
- System.Console.ReadKey()
- //Exercícios de Programação (5a Parte)
- //46. Faça uma função que informe a quantidade de dígitos de um determinado número inteiro informado.
- open System
- let contadigitos n = (string(n)).Length
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- printf("O numero informado [%A] tem %A digitos.") n (contadigitos n)
- 0
- let fim = System.Console.ReadKey()
- //47. Faça um programa que converta da notação de 24 horas para a notação de 12 horas.
- //Por exemplo, o programa deve converter 14:25 em 2:25 P.M. A entrada é dada em dois inteiros.
- //Deve haver pelo menos duas funções: uma para fazer a conversão e uma para a saída.
- //Registre a informação A.M./P.M. como um valor ‘A’ para A.M. e ‘P’ para P.M.
- //Assim, a função para efetuar as conversões terá um parâmetro formal para registrar se é A.M. ou P.M.
- //Inclua um loop que permita que o usuário repita esse cálculo para novos valores de entrada todas as vezes que desejar.
- let horasValidas H = if H >=0 && H < 24 then true
- else false
- let minutosValidos M = if M >= 0 && M < 60 then true
- else false
- let converteHoras n = if (n > 0) && (n <= 12) then n
- else (n-12)
- let registro n = if n > 0 && n <= 12 then "A.M."
- else "P.M."
- let principal =
- let mutable horas = -1
- let mutable minutos = -1
- let mutable continue = -1
- while (continue <> 0) do
- while (horasValidas horas) = false do
- System.Console.WriteLine("Digite as horas: ")
- horas <- int(System.Console.ReadLine())
- if (horasValidas horas) = false then
- printf("Horário Inválido!!\n")
- while (minutosValidos minutos) = false do
- System.Console.WriteLine("Digite os minutos: ")
- minutos <- int(System.Console.ReadLine())
- if (horasValidas horas) = false then
- printf("Horário Inválido!!\n")
- printf("\n O Horário convertido é: %A:%A[%A]\n")
- (converteHoras horas)
- minutos
- (registro horas)
- printf("\n Digite [1] para continuar [0] para terminar: ")
- continue <- int(System.Console.ReadLine())
- if continue <> 0 then
- horas <- (-1)
- minutos <- (-1)
- 0
- principal
- //48. Data com mês por extenso.
- //Construa uma função que receba uma data no formato DD/MM/AAAA e
- //devolva uma string no formato D de mesPorExtenso de AAAA.
- //Opcionalmente, valide a data e retorne NULL caso a data seja inválida.
- let mesValido n = if n >= 1 && n <= 12 then true
- else false
- let diaValido n = if n >= 1 && n <= 31 then true
- else false
- let meses = [|"Vazio";"Janeiro";"Fevereiro";"Março";"Abril";"Maio";"Junho";"Julho";"Agosto";"Setembro";"Outubro";"Novembro";"Dezembro"|]
- let principal =
- let mutable dia = 1
- let mutable mes = 1
- let mutable ano = 1
- System.Console.WriteLine("Digite um dia no formato [DD]: ")
- dia <- int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um mês no formato [MM]: ")
- mes <- int(System.Console.ReadLine())
- System.Console.WriteLine("Digite um ano no formato [AAAA]: ")
- ano <- int(System.Console.ReadLine())
- if (mesValido mes) && (diaValido dia) then
- printf("%A de %A de %A")dia meses.[mes] ano
- else printf("Data Inválida!!\n")
- 0
- principal
- System.Console.ReadKey()
- //49. Faça um programa para imprimir:
- // 1
- // 2 2
- // 3 3 3
- // .....
- // n n n n n n ... n
- //para um n informado pelo usuário. Use uma função que receba um valor n inteiro e imprima até a n-ésima linha.
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- let vetor = [|(1)..(n)|]
- for i = 0 to (n-1) do
- for j = 0 to i do
- printf("%A ") vetor.[i]
- printf("\n")
- 0
- principal
- System.Console.ReadKey()
- //50. Faça um programa para imprimir:
- // 1
- // 1 2
- // 1 2 3
- // .....
- // 1 2 3 ... n
- //para um n informado pelo usuário. Use uma função que receba um valor n inteiro imprima até a n-ésima linha.
- let principal =
- System.Console.WriteLine("Digite um numero: ")
- let n = int(System.Console.ReadLine())
- let jagged = [| for a in 1 .. n do yield [| 1 .. a |] |]
- for arr in jagged do
- for col in arr do
- printf "%i " col
- printfn ""
- 0
- principal
- System.Console.ReadKey()
- //51. Faça um programa que use a função valorPagamento para determinar o valor a ser pago por
- //uma prestação de uma conta. O programa deverá solicitar ao usuário o valor da prestação e
- //o número de dias em atraso e passar estes valores para a função valorPagamento, que calculará
- //o valor a ser pago e devolverá este valor ao programa que a chamou. O programa deverá então exibir
- //o valor a ser pago na tela. Após a execução o programa deverá voltar a pedir outro valor de prestação
- //e assim continuar até que seja informado um valor igual a zero para a prestação. Neste momento o programa
- //deverá ser encerrado, exibindo o relatório do dia, que conterá a quantidade e o valor total de prestações
- //pagas no dia. O cálculo do valor a ser pago é feito da seguinte forma. Para pagamentos sem atraso, cobrar
- //o valor da prestação. Quando houver atraso, cobrar 3% de multa, mais 0,1% de juros por dia de atraso.
- let valorPagamento valor atraso =
- let mutable V = valor
- if atraso = 0 then valor
- else V <- V + (V*3./100.)
- for i = 1 to atraso do
- V <- V + (V*0.1/100.)
- V
- let principal =
- let vetor = [|(1.0)..(99.0)|]
- let mutable ac = 0
- let mutable valor = -1.
- let mutable atraso = 0
- let mutable soma = 0.
- System.Console.WriteLine("Digite [0] no campo valor, para encerrar o programa.\n")
- while valor <> 0. do
- System.Console.WriteLine("\nDigite o valor da prestação: ")
- valor <- float(System.Console.ReadLine())
- if valor <> 0. then
- System.Console.WriteLine("Digite os dias de atraso ")
- atraso <- int(System.Console.ReadLine())
- vetor.[ac] <- (valorPagamento valor atraso)
- printf("O valor a ser pago é: R$ %.2f\n") vetor.[ac]
- soma <- soma + vetor.[ac]
- ac <- (ac+1)
- printf("Foram pagas %A prestações,com um valor total de R$%.2f\n")ac soma
- 0
- principal
- System.Console.ReadKey()
- //52. Desenha moldura. Construa uma função que desenhe um retângulo usando os caracteres ‘+’ , ‘−’ e ‘| ‘.
- //Esta função deve receber dois parâmetros, linhas e colunas, sendo que o valor por omissão é o valor
- //mínimo igual a 1 e o valor máximo é 20. Se valores fora da faixa forem informados, eles devem ser
- //modificados para valores dentro da faixa de forma elegante.
- //53. Quadrado mágico. Um quadrado mágico é aquele dividido em linhas e colunas, com um número em cada posição
- //e no qual a soma das linhas, colunas e diagonais é a mesma. Por exemplo, veja um quadrado mágico de lado 3,
- //com números de 1 a 9:
- //
- // 8 3 4
- // 1 5 9
- // 6 7 2
- //
- //Elabore uma função que identifica e mostra na tela todos os quadrados mágicos com as características acima.
- //Dica: produza todas as combinações possíveis e verifique a soma quando completar cada quadrado.
- //Usar um vetor de 1 a 9 parece ser mais simples que usar uma matriz 3x3.
- let principal =
- let matriz = Array2D.zeroCreate<int> 3 3
- for i = 0 to 2 do
- for j = 0 to 2 do
- printf("Digite um valor para posição [%A][%A] da Matriz: ")i j
- matriz.[i,j] <- int(System.Console.ReadLine())
- printf("%A") (somaH matriz)
- 0
- principal
- System.Console.ReadKey()
- //Exercícios de Programação (6a Parte)
- //54. Tamanho de strings. Faça um programa que leia 2 strings e informe o conteúdo delas seguido do seu comprimento.
- //Informe também se as duas strings possuem o mesmo comprimento e são iguais ou diferentes no conteúdo.
- //
- //Compara duas strings
- //String 1: Brasil Hexa 2006
- //String 2: Brasil! Hexa 2006!
- //Tamanho de "Brasil Hexa 2006": 16 caracteres
- //Tamanho de "Brasil! Hexa 2006!": 18 caracteres
- //As duas strings são de tamanhos diferentes.
- //As duas strings possuem conteúdo diferente.
- let principal =
- System.Console.WriteLine("Digite a primeira string: ")
- let s1 = (System.Console.ReadLine())
- System.Console.WriteLine("Digite a segunda string: ")
- let s2 = (System.Console.ReadLine())
- printf ("A string [%A] tem tamanho: %A caracteres\n") s1 (s1.Length)
- printf ("A string [%A] tem tamanho: %A caracteres\n") s2 (s2.Length)
- if s1.Length = s2.Length then printf("As duas strings tem o mesmo tamanho.\n")
- else printf("As duas strings são de tamanhos diferentes.\n")
- if s1.Equals(s2) then printf("As duas strings são iguais.\n")
- else printf("As duas strings são diferentes.")
- 0
- principal
- System.Console.ReadKey()
- //55. Nome ao contrário em maiúsculas. Faça um programa que permita ao usuário digitar o seu nome
- //e em seguida mostre o nome do usuário de trás para frente utilizando somente letras maiúsculas.
- //Dica: lembre−se que ao informar o nome o usuário pode digitar letras maiúsculas ou minúsculas.
- open System
- open System.Text
- let ReverseString (s:string) = new string(Array.rev (s.ToCharArray()))
- let mtoM letra =
- let principal =
- System.Console.WriteLine("Digite uma string: ")
- let s1 = (System.Console.ReadLine())
- printf("%A") (ReverseString s1)
- 0
- principal
- System.Console.ReadKey()
- //56. Nome na vertical. Faça um programa que solicite o nome do usuário e imprima-o na vertical.
- open System
- let principal =
- System.Console.WriteLine("Digite seu nome: ")
- let nome = System.Console.ReadLine()
- let NOME = nome.ToCharArray()
- for i = 0 to NOME.Length - 1 do
- printf("%c\n") NOME.[i]
- 0
- System.Console.ReadKey()
- //57. Nome na vertical em escada. Modifique o programa anterior de forma a mostrar o nome em formato de escada.
- open System
- let principal =
- System.Console.WriteLine("Digite seu nome: ")
- let nome = System.Console.ReadLine()
- // let NOME = nome.ToCharArray()
- for i=0 to nome.Length-1 do
- for arr in nome.[0..i] do
- printf("%c") arr
- printf("\n")
- 0
- System.Console.ReadKey()
- //58. Nome na vertical em escada invertida. Altere o programa anterior de modo que a escada seja invertida.
- open System
- let ReverseString (s:string) = new string(Array.rev (s.ToCharArray()))
- let principal =
- System.Console.WriteLine("Digite seu nome: ")
- let nome = System.Console.ReadLine()
- let mutable j = nome.Length
- while j <> 0 do
- j <- (j - 1)
- for arr in nome.[0..j] do
- printf("%c") arr
- printf("\n")
- 0
- System.Console.ReadKey()
- //59. Data por extenso. Faça um programa que solicite a data de nascimento (dd/mm/aaaa) do usuário
- //e imprima a data com o nome do mês por extenso. o Data de Nascimento: 29/10/1973 o Você nasceu
- //em 29 de Outubro de 1973.
- open System
- let comparaMeses (n : string) =
- let aux = [|"01";"02";"03";"04";"05";"06";"07";"08";"09";"10";"11";"12"|]
- let meses = [|"Janeiro";"Fevereiro";"Março";"Abril";"Maio";"Junho";"Julho";"Agosto";"Setembro";"Outubro";"Novembro";"Dezembro"|]
- let mutable ac = -1
- for i = 0 to 11 do
- if n.Equals(aux.[i]) then ac <- i
- meses.[ac]
- let principal =
- System.Console.WriteLine("Digite a sua data de nascimento no formato [dd/mm/aaaa]:")
- let dn = string(System.Console.ReadLine())
- let data = dn.Split [|'/'|]
- let str = data.[1]
- printf("%s de %s de %s") data.[0] (comparaMeses str) data.[2]
- 0
- System.Console.ReadKey()
- //60. Conta espaços e vogais. Dado uma string com uma frase informada pelo usuário (incluindo espaços em branco), conte:
- //* quantos espaços em branco existem na frase.
- //* quantas vezes aparecem as vogais a, e, i, o, u.
- open System
- let conta (str : string) (c : char) =
- let mutable ac = 0
- for i = 0 to str.Length - 1 do
- if str.[i].Equals(c) then ac <- (ac+1)
- ac
- let principal =
- System.Console.WriteLine("Digite uma frase: ")
- let frase = (System.Console.ReadLine())
- let branco = frase.Split [|' '|]
- printf("Espaços em branco: %d\n") (branco.Length - 1)
- printf("A:[%A] E:[%A] I:[%A] O:[%A] U:[%A]")
- ((conta frase 'a') + (conta frase 'A'))
- ((conta frase 'e') + (conta frase 'E'))
- ((conta frase 'i') + (conta frase 'I'))
- ((conta frase 'o') + (conta frase 'O'))
- ((conta frase 'u') + (conta frase 'U'))
- 0
- System.Console.ReadKey()
- //61. Palíndromo. Um palíndromo é uma seqüência de caracteres cuja leitura é idêntica se feita da direita para esquerda
- //ou vice−versa. Por exemplo: OSSO e OVO são palíndromes. Em textos mais complexos os espaços e pontuação são ignorados.
- //A frase SUBI NO ONIBUS é o exemplo de uma frase palíndrome onde os espaços foram ignorados. Faça um programa que leia
- //uma seqüência de caracteres, mostre−a e diga se é um palíndrome ou não.
- open System
- let palindromo (s: string) =
- let arr = s.ToCharArray()
- arr = Array.rev arr
- let principal =
- System.Console.WriteLine("Digite uma frase ou palavra: ")
- let frase = string(System.Console.ReadLine())
- let fraseReplace = frase.Replace(" ","")
- if (palindromo fraseReplace) = true then printf("A frase/palavra [%A] é um Palindromo!!\n") frase
- else printf("A frase/palavra [%A] não é um Palindromo!!") frase
- 0
- principal
- System.Console.ReadKey()
- //62. Verificação de CPF.
- //Desenvolva um programa que solicite a digitação de um número de CPF no formato xxx.xxx.xxx-xx
- //e indique se é um número válido ou inválido através da validação dos dígitos verificadores e
- //dos caracteres de formatação.
- //63. Número por extenso.
- //Escreva um programa que solicite ao usuário a digitação de um número até 99 e imprima-o na tela por extenso.
- //let extenso n =
- // let t1 = "um"
- // let t2 = "dois"
- // let t3 = "três"
- // let t4 = "quatro"
- // let t5 = "cinco"
- // let t6 = "seis"
- // let t7 = "sete"
- // let t8 = "oito"
- // let t9 = "nove"
- let extenso n =
- let mutable d = ((n/10)%10)
- let mutable u = (n%10)
- let texto = [|" ";"um";"dois";"três";"quatro";"cinco";"seis";"sete";"oito";"nove";|]
- let textoD1 = [|"dez";"onze";"doze";"treze";"quatorze";"quinze";"dezesseis";"dezessete";"dezoito";"dezenove"|]
- let textoD = [|" ";"dez";"vinte";"trinta";"quarenta";"cinquenta";"sessenta";"setenta";"Oitenta";"Noventa"|]
- let mutable retorno = ""
- for j=0 to 9 do
- for i=0 to 9 do
- if d = j then
- if u = i then
- if d = 0 then
- retorno <- texto.[u]
- d <- -1
- u <- -1
- if d = 1 then
- retorno <- textoD1.[u]
- d <- -1
- u <- -1
- if u = 0 then
- retorno <- textoD.[j]
- d <- -1
- u <- -1
- if d = j && u = i then
- retorno <- (textoD.[d] + " e " + texto.[u])
- d <- -1
- u <- -1
- retorno
- let principal =
- let mutable n = 1
- while n > 0 && n < 100 do
- System.Console.WriteLine("Digite um numero entre 0 e 99: ")
- n <- int(System.Console.ReadLine())
- printf("%s\n") (extenso n)
- 0
- principal
- System.Console.ReadKey()
- //64. Jogo da palavra embaralhada.
- //Desenvolva um jogo em que o usuário tenha que adivinhar uma palavra que será mostrada com as letras embaralhadas.
- //O programa terá uma lista de palavras lidas de um arquivo texto e escolherá uma aleatoriamente.
- //O jogador terá seis tentativas para adivinhar a palavra.
- //Ao final a palavra deve ser mostrada na tela, informando se o usuário ganhou ou perdeu o jogo.
- //65. Faça um programa que leia um arquivo texto contendo uma lista de endereços IP e gere um outro arquivo,
- //contendo um relatório dos endereços IP válidos e inválidos.
- //O arquivo de entrada possui o seguinte formato:
- //
- //200.135.80.9
- //192.168.1.1
- //8.35.67.74
- //257.32.4.5
- //85.345.1.2
- //1.2.3.4 9.8.234.5
- //192.168.0.256
- //
- //O arquivo de saída possui o seguinte formato:
- //
- //[Endereços válidos:]
- //200.135.80.9
- //192.168.1.1
- //8.35.67.74
- //1.2.3.4
- //
- //[Endereços inválidos:]
- //257.32.4.5
- //85.345.1.2
- //9.8.234.5
- //192.168.0.256
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement