quarta-feira, 27 de outubro de 2010

Lista 25 out. 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 "25 Outubro 8"
// Função :
// Autor : Gustavo Ferreira
// Data : 26/10/2010
// Seção de Declarações 
var
   i,soma:inteiro
inicio
// Seção de Comandos
   soma<-0
   escreva("Informe o numero: ")
   leia (i)
   para i de i ate 1 passo - 1 faca
      soma<-soma + i
   fimpara
   escreval("Resultado: ",soma)
fimalgoritmo

Lista 25 out. 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 "25 Outubro 7 Homens e mulheres"
// Função :
// Autor : Gustavo Ferreira
// Data : 15/10/2010
// Seção de Declarações
var
   quantidadeHomens,quantidadeMulheres,idadeMulheres,idade,mulheresAcima25Anos,n:inteiro
   pesoHomens,peso:real
   sexo:caracter
inicio
   idade<-1
   quantidadeMulheres<-0
   pesoHomens<-0
   escreval("Informe a quantidade de pessoas entrevistadas:")
   leia(n)
   se (n > 5) entao
      para n de n ate 1 passo -1 faca
         escreva("Informe o sexo: ")
         leia(sexo)
         se (sexo = "M") entao
            quantidadeHomens<-quantidadeHomens +1
            escreva("Informe o peso do homem: ")
            leia(peso)
            pesoHomens<- pesoHomens + 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)
            idadeMulheres<- idadeMulheres + idade
            se (idade > 25) entao
               mulheresAcima25Anos<- mulheresAcima25Anos + 1
            fimse
         fimse
      fimpara
      escreval()
      escreval("Media de idade das mulheres:",idadeMulheres/quantidadeMulheres)
      escreval("Peso medio dos homens:",pesoHomens/quantidadeHomens)
      escreval("Quantidade mulheres acima de 25 anos: ",mulheresAcima25Anos)
   senao
      escreval("Numero de pessoas insuficiente!")
   fimse
fimalgoritmo

Lista 25 out. 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 "25 Outubro 6"
// Função : Realizar divisao com o operador de subtracao
// Autor : Gustavo Ferreira
// Data : 26/10/2010
// Seção de Declarações
var
   i,numero,vezes:inteiro
inicio
// Seção de Comandos
   vezes<- 0
   escreval("Informe o numero:")
   leia(numero)
   escreval("Informe o divisor:")
   leia(i)
   escreval(" - - - -")
   escreva(numero," /",i," =")
   enquanto (numero >= i) faca
      vezes<-vezes+1
      numero<- numero - i
   fimenquanto
   escreva(vezes)
fimalgoritmo

Lista 25 out. 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 "25 Outubro 5"
// Função : Realizar multiplicacao com o operador de adicao
// Autor : Gustavo Ferreira
// Data : 26/10/2010
// Seção de Declarações 
var
   i,numero,soma:inteiro
inicio
// Seção de Comandos 
   soma<- 0
   escreval("Informe o numero:")
   leia(numero)
   escreval("Informe o multiplicador:")
   leia(i)
   escreval(" - - - -")
   escreva(numero," x",i," =")
   para i de i ate 1 passo -1 faca
      soma<-soma+numero
   fimpara
   escreva(soma)
fimalgoritmo

Lista 25 out. 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 "25 Outubro 4"
// Função :
// Autor :
// Data : 26/10/2010
// Seção de Declarações 
var
   n1,n2,i,divisor: inteiro
inicio
// Seção de Comandos
   escreval("Informe o numero inicial:")
   leia(n1)
   escreval("Informe o numero final:")
   leia(n2)
   
  para i de n1 ate n2 passo 1 faca
       se (i>0) entao
          se ((i mod 10) = 0) entao
             divisor<- (i div 10)
             se ((i mod divisor) = 0) entao
                escreval("Numero ",divisor," é divisor de ",i)
             fimse
          fimse
       fimse
  fimpara
fimalgoritmo

Lista 25 out. 3

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

Ja foi apresentado

Lista 25 out. 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 "25 Outubro 2"
// Função : Procurar numeros multiplos de 5 entre 600 e 700
// Autor : Gustavo Ferreira
// Data : 26/10/2010
// Seção de Declarações 
var
   i:inteiro
inicio
// Seção de Comandos
   escreval("O numeros abaixo sao multiplos de 5 e tambem de 7")
   para i de 600 ate 700 passo 1 faca
        se ((i mod 5) = 0) entao
           se ((i mod 7) = 0) entao
              escreval(i)
           fimse
        fimse
   fimpara
fimalgoritmo

Lista 25 out. 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 "25 outubro 1"
// Função :
// Autor : Gustavo Ferreira
// Data : 26/10/2010
// Seção de Declarações 
var
   soma, aux :real
   i :inteiro
inicio
// Seção de Comandos
   para i de 1 ate 35 passo 1 faca
        escreval("Informe a media do aluno ",i,":")
        leia(aux)
        soma<- soma+aux
   fimpara
   escreva("A media aritmetica da turma foi: ",soma/35)
fimalgoritmo

Capitulo 4 Homens e mulheres

algoritmo "Homens e mulheres"
// Função :
// Autor : Gustavo Ferreira
// Data : 15/10/2010
// Seção de Declarações 
var
   quantidadeHomens,quantidadeMulheres,idadeHomens,idadeMulheres,idade:inteiro
   pesoMulheres,pesoHomens,peso:real
   sexo:caracter
inicio
   idade<-1
   quantidadeHomens<-0
   quantidadeMulheres<-0
   pesoMulheres<-0
   pesoHomens<-0
   repita
      escreva("Informe o sexo:")
      leia(sexo)
      se (sexo = "M") entao
         quantidadeHomens<-quantidadeHomens +1
         escreval("Informe o peso do homem:")
         leia(peso)
         pesoHomens<- pesoHomens + peso
         escreval("Informe a idade do homem:")
         leia(idade)
         idadeHomens<- idadeHomens + idade
      senao
         quantidadeMulheres<-quantidadeMulheres +1
         escreval("Informe o peso da mulher:")
         leia(peso)
         pesoMulheres<- pesoMulheres + peso
         escreval("Informe a idade da mulher:")
         leia(idade)
         idadeMulheres<- idadeMulheres + idade
      fimse
   ate (idade=0)
   
   escreval("Media de idade das mulheres:",idadeMulheres/quantidadeMulheres)
   escreval("Peso medio dos homens:",pesoHomens/quantidadeHomens)
   escreval("Media de idade de todos:",(idadeHomens+idadeMulheres)/(quantidadeHomens+quantidadeMulheres))
   escreval("Quantidade homens (%): ",(100*quantidadeHomens)/(quantidadeHomens+quantidadeMulheres))
   escreval("Quantidade mulheres (%): ",(100*quantidadeMulheres)/(quantidadeMulheres+quantidadeMulheres))
fimalgoritmo

Exercicio capitulo 4 Tabuada

Criar um algoritmo que peça um numero e faça a tabuada para ele.
algoritmo "Calcular tabuada"
// Função :
// Autor : Gustavo Ferreira
// Data : 15/10/2010
// Seção de Declarações 
var
   numero,contador:inteiro
inicio
   contador <- 1;
   escreval("Informe o numero para trabalhar")
   leia(numero)
   repita
      escreval(contador," X",numero," =",contador*numero)
      contador <- contador + 1
   ate (contador>10)
fimalgoritmo

Exercicio 18 capitulo 3

Tendo duas notas, quanto devera tirar na terceira para a media final ser maior que 6.
algoritmo "3.18"
// Função :
// Autor : Gustavo
// Data : 28/9/2010
// Seção de Declarações 
var
   nota1,nota2:real
inicio
   escreval("Informe a nota1:")
   leia(nota1)
   
   escreval("Informe a nota2:")
   leia(nota2)
   
   se (((nota1+nota2)/3)<6) entao
      escreva("Deve tirar ",(6-((nota1+nota2)/3))*3)
   senao
      escreva("Pode tirar 0 (zero) nessa prova, so com duas provas ja atingiu ",((nota1+nota2)/3):5:2)
   fimse
fimalgoritmo

Exercicio 17 capitulo 3

Quantas cartas você pode enviar.
algoritmo "3.17"
// Função : Calcular quantos cartas voce pode enviar
// Autor : Gustavo
// Data : 28/9/2010
// Seção de Declarações 
// Obs: Parece um algoritmo grande devido à quantidade de comentarios e o tamanho do nome das variaveis.
var
   dinheiro,precoEnvelope,precoSelo:real
   qtdeCartas,qtdeEnvelopes,qtdeSelos:real
   
   precoDuplaSeloEnvelope:real
   qtdeDuplaSeloEnvelope:real
inicio
   escreval("Informe a quantia em dinheiro:")
   leia(dinheiro)
   
   escreval("Informe o preco do selo:")
   leia(precoSelo)
   
   escreval("Informe o preco do envelope:")
   leia(precoEnvelope)
   
   escreval("Informe a quantidade de envelopes que voce tem:")
   leia(qtdeEnvelopes)
   
   escreval("Informe a quantidade de selos que voce tem:")
   leia(qtdeSelos)
   
   se (qtdeEnvelopes0) entao //sobrou envelopes...
      //Bom... vamos imaginar que sobrou 10 envelopes e nenhum selo, preciso nivelar esse déficit...
      //Tenho dinheiro para comprar selos para selar os envelopes que sobrou?
      //Parece confuso eu multiplicar o preco do selo pela qtde de envelopes, mas é que a quantidade de envelopes que sobrou é a quantidade de selos que terei que comprar
      se ((precoSelo*qtdeEnvelopes)<=dinheiro) entao //ufa... ou sobrou dinheiro ou foi a quantia exata, enfim, resoloveu o défit de selos
          qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + qtdeEnvolopes // mais cartas seladas...
          dinheiro<- dinheiro - (precoSelo*qtdeEnvelopes) //debitando a bufunfa...
          qtdeEnvelope<- 0
      senao
         //Bom... nao deu para comprar todos os selos..
         //imaginemos que cada selo custe 1 real, tenho 5 reais sobrando e preciso selar 10 envelopes. É óbvil que só vou conseguir selar metade, ou seja, 0.5 dos envelopes. Essa porcentagem de envelopes vezes o preco de cada selo dá a quantidade de selos que posso comprar.
         qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope +  ((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes
         //Descontando dos envelopes que sobrou.
         qtdeEnvelopes<- qtdeEnvelopes - ((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes
         //debitando do dinheiro...
         dinheiro<- dinheiro - (((dinheiro)/(qtdeEnvelopes*precoSelo))*qtdeEnvelopes)*precoSelo
      fimse
   senao
      se (qtdeSelos>0) entao //sobrou selos...
         //Bom... vamos imaginar que sobrou 10 selos e nenhum envelope, preciso nivelar esse déficit...
         //Tenho dinheiro para comprar evelopes suficientes para usar os selos que sobrou?
         //Parece confuso eu multiplicar o preco do envelope pela qtde de selos que sobrou, é que precisarei comprar de envelopes a qtde de selos que sobrou.
         se ((precoEnvelope*qtdeSelos)<=dinheiro) entao //ufa... ou sobrou dinheiro ou foi a quantia exata, enfim, resoloveu o défit de envelopes
             qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + qtdeSelos // mais cartas seladas...
             dinheiro<- dinheiro - (precoEnvelope*qtdeSelos) //debitando a bufunfa...
             qtdeSelos<- 0
         senao
            //Bom... nao deu para comprar todos os envelopes..
            //imaginemos que cada envelope custe 1 real, tenho 5 reais sobrando e preciso usar meus 10 selos sobrando. É óbvil que só vou conseguir comprar metade dos envelopes necessarios, ou seja, 0.5 dos selos. Essa porcentagem de selo vezes o preco de cada envelope dá a quantidade de envelopes que posso comprar.
            qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope +  ((dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos
            //Descontando dos selos que sobrou.
            qtdeSelos<- qtdeSelos - (dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos
            //debitando do dinheiro...
            dinheiro<- dinheiro - ((dinheiro)/(qtdeSelos*precoEnvelope))*qtdeSelos)*precoEnvelope
         fimse
      fimse
   fimse
   // No teste acima, veja que nao testei se sobrou os dois (selos e envelopes), pois é impossivel, pois se sobrou dos dois dari para fazer mais pares. (aula do joao, ou sobrou selo, ou e se somente selos, mas nao ambos)
   // Tambem nao testei se selos e envelopes foram zerados, pois se isso aconteceu, nao precisaria nivelar o deficit.
   // Bom, deficit's nivelado ou quase.
   
   //Agora vamos ver se sobrou dinheiro e ver quantos pares (1 envelope e 1 selo) posso comprar
   se (dinheiro>0) entao
      precoDuplaSeloEnvelope<- precoSelo+precoEnvelope
      escreval(dinheiro div precoDuplaSeloEnvelope)
      qtdeDuplaSeloEnvelope<- qtdeDuplaSeloEnvelope + (dinheiro div precoDuplaSeloEnvelope) // sem casas decimas, nao existe meia carta.
      //pronto, ja sabemos quantas cartas voce pode enviar usando somente o seu dinheiro.
      dinheiro<- dinheiro - (dinheiro div precoDuplaSeloEnvelope):5:2
   fimse
   
   //escreval(98.89871 div 1)
   escreval("Voce pode enviar ",qtdeDuplaSeloEnvelope," cartas")
   escreval("Sobrou ",qtdeEnvelopes," envelopes")
   escreval("Sobrou ",qtdeSelos," selos")
   escreva("Sobrou R$ ",dinheiro:5:2)
   
fimalgoritmo