sexta-feira, 19 de novembro de 2010

Exercício 5-6 Escreva algoritmo que leia os nomes e conceitos dos alunos de uma turma de tamanho máximo 60. O algoritmo deverá, para todos os alunos lidos, colocar em uma matriz o nome do aluno na primeira coluna e sua situação na segunda coluna: “aprovado”, se o conceito do aluno for superior a 0; “reprovado” caso contrário. Os conceitos vão de 0 a 4, estando reprovados os alunos cujo conceito é o 0. O algoritmo pára de ler quando o nome informado for “fim” ou tenham sido lidos o nome e o conceito de 60 alunos tamanho máximo da turma).

algoritmo "nomes e conceitos dos alunos"

var
   matriz:vetor[1..2,1..60] de literal
   vetconceito:vetor[1..60] de inteiro
   i,k:inteiro
inicio
      i<-0
      k<-0
      repita
            i<-i+1
            escreval("Digite o nome do",i,"º Aluno")
            leia(matriz[1,i])
         se (matriz[1,i]<>"fim") entao
            repita
            escreval("Digite o conceito do",i,"º Aluno")
            leia(vetconceito[i])
            ate ((vetconceito[i]>=0) e (vetconceito[i]<4))
            k<-k+1
         fimse
      ate ((i>=60) ou (matriz[1,i]="fim"))
      i<-0
      repita
            i<-i+1
            se (vetconceito[i]=0) entao
               matriz[2,i]<-"Reprovado"
            senao
                 matriz[2,i]<-"Aprovado"
            fimse
      ate ((i>=60) ou (i>=k))
      escreval("************  RESULTADO  ***********")
      escreval
      para i de 1 ate 60 faca
           se ((matriz[1,i]<>"")e(matriz[1,i]<>"fim"))entao

              escreval(matriz[1,i]," -- ",matriz[2,i])
           fimse
      fimpara   
fimalgoritmo

Exercício 5-5 Escreva algoritmo que leia caracteres em dois vetores vetA e vetB, de cinco posições.Após os dois vetores terem sido lidos, o algoritmo deverá colocar em um terceiro vetor vetC a diferença dos dois primeiro, i.e., os caracteres que estão contido em vetA e não estão contido em vetV. Por exemplo, se vetA = { “A”, “E”, “F”, “6“,“?”} e vetB = { “F”, “3”, “?”, “F“,“H”,“E”} então vetC = { “A”,“6“}

algoritmo "Interseção de Vetores A e B"

var
vetA,vetB:vetor[1..5] de literal
   vetC,vetCFinal:vetor[1..10] de literal
   contador,contadorC:inteiro
   qtdeEncontrada,posicaoEncontrada: inteiro
inicio
      contadorC<-1
      qtdeEncontrada<-1
     
   para contador de 1 ate 5 faca
        escreval("Informe um valor para A:")
        leia(vetA[contador])
        vetC[contadorC]<-vetA[contador]
        contadorC<- contadorC+1
        escreval("Informe um valor para B:")
        leia(vetB[contador])
        vetC[contadorC]<-vetB[contador]
        contadorC<- contadorC+1
   fimpara
  
   para contador de 1 ate 10 faca
        qtdeEncontrada<-0
        para contadorC de 1 ate 10 faca
             se (vetC[contador] <> vetC[contadorC]) entao
                qtdeEncontrada<- qtdeEncontrada+1
                se (qtdeEncontrada>1) entao
                   vetC[contadorC]<- ""
                fimse
             fimse
        fimpara
   fimpara
  
   contadorC<-1
   para contador de 1 ate 10 faca
        se (vetC[contador] <> "") entao
           vetCFinal[contadorC]<- vetC[contador]
           contadorC<-contadorC+1
        fimse
   fimpara
  
   para contador de 1 ate 10 faca
        se (vetCFinal[contador] <> "") entao
           escreval("Valor: ",vetCFinal[contador])
        fimse
   fimpara
fimalgoritmo

Exercício 5-4 Escreva um algoritmo que leia caracteres em dois vetores vetA e vetB, de cinco posições. Após os dois vetores terem sido lidos, o algoritmo deverá colocar em um terceiro vetor vetC o resultado da união dos dois primeiros, i.e., os caracteres que estão contidos em um ou outro vetor. Assuma que em um mesmo vetor não haverá caracteres repetidos, mas uma caracter contido em vetA poderá também estar contido em vetB. Nesse caso, apenas uma ocorrência é colocada em vetC. Por exemplo, se vetA = { “A”, “E”, “F”, “6“,“?”} vetB = { “F”, “3”, “?”, “F“,“H”,“E”} vetC = { “A”, “E”, “F”, “6“,“?”,”E”,“H”}

algoritmo "União de Vetores A e B"

var
vetA,vetB:vetor[1..5] de literal
   vetC,vetCFinal:vetor[1..10] de literal
   contador,contadorC:inteiro
   qtdeEncontrada,posicaoEncontrada: inteiro
inicio
      contadorC<-1
      qtdeEncontrada<-1
      
   para contador de 1 ate 5 faca
        escreval("Informe um valor para A:")
        leia(vetA[contador])
        vetC[contadorC]<-vetA[contador]
        contadorC<- contadorC+1
        escreval("Informe um valor para B:")
        leia(vetB[contador])
        vetC[contadorC]<-vetB[contador]
        contadorC<- contadorC+1
   fimpara
para contador de 1 ate 10 faca
        qtdeEncontrada<-0
        para contadorC de 1 ate 10 faca
             se (vetC[contador] = vetC[contadorC]) entao
                qtdeEncontrada<- qtdeEncontrada+1
                se (qtdeEncontrada>1) entao
                   vetC[contadorC]<- ""
                fimse
             fimse
        fimpara
   fimpara
  
   contadorC<-1
   para contador de 1 ate 10 faca
        se (vetC[contador] <> "") entao
           vetCFinal[contadorC]<- vetC[contador]
           contadorC<-contadorC+1
        fimse
   fimpara
  
   para contador de 1 ate 10 faca
        se (vetCFinal[contador] <> "") entao
           escreval("Valor: ",vetCFinal[contador])
        fimse
   fimpara
fimalgoritmo

Exercício 5-3 Seja o seguinte algoritmo: 01. algoritmo “semnome” 02. var 03. vetA, vetB, vetC: vetor[1..5] de literal 04. i, j, k : numérico 05. achou : lógico 06. início 07. i <- 1 08. repita 09. escreva(“Entre com”, i, “o elemento do vetor A”) 10. leia(vetA[i]) 11. escreva(“Entre com”, i, “o elemento do vetor B”) 12. leia(vetB[i]) 13. i < i + 1 14. até i > 5 15. i <-1 16. repita 17. vetC[i] <- “” 18. i < i + 1 19. até i > 5 20. i <- 1 21. k <- 1 22. repita 23. j <- 1 24. achou <- FALSO 25. repita 26. se vetA[j] = vetB[j] então 27. vetC[k] <- vetA[i] 28. k <- k+1 29. achou <- VERDADEIRO 30. fimse 31. j <- j+1 32. até (j > 5) ou achou 33. i <- i+1 34. até i > 5 35. fimalgoritmo Determine o conteúdo final de vetC, mostrando o teste de mesa completo utilizado para tal, supondo que os valores lido foram “k”, “d”, “j”, “s”, “d”, “k”, “s”, “j”, “h” e “m”,nessa ordem.

Teste de mesa:      
        [1]  [2]   [3]   [4]   [5]                                 I        J    K       Achou
vetA  k     j      d     s       h                                  1       1    1        falso
vetB  d     s      r     j        m                                 2       2
vetC  -     -      -     -       -                                   3
                                                                           4
                                                                           5
                                                                           6
                                                                           1
                                                                           2
                                                                           3
                                                                           4
                                                                           5
                                                                           6
                                                                           1


Resposta: vetC não recebeu nenhum valor, pois as posições não se repetiram e achou recebeu FALSO.

Exercício 5-2 Escreva um algoritmo que leia o nome dos alunos de uma turma de tamanho indefinido (mas não superior a 60) e sua nota em uma prova (0 a 10; o algoritmo deve verificar se a nota fornecida é válida). O algoritmo pára de ler quando o nome do aluno fornecido for vazio (“”). Para cada aluno, o algoritmo deve escrever seu nome e sua nota normalizada, dada pela fórmula: NNi = Ni X 10/Nmax (5.5) Onde NNi é a nota normalizada do i-ésimo aluno, Ni é sua nota original, e Nmax é a nota máxima obtida dentre todos os alunos da turma.

algoritmo "Nota de cada aluno normalizada"

var
 nomes: vetor [1..60] de literal
 notas: vetor [1..60] de real
 notaMaxima, notaNormalizada: real
 i, k: inteiro

inicio
 i <- 1
 repita
   escreva("Digite o nome do aluno: ")
   leia (nomes[i])
   se (nomes[i] <> "") entao
      repita
         escreva ("Digite a nota do aluno: ")
         leia ( notas[i])
      ate ((notas[i] >=0) e (notas[i] <= 10))
      i <- i+1
   fimse
 ate ((i >= 60) ou (nomes[i] = ""))
 k <- i
 notaMaxima <- notas[1]
 para i de 2 ate k faca
    se (notas[i] > notaMaxima) entao
        notaMaxima <- notas[i]
    fimse
 fimpara
 escreval (" Abaixo a listagem dos nomes e das notas normalizadas: ")
   para i de 1 ate k faca
     notaNormalizada <- notas[i] * (10/notaMaxima)
     escreval (nomes[i], "  -  ", notaNormalizada)
   fimpara
 fimalgoritmo

Exercício 5-1 Escreva um algoritmo que calcule e coloque em um vetor os números de 1 a n cuja raiz quadrada é um número inteiro ímpar. Por exemplo, 1, 9, 25, 49,...O valor de n deve ser lido, sendo que n ≤1000.

algoritmo "Raiz Quadrada"

var
 numero, divisaoComResto, i, k: inteiro
 vet: vetor[1..1000] de inteiro

inicio
 repita
   escreva("Digite um número entre 1-1000: ")
   leia (numero)
 ate ((numero <= 1000) e (numero > 0))
 k <- 1
 para i de 1 ate numero faca
   se (( i mod 2) = 1) entao
       divisaoComResto <- i*i
       vet[k] <-  divisaoComResto
       k <- k + 1
   fimse
 fimpara
 para i de 1 ate (k-1) faca
    escreval (vet[i])
 fimpara
 fimalgoritmo

sábado, 30 de outubro de 2010

Lista 25 de outubro - 8)Fazer um programa para calcular a soma dos N primeiros números, onde N é lido. Ex.: N=5. Soma = 1+2+3+4+5

algoritmo "Calcular a soma dos primeiros números"

var
   n,soma:inteiro
inicio
   soma<-0
   escreva ("Informe o numero: ")
   leia (n)
   para n de n ate 1 passo - 1 faca
      soma <- soma + n
   fimpara
   escreva ("O resultado da soma dos primeiros números eh: ",soma)
fimalgoritmo

7) Leia um numero N (inteiro, positivo >5). Depois, leia para um determinado grupo de pessoas (N) as seguintes informações: Idade Peso Sexo Este programa deve fornecer como saída: a) A média dos pesos dos homens; b) A média das idades das mulheres; c) Quantas mulheres acima de 25 anos;

algoritmo "Informações sobre idade, peso, sexo"

var
   grupoPessoas, quantidadeHomens,quantidadeMulheres,mediaIdadeMulheres,idade,mulheresAcima25Anos:inteiro
   mediaPesoHomens,peso:real
   sexo:caracter
inicio
   idade<-1
   quantidadeMulheres<-0
   mediapesoHomens <- 0
   escreval("Entre com a quantidade de pessoas:")
   leia(grupoPessoas)
   se (grupoPessoas > 5) entao
      para grupoPessoas de grupoPessoas ate 1 passo -1 faca
         escreva("Informe o sexo M ou F: ")
         leia(sexo)
         se (sexo = "M") entao
            quantidadeHomens<-quantidadeHomens +1
            escreva("Informe o peso do homem: ")
            leia(peso)
            mediaPesoHomens<- mediaPesoHomens + peso
            escreva("Informe a idade do homem: ")
            leia(idade)
         senao
            quantidadeMulheres<-quantidadeMulheres +1
            escreva("Informe o peso da mulher: ")
            leia(peso)
            escreva("Informe a idade da mulher: ")
            leia(idade)
            mediaIdadeMulheres<- mediaIdadeMulheres + idade
            se (idade > 25) entao
               mulheresAcima25Anos<- mulheresAcima25Anos + 1
            fimse
         fimse
      fimpara
      escreval("A média de peso dos homens eh: ",mediaPesoHomens/quantidadeHomens)
      escreval(" A media de idade das mulheres eh: ",mediaIdadeMulheres/quantidadeMulheres)
      escreval("Há ",mulheresAcima25Anos, " mulheres acima de 25 anos",)
   senao
      escreval("O grupo de pessoas é menor que 5")
   fimse
fimalgoritmo

Lista dia 25 de outubro - 6) Faça um programa que seja capaz de calcular o resultado de uma operação de divisão inteira (x dividido y), utilizando-se para isso apenas do operador de subtração (-). Ex.: 12 / 3 = 4 = 12-3=9-3=6-3=3-3=0 (4 vezes)

algoritmo "calcular o resultado de uma operação de divisão inteira com a subtração"

var
   x,y,subtracao:inteiro
inicio
  subtracao <- 0
   escreva("Entre com um número: ")
   leia(x)
   escreva("Entre com um número divisor: ")
   leia(y)
        se x < y entao
         escreva ("Não é possível fazer uma divisão inteira")
        fimse
   escreva(x," / ",y," = ")
   para x de x ate 1 passo -1 faca
      subtracao <- subtracao 1
      x <- y - x
   fimpara
   escreva(subtracao)

fimalgoritmo

5) Faça um programa que seja capaz de calcular o resultado de uma operação de multiplicação (x vezes y), utilizando-se para isso apenas do operador de soma (+). Ex.: 12 * 3 = 36 = 12+12+12 (3 vezes)

algoritmo "calcular o resultado de uma operação de multiplicação em soma"

var
   x,y, soma, soma:inteiro
inicio
   soma<- 0
   escreva("Entre com um número:")
   leia(x)
   escreva("Entre com um número multiplicador:")
   leia(y)
   escreva(x," x ",y," = ")
      para y de y ate 1 passo -1 faca
       soma <- soma+x

      fimpara
       escreva(soma)

fimalgoritmo

4) Faça um programa para achar todos os números inteiros e positivos entre dois números lidos (N1 e N2), tais que: a) Não terminem em zero; b) Se o dígito à direita for removido, o número restante seja divisor do número original. (ex: 39 (3 é divisor de 39).

algoritmo "Números Inteiros e Positivos "

var
            n, n1, n2, k: inteiro

inicio
            escreva ("Entre com o primeiro número inteiro: ")
            leia (n1)
            escreva ("Entre com o segundo número inteiro: ")
            leia (n2)
            escreval ("Os Números são: ")
            n <- n1
               enquanto n < n2 faca
                    se ((n mod 10) <> 0) entao
                        k <- n div 10
                             se (k <> 0) entao
                                  se ((n mod k) = 0) entao
                                      escreval (n)
                                 fimse
                             fimse
                     fimse
                  n <- n+1
               fimenquanto
fimalgoritmo

3) Faça um programa que, dado um número, imprima a sua tabuada completa.

algoritmo "Tabuada"

var
 i, x, resultado:inteiro

inicio
            escreval ( "Digite o número para a tabuada: ")
             leia (x)
     para i de i ate 10 faca
                      resultado <- x*i
                          escreval (i, "x", x, " = ", resultado)
                 fimpara
fimalgoritmo

Lista dia 25 de outubro - 2) Faça um programa que mostre na tela o(s) número(s) dentro do intervalo entre 600 e 700 que sejam múltiplos de 5 e também de 7.

algoritmo "múltiplos de 5 e 7 no intervalo de 600 à 700"

var
m:inteiro

inicio
            m <- 600
            escreval ("São Múltiplos de 5 e 7:")
                para m de 600 ate 701 faca
                     se (( m mod 5)=0) e  ((m mod 7) = 0) entao
                         escreva (m, " - ")
                     fimse
                     m <- m+1
                fimpara
fimalgoritmo

Lista dia 25 de outubro -1-)Faça um programa que calcule a média aritmética de 35 alunos do curso de Algoritmos. Use comandos de repetição.

algoritmo "Média"

var
media, nota, soma:real
i:inteiro

inicio
   soma <- 0
     para i de 1 ate 35 faca
        escreva("Digite a ", i, " a. nota: ")
        leia (nota)
        soma <- soma+nota
     fimpara
   media<-soma/35
   escreva (" A média dos 35 alunos eh: ", media:5:2)
fimalgoritmo

segunda-feira, 27 de setembro de 2010

3-18. Escreva um algoritmo que leia as notas das duas primeiras provas de um aluno e calcule qual o valor mínimo da terceira nota, para que seja aprovado, considerando a média mínima das 3 provas 6.0.

lgoritmo "Aluno Aprovado"
var
prova1, prova2, proximaProva, media: numerico
inicio
 escreval ("Calcular nota para aluno ser aprovado ")
 escreva ("Informe a primeira nota: ")
 leia (prova1)
 escreva ("Informe a segunda nota: ")
 leia (prova2)
  proximaProva <- (prova1 + prova2) - 18
  media <- (prova1 + prova2 + proximaProva) / 3
  se (media >= 6.0) entao
      escreva ("O aluno foi aprovado com: ", media:5:2, " de média.")
  senao
      escreva ("O aluno foi reprovado" )
  fimse
   fimalgoritmo

3-17. Escreva um algoritmo que leia a quantia em dinheiro que uma pessoa tem para enviar cartas, o preço de um envelope, o preço de um selo, a quantidade de selos que a pessoa já tem e a quantidade de envelopes que a pessoa também já tem. Calcular e informar quantas cartas a pessoa pode enviar.

algoritmo "Votação para o Senado"
var
nome1, nome2, nome3: literal
votos1, votos2, votos3: numerico
inicio
 escreval ("Clacule o senador mais votado ")
 escreva ("Informe o nome do candidato 1: ")
 leia (nome1)
 escreva ("Informe a quantidade de votos do candidato 1: ")
 leia (votos1)
 escreva ("Informe o nome do candidato 2: ")
 leia (nome2)
 escreva ("Informe a quantidade de votos do candidato 2: ")
 leia (votos2)
 escreva ("Informe o nome do candidato 3: ")
 leia (nome3)
 escreva ("Informe a quantidade de votos do candidato 3: ")
 leia (votos3)
 se (votos1 > votos2) e (votos1 > votos3) entao
     escreva ("Maior Votação é do candidato: ", nome1)
 senao
     se (votos2 > votos1) e (votos2 > votos3) entao
         escreva ("Maior Votação é do candidato: ", nome2)
     senao
         se (votos3 > votos1) e (votos3 > votos2) entao
             escreva ("Maior Votação é do candidato: ", nome3)
         senao
             se (votos1 > votos2) e (votos1 = votos3) entao
                escreva ("Maior Votação são dos candidatos: ", nome1, " e " , nome3)
             senao
                 se (votos1 > votos3) e (votos1 = votos2) entao
                     escreva ("Maior Votação são dos candidatos: ", nome1, " e " , nome2)
                 senao
                     se (votos2 > votos1) e (votos2 = votos3) entao
                        escreva ("Maior Votação são dos candidatos: ", nome2, " e " , nome3)
                     senao
                         se (votos1=votos2) e (votos1=votos3) entao
                             escreva ( " Os candidatos: ", nome1, ", " , nome2, " e ", nome3, " tiveram a mesma quantidade de votos." )
                         fimse
                     fimse
                 fimse
             fimse
         fimse
     fimse
 fimse
 fimalgoritmo

3-16. Escreva um algoritmo que leia o nome de 3 candidatos ao Senado, com suas votações. Escreva o nome do candidato mais votado, e em caso de impate, escreva o nome dos mais votados

algoritmo "Votação para o Senado"
var
nome1, nome2, nome3: literal
votos1, votos2, votos3: numerico
inicio
 escreval ("Clacule o senador mais votado ")
 escreva ("Informe o nome do candidato 1: ")
 leia (nome1)
 escreva ("Informe a quantidade de votos do candidato 1: ")
 leia (votos1)
 escreva ("Informe o nome do candidato 2: ")
 leia (nome2)
 escreva ("Informe a quantidade de votos do candidato 2: ")
 leia (votos2)
 escreva ("Informe o nome do candidato 3: ")
 leia (nome3)
 escreva ("Informe a quantidade de votos do candidato 3: ")
 leia (votos3)
 se (votos1 > votos2) e (votos1 > votos3) entao
     escreva ("Maior Votação é do candidato: ", nome1)
 senao
     se (votos2 > votos1) e (votos2 > votos3) entao
         escreva ("Maior Votação é do candidato: ", nome2)
     senao
         se (votos3 > votos1) e (votos3 > votos2) entao
             escreva ("Maior Votação é do candidato: ", nome3)
         senao
             se (votos1 > votos2) e (votos1 = votos3) entao
                escreva ("Maior Votação são dos candidatos: ", nome1, " e " , nome3)
             senao
                 se (votos1 > votos3) e (votos1 = votos2) entao
                     escreva ("Maior Votação são dos candidatos: ", nome1, " e " , nome2)
                 senao
                     se (votos2 > votos1) e (votos2 = votos3) entao
                        escreva ("Maior Votação são dos candidatos: ", nome2, " e " , nome3)
                     senao
                         se (votos1=votos2) e (votos1=votos3) entao
                             escreva ( " Os candidatos: ", nome1, ", " , nome2, " e ", nome3, " tiveram a mesma quantidade de votos." )
                         fimse
                     fimse
                 fimse
             fimse
         fimse
     fimse
 fimse
 fimalgoritmo

3-15. Escreva um algoritmo que leia duas datas, na forma dia, mês e ano, e informe qual é a mais recente.

algoritmo "Informe a data recente"
var
ano1, ano2, mes1, mes2, dia1, dia2, primeiraData, segundaData: inteiro
inicio
 escreval ("Qual é a data mais recente ")
 escreva ("Informe o ano da primeira data: ")
 leia (ano1)
 escreva ("Informe o mês da primeira data: ")
 leia (mes1)
 escreva ("Informe o dia da primeira data: ")
 leia (dia1)
 escreva ("Informe o ano da segunda data: ")
 leia (ano2)
 escreva ("Informe o mês da segunda data: ")
 leia (mes2)
 escreva ("Informe o dia da segunda data: ")
 leia (dia2)
 primeiraData <- (ano1*365) + (mes1*30) + dia1
 segundaData <- (ano2*365) + (mes2*30) + dia2
 se primeiraData > segundaData entao
    escreva ("A data mais recente é a Primeira Data: ", ano1, " de ", mes1, " de" , dia1)
 senao
    escreva ("A data mais recente é a Segunda Data: ", ano2, " de ", mes2, " de" , dia2)
 fimse

  
fimalgoritmo

3-14 - Escreva um algoritmo que leia 3 valores correspondentes ao dia, mês e ano de nascimento de uma pessoa e outros três valores correspondentes ao dia, mês e ano do dia corrente. O algoritmo deve escrever a idade da pessoa.

algoritmo "Calcule a idade"
var
ano, mes, dia, diaNascimento, mesNascimento, anoNascimento, diaAtual, mesAtual, anoAtual: real
inicio
 escreval ("Calcule a idade ")
 escreva ("Informe o dia do nascimento: ")
 leia (diaNascimento)
 escreva ("Informe o mês do nascimento: ")
 leia (mesNascimento)
 escreva ("Informe o ano do nascimento: ")
 leia (anoNascimento)
 escreva ("Informe o dia de hoje: ")
 leia (diaAtual)
 escreva ("Informe o mês corrente: ")
 leia (mesAtual)
 escreva ("Informe o ano corrente: ")
 leia (anoAtual)
  ano <- anoAtual - anoNascimento
  mes <- mesAtual - mesNascimento
  dia <- diaAtual - diaNascimento
  escreva (" Você tem hoje: ", ano, " ano(s) ", mes, " mês(es) e ", dia, " dia(s)")
  
fimalgoritmo

3-13 - Escreva um algoritmo que leia a altura (em metros), o peso (em quilogramas) e o sexo ("Masculino" ou Feminino") e calcule seu peso ideal, dado por: peso ideal homem = (72,7 x altura) - 58 ou peso ideal da mulher = (62,1x altura) - 44. O algoritmo deve, também, informar se a pessoa está abaixo ou acima de seu peso ideal em quilos.

algoritmo "Peso Ideal"
var
altura: numerico
peso, pesoIdealHomem, pesoIdealMulher, pesoAcima, pesoAbaixo: real
sexo: literal
inicio
 escreval ("Calcule o peso ideal ")
 escreva ("Informe o peso em quilograma: ")
 leia (peso)
 escreva ("Informe a altura em metros: ")
 leia (altura)
 escreva ("Informe o sexo, masculino (m) ou feminino (f): ")
 leia (sexo)
   se (sexo = "m") entao
     pesoIdealHomem <- (72.7 * altura) - 58
       se (pesoIdealHomem < peso) entao
         pesoAcima <- peso - pesoIdealHomem
           escreva (" Você está com: ", pesoAcima:5:2, " kg acima de seu peso ideal")
       senao
         se (pesoIdealHomem > peso) entao
           pesoAbaixo <- pesoIdealHomem - peso
              escreva (" Você está com: ", pesoAbaixo:5:2, " kg abaixo de seu peso ideal")
         fimse
       fimse
   fimse
 se (sexo = "f") entao
     pesoIdealMulher <- (62.1 * altura) - 44.77
       se (pesoIdealMulher < peso) entao
         pesoAcima <- peso - pesoIdealMulher
           escreva (" Você está com: ", pesoAcima:5:2, " kg acima de seu peso ideal")
       senao
         se (pesoIdealMulher > peso) entao
           pesoAbaixo <- pesoIdealMulher - peso
              escreva (" Você está com: ", pesoAbaixo:5:2, " kg abaixo de seu peso ideal")
         fimse
       fimse
   fimse
  
fimalgoritmo

3-12 Escreva um algoritmo que leia as notas das três provas de um aluno (p1, p2 e p3), calcule sua média artmética e escreva-a. As notas devem estar no intervalor (0,10).

lgoritmo "Média de 3 Provas"
var
prova1, prova2, prova3, media: real
inicio
 escreval ("Calcule a média das 3 provas")
 escreva ("Informe a nota da prova 1: ")
 leia (prova1)
 escreva ("Informe a nota da prova 2: ")
 leia (prova2)
 escreva ("Informe a nota da prova 3: ")
 leia (prova3)
  se (prova1 >= 0) e (prova1<= 10) entao
     se (prova2 >= 0) e (prova2<= 10) entao
        se (prova3 >= 0) e (prova2<= 10) entao
            media <- (prova1+prova2+prova3)/3
        fimse
     fimse
  fimse
 escreva (" A média das 3 provas eh: ", media:5:2)
fimalgoritmo

3-11 - Escreva um algoritmo que leia um dia, mês e ano e escreva, para essa data lida, o número de dias transcorridos no ano.

algoritmo "Dias transcorridos no ano"
var
dia, mes, ano, diasCorridos: inteiro
inicio
  escreval ("Calcule os dias transcorridos de uma data")
  escreva ("Informe a dia: ")
  leia (dia)
  escreva ("Informe o mês: ")
  leia (mes)
  escreva ("Informe o ano: ")
  leia (ano)
  se ((ano%4) = 0) entao
    diasCorridos <- 366
  senao
    diasCorridos <- 365
  fimse
  se (mes=12) entao
    diasCorridos <- diasCorridos - 31
    diasCorridos <- diasCorridos + dia
  senao
    diasCorridos <- diasCorridos - 31
    se (mes=11) entao
      diasCorridos <- diasCorridos - 30
      diasCorridos <- diasCorridos + dia
    senao
      diasCorridos <- diasCorridos - 30
      se (mes=10) entao
        diasCorridos <- diasCorridos - 31
        diasCorridos <- diasCorridos + dia
      senao
        diasCorridos <- diasCorridos - 31
        se (mes=09) entao
          diasCorridos <- diasCorridos - 30
          diasCorridos <- diasCorridos + dia
        senao
          diasCorridos <- diasCorridos - 30
          se (mes=08) entao
            diasCorridos <- diasCorridos - 31
            diasCorridos <- diasCorridos + dia
          senao
            diasCorridos <- diasCorridos - 31
            se (mes=07) entao
              diasCorridos <- diasCorridos - 31
              diasCorridos <- diasCorridos + dia
            senao
              diasCorridos <- diasCorridos - 31
              se (mes=06) entao
                diasCorridos <- diasCorridos - 30
                diasCorridos <- diasCorridos + dia
              senao
                diasCorridos <- diasCorridos - 30
                se (mes=05) entao
                    diasCorridos <- diasCorridos - 31
                    diasCorridos <- diasCorridos + dia
                senao
                   diasCorridos <- diasCorridos - 31
                   se (mes=04) entao
                     diasCorridos <- diasCorridos - 30
                     diasCorridos <- diasCorridos + dia
                   senao
                     diasCorridos <- diasCorridos - 30
                     se (mes=03) entao
                        diasCorridos <- diasCorridos - 31
                        diasCorridos <- diasCorridos + dia
                     senao
                        diasCorridos <- diasCorridos - 31
                        se (mes=02) entao
                           se ((ano%4) = 0) entao
                               diasCorridos <- diasCorridos - 29
                               diasCorridos <- diasCorridos + dia
                           senao
                              diasCorridos <- diasCorridos - 28
                              diasCorridos  <- diasCorridos + dia
                           fimse
                        senao
                           diasCorridos <- dia
                        fimse
                     fimse
                   fimse
                fimse
              fimse
             fimse
          fimse
        fimse
      fimse
    fimse
  fimse

  escreva ("O total de dias corridos eh: ", diasCorridos)
fimalgoritmo

sábado, 18 de setembro de 2010

Cap. 3 -Exercício 3-10-Escreva um algoritmo que leia o nome de um nadador e sua idade. O algoritmo deve escrever A categoria de Marcos é INFANTIL B. A categoria é determinada conforme abaixo: • nadadores com idade entre 5 e 7 anos são da categoria INFANTIL A; • nadadores com idade entre 8 e 10 anos são da categoria INFANTIL B; • nadadores com idade entre 11 e 13 anos são da categoria JUVENIL A; • nadadores com idade entre 14 e 18 anos são da categoria JUVENIL B;e • nadadores com idade superior a 18 anos são da categoria SÊNIOR;

algoritmo "Classificar Categoria de Nadador por idade com nome"

var
 idade: inteiro
 nome: literal

inicio
 escreval ("Informe o nome do nadador: ")
 leia (nome)
 escreval ("Informe a idade do nadador")
 leia (idade)
 escreval
 se (idade < 5) entao
   escreva ("O nadador ", nome, " Não Compete")
 senao
   se (idade >= 5) e (idade <=7) entao
     escreva ("A categoria de ", nome , " eh Infantil A")
   senao
     se (idade >= 8) e (idade <=10) entao
       escreva ("A categoria de ", nome , " eh Infantil b")
     senao
       se(idade >= 11) e (idade <=13) entao
         escreva ("A categoria de ", nome , " eh Juvenil A")
       senao
         se (idade >=14) e (idade <=17) entao
           escreva ("A categoria de ", nome , " eh Juvenil B")
         senao
           escreva ("A categoria de ", nome , " eh SÊNIOR")
         fimse
       fimse
     fimse
   fimse
 fimse
fimalgoritmo