UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ Lista de Exercícios N°4 Os exercícios propostos visam treinar o estudante de programação computacional de forma bastante completa. É interessante que estes exercícios sejam feitos após uma leitura da aula 10 e 11 sobre estruturas condicionais ( if else, aninhamentos if esleif e switch, break) e estruturas de repetição (while, for, do while) No seguinte algoritmo encontre as sentenças incorretas e depois colocar a sentença correta, 1. De um modo geral, as ligações telefónicas são cobradas pelas suas durações. O sistema registra os instantes em que a ligação foi iniciada e concluída e é acionado um programa que determina o intervalo de tempo decorrido entre aqueles dois instantes dados. O programa abaixo recebe dois instantes dados em horas e minutos e determina o intervalo de tempo (em horas e minutos) decorrido entre eles. /*Programa que determina o intervalo de tempo decorrido entre dois instantes*/ include <stdio.h> main() { float h1, min1, h2, min2, h, min; puts("Digite o instante inicial (horas e minutos)"); scanf("%d %d", &h1, &min1); puts("Digite o instante final"); scanf("%d %d", &h2, &min2); h = h2 - h1; min = min2 - min1; if ((h < 0) || ((h == 0) && (min < 0))) puts("\aDados invalidos! O segundo instante e anterior ao primeiro"); else { if (min < 0) { h = h – 1-1; min = min + 60; } printf( "Entre os instantes %dh %dmin e %dh %dmin passaram-se %dh %dmin", h1, min1, h2,min2, h, min); } } UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ 2. O programa calcula a área de um triangulo, dados os comprimentos dos seus lados. /* Programa para calcular a area de um triangulo*/ #include <stdio.h> #include <math.h> main() { float x, y, z, Area, SemiP; printf("Digite os comprimentos dos lados do triangulo"); scanf("%f %s %f", &x, &y, &z); if ((x < y + z) && (y < x + z) && (z < x + y)) { Area = sqrt(SemiP * (SemiP - x) * (SemiP - y) * (SemiP - z)); printf("A area do triangulo de lados %f , %f e %f e' igual a %f \n", x, y, z, Area); } else printf("Os numeros %f, %f %f não podem ser comprimentos dos lados de um triangulo\n", x, y,z); } 3. Programas que manipulam datas (por exemplo, um programa que determine o numero de dias entre duas datas dadas) contem trechos que verificam se um ano dado e bissexto. Sabendo que um ano e bissexto se ele e multiplo de quatro, teriamos o seguinte programa. /*Programa que verifica se um dado ano e bissexto */ #include <stdio.h> main() { int Ano; printf("Digite o ano"); scanf("%d", &Ano); if (Ano % 4 == 0) printf("%d e' bissexto %d \n", Ano); else printf("%d nao e' bissexto %d \n", Ano); } Rigorosamente falando, ha anos múltiplos de quatro que não são bissextos. São aqueles múltiplos de 100 que não são múltiplos de 400. Por exemplo, o UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ ano 2000 foi um ano bissexto, mas o ano de 2100 não será. Para que o programa detecte estas exceções, a expressão logica que controla o comando if deve ser ampliada e talvez seja mais fácil considerar a condição para que um ano não seja bissexto: não deve ser múltiplo de quatro ou se for múltiplo de 100 não deve ser múltiplo de 400. Observe que agora optamos por uma expressão logica que garantisse o fato de que o ano dado não e bissexto. /* Programa que verifica se um dado ano e bissexto */ #include <stdio.h> main() { int Ano; printf("Digite o ano"); scanf("%d", &Ano); if ((Ano % 4 != 0) || ((Ano % 100 == 0) && (Ano % 400 != 0))) printf("%d não e' bissexto \n", Ano); printf("%d e' bissexto \n", Ano); } 4. #include <stdio.h> main() { int x; printf("Digite um numero inteiro entre 1 e 5 \n"); scanf("%d", &x); switch (x) { case 1: printf("Valor de x: %d \n", x); case 2 : printf("Valor do dobro de %d: %d \n", x, 2*x); case 3 : printf("Valor do triplo de %d: %d \n", x, 3*x); case 4 : printf("Valor do quadruplo de %d: %d \n", x, 4*x); default : printf("Valor digitado: %d \n", x); } } UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ 5. 6. 7. UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ 8. 9. 10. UNIVERSIDADE FEDERAL DO TRIÂNGULO MINEIRO PROGRAMAÇÃO COMPUTACIONAL ________________________________________________________________________________________ 11. 12. 13. 14. 15.