3) Loops

Loops

Objetivos:

Este laboratório tem por objetivo introduzir o uso de desvio condicional utilizando-se dos comandos while(), do-while() e for().

Fundamentos:

Através da repetição de uma estrutura simples, é esperado que o aluno fixe o uso de loops condicionais, bloco e estrutura básica de um programa em "C".

Trabalho:

  1. Faça um programa que imprima todos os números ímpares menores do que n.
  2. Faça um programa que imprima os n primeiros números ímpares.
  3. Implemente uma calculadora que some dois números. Para isso faça um programa que leia dois números e imprima a soma. O programa termina quando o usuário entrar com os dois números iguais a zero.
  4. Faça um programa que imprima a tabuada de um número lido. Não vale usar 10 printf()!!!
  5. Exemplo:
  6. Entrada de Dados Saída de Dados
  7. 5 5 x 1 = 5
  8. 5 x 2 = 10
  9. 5 x 3 = 15
  10. ...
  11. 5 x 9 = 45
  12. 5 x 10 = 50
  13. Aproveitando o programa anterior, faça um programa que imprima toda a tabuada.
  14. Exemplo:
  15. 1 x 1 = 1
  16. 1 x 2 = 2
  17. 1 x 3 = 3
  18. ...
  19. 1 x 10 = 10
  20. 2 x 1 = 2
  21. 2 x 2 = 4
  22. ...
  23. 2 x 10 = 20
  24. ...
  25. 10 x 1 = 10
  26. 10 x 2 = 20
  27. ...
  28. 10 x 10 = 100
  29. Digite o seguinte programa. Ele deveria imprimir o maior número de uma seqüência lida da entrada. O programa inicialmente lê o tamanho da seqüência (número de elementos) e a seguir lê a seqüência propriamente dita.
    1. #include <stdio.h> void main (void) { int cont, maior, qtd, num; maior = 0; printf ("Quantos números? "); scanf ("%d", &qtd); cont = 0; printf ("Entre a seq. de números\n"); while (cont < qtd) { scanf ("%d", &num); if (num > maior) maior = num; cont = cont +1; } printf ("O maior é %d\n", maior); }
    2. a) Execute o programa acima passo a passo, visualizando o conteúdo das variáveis num, cont e maior.
    3. b) Forneça números negativos e positivos como valores para a seqüência. Veja o que acontece.
    4. c) Forneça somente números negativos como valores para a seqüência. Veja o que acontece.
    5. d) Modifique o programa para que ele funcione sempre (ou seja, até para uma seqüência com números somente negativos.
    6. e) Modifique o programa para que ele leia uma seqüência terminada por zero.
  30. Os termos da série de Fibonnacci são gerados da seguinte forma:
  31. 1o termo: a0 = 0
  32. 2o termo: a1 = 1
  33. 3o termo: a2 = a0 + a1 = 1
  34. 4o termo: a3 = a1 + a2 = 2, e assim por diante
  35. Faça um programa que gere os 20 primeiros termos da série de Fibonnacci.
  36. Faça um programa que leia diversos números de carteira de motorista com as suas respectivas quantidades de multas e seus valores. O programa deverá imprimir o número da carteira de motorista e o valor da multa para cada motorista. No final do processamento, o programa deverá imprimir o número da carteira do motorista que obteve o maior número de multas, assim como quem obteve o maior valor total em multas. A leitura termina quando for lido o número de carteira igual a 0 (zero). Carteiras com números inválidos (negativos) não devem ser processadas, embora as suas multas devam ser lidas.
  37. Exemplo de entrada

Desafios

  1. O programa abaixo deveria ler 10 conjuntos de 5 valores inteiros cada e imprimir a soma dos valores de cada conjunto e a soma total dos valores de todos os conjuntos. Somente é permitido trocar linhas de lugar e/ou retirar linhas. Não é permitido incluir e/ou alterar linhas.
    1. #include <stdio.h> void main (void) { int somap, somag, valor, cont1, cont2; cont1 = 0; somag = 0; cont2 = 0; somap = 0; while (cont1 < 5) { scanf ("%d", &valor); while (cont2 < 10) { somap = somap + valor; somag = somag + somap; cont2 = cont2 +1; } cont1 = cont1 + 1; } somag = somag + somap; printf ("A soma do conjunto = %d\n", somap); printf ("A soma total = %d\n", somag); }
  2. Faça um programa que calcule as temperaturas médias de uma localidade para cada estação do ano em diferentes anos. O programa deverá ler, para cada ano desejado:
    • O ano (valor inteiro)
    • As temperaturas médias dos meses de dezembro (do ano anterior) a novembro (valores reais, nesta ordem)
    • O programa deverá imprimir para cada ano: a temperatura média de cada estação e a temperatura média anual.
    1. Considere que as estações correspondem as seguintes meses:
      • verão à dezembro a fevereiro
      • outono à março a maio
      • inverno à junho a agosto
      • primavera à setembro a novembro
    2. O programa termina ao ser digitado um ano negativo.
  3. Uma empresa de telefonia celular precisa de um programa para o processamento das contas de seus 8752 clientes. Inicialmente, o seu programa deve ler o valor cobrado pela assinatura nos 2 planos (básico e completo) e o valor do minuto de ligação (válido para ambos os planos). A seguir, o programa deve ler as informações dos clientes:
    • código do cliente (inteiro);
    • número do plano (1 - básico ou 2 - completo);
    • para cada ligação:
      • hora de início;
      • tempo (em minutos) de duração.
    1. A leitura de ligações termina com um valor negativo para hora de início.
    2. O programa deve calcular e imprimir o valor da conta do cliente. A empresa oferece um desconto de 30% no valor do minuto quando as ligações são iniciadas de 0 às 6 horas e cobra um adicional de 5% para as ligações iniciadas entre 12 e 13 horas. Além disso, a empresa oferece um desconto adicional para os clientes do plano completo de acordo com o valor total da conta, segundo a tabela abaixo: