Instalação e Manutenção de Redes e Serviços Informáticos PROGRAMAÇÃO DE SISTEMAS Exercícios práticos - Folha 3 Estruturas de decisão 1. Implemente um programa para ler do teclado o ano de nascimento do utilizador. O valor introduzido só será aceite se este estiver no intervalo compreendido entre 1900 e 2012. int numero; printf("introduza o seu ano de nascimento: "); scanf("%d", &numero); if(numero > 2012 numero < 1900) printf("o ano de nascimento e INVALIDO"); printf("o ano de nascimento e VALIDO"); 2. Escreva um programa que determine se um número inteiro é par ou ímpar. Caso o valor introduzido seja igual a zero deverá ser apresentada uma mensagem de aviso. int numero; printf("introduza um numero: "); scanf("%d", &numero); if(numero % 2 == 0) printf("numero par"); printf("numero impar"); 3. Escreva um programa que peça ao utilizador o comprimento de três linhas e indique ao utilizador se essas linhas podem ou não formar um triângulo. Em caso afirmativo, o programa deve também Folha Nº 3 Estruturas de decisão Página 1
indicar se o triângulo é escaleno (lados todos diferentes), isósceles (dois lados iguais) ou equilátero (todos os lados iguais). Nota: Considerando a, b e c o comprimento de três linhas. Essas linhas podem formar um triangulo se a - b < c e c < a + b. (Use a função fabs() para calcular o módulo, esta função está presente na biblioteca math.h). #include <math.h> float linha_1, linha_2, linha_3; printf("introduza o valor da linha 1: "); scanf("%f", &linha_1); printf("introduza o valor da linha 2: "); scanf("%f", &linha_2); printf("introduza o valor da linha 3: "); scanf("%f", &linha_3); if((fabs(linha_1 - linha_2) < linha_3) && (linha_3 < linha_1 + linha_2)) printf("as linhas PODEM formar um triangulo: "); // triangulo equilatero -> todos os lados iguais if(linha_1 == linha_2 && linha_2 == linha_3) printf("equilatero\n"); // triangulo isosceles -> dois lados iguais if(linha_1 == linha_2 linha_1 == linha_3 linha_2 == linha_3) printf("isosceles\n"); printf("escaleno\n"); printf("as linhas NAO PODEM formar um triangulo: "); 4. Escreva um programa que peça ao utilizador três números inteiros e a ordem pela qual os deseja ver (crescente ou decrescente). O resultado deverá ser os três números ordenados pela ordem indicada. Por exemplo: Introduza tres numeros inteiros: 5 2 6 Qual a ordem que os deseja ver (C)rescente ou (D)ecrescente: C 2 5 6 int numero_1, numero_2, numero_3; char ordem; printf("introduza tres numeros inteiros: \n"); fflush(stdin); Folha Nº 3 Estruturas de decisão Página 2
scanf("%d %d %d", &numero_1, &numero_2, &numero_3); printf("qual a ordem que os deseja ver (C)rescente ou (D)ecrescente: "); fflush(stdin); scanf("%c", &ordem); switch(ordem) case 'c': case 'C': if(numero_1 < numero_2) if(numero_2 < numero_3) printf("%d %d %d\n", numero_1, numero_2, numero_3); if(numero_1 < numero_3) printf("%d %d %d\n", numero_1, numero_3, numero_2); printf("%d %d %d\n", numero_3, numero_1, numero_2); if(numero_2 < numero_3) if(numero_1 < numero_3) printf("%d %d %d\n", numero_2, numero_1, numero_3); printf("%d %d %d\n", numero_2, numero_3, numero_1); printf("%d %d %d\n", numero_3, numero_2, numero_1); case 'd': case 'D': if(numero_1 > numero_2) if(numero_2 > numero_3) printf("%d %d %d\n", numero_1, numero_2, numero_3); if(numero_1 > numero_3) printf("%d %d %d\n", numero_1, numero_3, numero_2); printf("%d %d %d\n", numero_3, numero_1, numero_2); if(numero_2 > numero_3) if(numero_1 > numero_3) printf("%d %d %d\n", numero_2, numero_1, numero_3); printf("%d %d %d\n", numero_2, numero_3, numero_1); printf("%d %d %d\n", numero_3, numero_2, numero_1); default: printf("ordem invalida!"); Folha Nº 3 Estruturas de decisão Página 3
5. Pretende-se elaborar um programa que simule uma calculadora rudimentar, cujas operações possíveis sejam: + (soma) - (subtracção) x (multiplicação) / (divisão) O programa deverá pedir ao utilizador dois números inteiros e o sinal de operação a aplicar a esses números. Deverá, por fim, apresentar no monitor, o respectivo resultado. Notas: Caso o utilizador seleccione um operador fora das possibilidades atrás mencionadas, deverá ser dada ao utilizador a mensagem: operador desconhecido. O programa deve indicar Erro divisão por zero se numa divisão o divisor for zero. Exemplo: Introduza os numeros e a operacao a realizar: 5*2 Resultado: 10 float valor1, valor2, resultado; char operacao; printf("introduza os numeros e a operacao a realizar: "); scanf("%f %c %f", &valor1, &operacao, &valor2); switch(operacao) case '+': resultado= valor1 + valor2 ; printf(" O resultado e: %f ", resultado); case '-': resultado = valor1 - valor2 ; printf(" O resultado e: %f ", resultado); case '/': if(valor2 == 0) printf("erro - Divisão por zero"); resultado = valor1 / valor2; printf(" O resultado e: %f", resultado); case '*': resultado = valor1 * valor2; printf(" O resultado e: %f", resultado); default: printf("erro:operador desconhecido"); Folha Nº 3 Estruturas de decisão Página 4
6. Implemente um programa que em função do valor da cilindrada do automóvel indique o valor do imposto de circulação, com base na seguinte tabela: int cilindrada; Cilindrada Imposto de circulação <= 1000 15 ] 1000, 1300 ] 25 ]1300, 1500] 30 ]1500, 1800] 40 > 1800 50 printf("introduza a cilindrada do automovel: "); scanf("%d", &cilindrada); if(cilindrada > 0 && cilindrada <= 1000) printf("o seu imposto de circulacao tem o valor de 15 euros"); if (cilindrada > 1000 && cilindrada <=1300) printf("o seu imposto de circulacao tem o valor de 25 euros"); if(cilindrada > 1300 && cilindrada <= 1500) printf("o seu imposto de circulacao tem o valor de 30 euros"); if(cilindrada > 1500 && cilindrada <= 1800) printf("o seu imposto de circulacao tem o valor de 40 euros"); if (cilindrada > 1800) printf("o seu imposto de circulacao tem o valor de 50 euros"); printf("valor que introduziu e invalido"); 7. Uma relação matemática é dada pela seguinte forma: Ax 2 + Bx + C (para x<5) Y = Ax 2 Bx C ; (para x=5) Ax 2 + Bx (para x>5) Escreva um programa que leia os valores A, B, C e x do teclado e calcule Y. float a, b, c, y, x; printf("introduza o valor de A B C: "); scanf("%f %f %f",&a, &b, &c); printf("introduza o valor de x:"); scanf("%f",&x); if(x < 5) y = (a*(x*x))+(b*x + c); Folha Nº 3 Estruturas de decisão Página 5
if (x == 5) y= (a*(x*x)) - (b*x) -c; if(x > 5) y = (a*(x*x)) + (b*x); printf("o valor de y e : %.3f",y); 8. Escreva um programa que indique se uma determinada letra pedida ao utilizador é maiúscula ou minúscula. Sugestão: use as funções islower() e/ou isupper(). char letra; printf("introduza uma letra:"); scanf("%c", &letra); if(islower(letra)) printf("a letra que introduziu e minuscula"); printf("a letra que introduziu e maiuscula"); Folha Nº 3 Estruturas de decisão Página 6