Ir ao conteúdo
  • Cadastre-se
Visitante

if e else

Recommended Posts

Visitante

Amiguinhos, estou começando a programar fazem 3 semanas, e estou tentando resolver uma questão mas não consigo, essa é a questão:

 

 

Faça um programa que receba dois números e execute as operações listadas a seguir, de acordo

com a escolha do usuário, mostrando o resultado ao final. Se for digitada uma opção inválida,
mostre uma mensagem de erro e termine a execução do programa.
 
ESCOLHA DO USUÁRIO OPERAÇÃO
1 Média entre os números digitados
2 Diferença do maior pelo menor
3 Produto entre os números digitados
4 Divisão do primeiro pelo segundo
5 O primeiro número elevado ao segundo número
6 Raiz quadrada de cada um dos números
7 Raiz cúbica de cada um dos números
 
então fiz o seguinte programa em c:
 
 
#include <stdio.h>
#include <math.h>
 
int main(void){
 
    int num1, num2;
    int OPCAO;
    int opc1, opc2;
    int opc3, opc4;
    int opc5, opc6;
    int opc6b, opc7, opc7b;
 
printf ("Digite 2 numeros e a sua opcao:\n");
scanf ("%d, %d, %d", &num1, &num2, &OPCAO);
 
if (OPCAO==1){
    opc1 = num1+num2/2;
    printf("\n%d", opc1);
}
else{
if (OPCAO==2){
 
    if (num1>num2)
    opc2 = num1-num2;
    printf ("\n%d", opc2);
 
    if (num2>num1)
    opc2 = num2-num1;
    printf("\n%d", opc2);
}}
if (OPCAO==3){
    opc3 = num1*num2;
    printf ("\n%d", opc3);
    }
else{
 
if (OPCAO==4){
    opc4 = num1/num2;
    printf ("\n%d", opc4);
}}
 
if(OPCAO==5){
    opc5 = pow(num1, num2);
    printf ("\n%d", opc5);
}
 
 
if (OPCAO==6){
    opc6 = pow(num1, 1/2);
    opc6b = pow(num2, 1/2);
    printf ("\n%d, \n%d", opc6, opc6b);
}
else{
 
if (OPCAO==7)
    opc7 = pow(num1, 1/3);
    opc7b = pow(num2, 1/3);
    printf ("\n%d, \n%d", opc7, opc7b);
}
if (OPCAO>7){
printf ("\nValor invalido!\n");
}
else{
 
 
return 0;
}
 
 
 
 
 
 
ps: ja tentei com swicth case mas também não consegui, tentei por if's sem else mas também não deu certo, e quando compila diz que o else está sem if ou algo do tipo não sei mais o q fazer. :'(
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Acho que você está se enrolando na indentação e chaves de abertura e fechamento. Quando você abrir um else..if não use chave entre eles pois só terá um termo dentro dele que é o if.

 

 

Veja se funciona.

if (OPCAO==1){    ...}else if(OPCAO==2){ ...}else if(OPCAO==3){ ...}else if (OPCAO==4){...}etc... 

 
Aproveite e poste o código com switch..case aí já aprende 2 maneiras de uma vez só.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com switch fica bem mais legível,

 

Além disso acho melhor usar apenas uma variável para retornar o resultado, com o printf fora do switch, por exemplo:

 

 

switch(OPCAO){case 1:op = num1 + num2;...break; case 2:op = num1 - num2;...break; default:printf("opcao invalida");}printf("Resultado = %d\n", op);
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Com switch fica bem mais legível,

 

Além disso acho melhor usar apenas uma variável para retornar o resultado, com o printf fora do switch, por exemplo:

 

 

O uso de uma variável só além de melhorar a performance do programa melhora também a visualização. Eu me preocupei primeiro em deixar o programa funcional  :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×