- Faça um programa utilizando o comando “switch”. O programa deve se comportar como uma calculadora, onde o operador escolhe entre as operações soma (+), subtração (-), multiplicação (*), divisão (/), potência (
), e raiz quadrada ( r ). 0 programa deve apresentar todas as opções no inicio e o operador escolhe a operação desejada digitando o simbolo entre parenteses. O programa deve então ler os dois números, realizar a operação e reiniciar o processo até que o operador escolha uma operação inválida (qualquer outro símbolo ou letra).
Passo 1
O enunciado pede um programa em C que funcione como uma calculadora, usando o comando
switch
para escolher entre as operações soma, subtração, multiplicação, divisão, potência e raiz quadrada. Precisamos de um laço que repita o menu até o usuário digitar um símbolo inválido.Passo 2
Criamos um laço infinito (por exemplo
(+) soma
(-) subtração
(*) multiplicação
(/) divisão
(^) potência
® raiz quadrada
E lemos um caractere
while (1)
) em que, a cada iteração, exibimos o menu com as opções:(+) soma
(-) subtração
(*) multiplicação
(/) divisão
(^) potência
® raiz quadrada
E lemos um caractere
op
com scanf(" %c", &op);
Passo 3
Fazemos um
switch(op)
com casos para cada operação. Nos casos de +
, -
, *
, /
e ^
lemos dois números (double a, b;
), executamos a operação e imprimimos o resultado. Para o caso r
lemos apenas um número (double a;
), calculamos a raiz e imprimimos.Passo 4
No
case default
do switch
, detectamos operação inválida e encerramos o programa com return 0;
. Assim o laço pára quando o usuário digita qualquer outro símbolo.Passo 5
Usamos as funções da biblioteca
<math.h>
:para potência e
para raiz quadrada. Incluímos também checagens simples de erro (divisão por zero e raiz de número negativo).
Resposta
#include <stdio.h>
#include <math.h>
int main() {
char op;
double a, b;
while (1) {
printf("Selecione a operacao:
");
printf("(+) Soma
");
printf("(-) Subtracao
");
printf("(*) Multiplicacao
");
printf("(/) Divisao
");
printf("(^) Potencia
");
printf("(r) Raiz quadrada
");
printf("Qualquer outro simbolo para sair.
");
printf("Opcao: ");
scanf(" %c", &op);
switch (op) {
case '+':
printf("Digite dois numeros: ");
scanf("%lf %lf", &a, &b);
printf("Resultado: %.2lf
", a + b);
break;
case '-':
printf("Digite dois numeros: ");
scanf("%lf %lf", &a, &b);
printf("Resultado: %.2lf
", a - b);
break;
case '*':
printf("Digite dois numeros: ");
scanf("%lf %lf", &a, &b);
printf("Resultado: %.2lf
", a * b);
break;
case '/':
printf("Digite dois numeros: ");
scanf("%lf %lf", &a, &b);
if (b \(==0\)) {
printf("Erro: divisao por zero.
");
} else {
printf("Resultado: %.2lf
", a / b);
}
break;
case '^':
printf("Digite a base e o expoente: ");
scanf("%lf %lf", &a, &b);
printf("Resultado: %.2lf
", pow(a, b));
break;
case 'r':
printf("Digite um numero: ");
scanf("%lf", &a);
if (a < 0) {
printf("Erro: raiz de numero negativo.
");
} else {
printf("Resultado: %.2lf
", sqrt(a));
}
break;
default:
printf("Operacao invalida. Encerrando programa.
");
return 0;
}
}
return 0;
}