Ir para conteúdo
Fórum Script Brasil
  • 0

problemas com calculadora


Guest --Jhonny --

Pergunta

Guest --Jhonny --

ola pessoal!

eu fiz uma calculadora q le um caracter para representar a operação matematica, e conforme a escolha da operaçao o programa pede para ler 1 ou 2 numeros para o calculo.quando é uma operaçao exponencial ele pede 1 numero apenas, quando é soma por exemplo pede 2 numeros e na divisao o programa alerta q o numero 2 q é o dividendo tem q ser diferente de zero.

ate a parte dos if aninhados ta normal, mas quando chega no else da os seguintes erros:(ah já ia esquecendo, estou usando a IDE devc++ 4.9.9.2)

linha 47,mensagem expectaded primary-expression before else.

linha 47,mensagem expectade ; before else.

linha 48,mensagem expectaded primary-expression before else.

linha 48,mensagem expectade ; before else.

linha 66,mensagem expectaded primary-expression before else.

linha 66,mensagem expectade ; before else.

o codigo do meu programa é:

#include <stdio.h>

#include <stdlib.h>

int num1,num2,result;

char a,b,c,d,e,f,g,h,resp;

int main()

{

printf("a.adicao\nb.subtracao\nc.mutiplicacao\nd.divisao\ne.exponencial quadratica\nf.exponencial cubica\ng.resto\nh.sair\n");

scanf("%c",&resp);

if (resp!=h)

if (resp!=e|resp!=f)

if (resp!=d) printf("digite o primeiro numero\n");

scanf("%d",&num1);

printf("digite o segundo numero\n");

scanf("%d",&num2);

switch (resp){

case 'a':

{

result=num1+num2;

printf("%d + %d = %d\n",num1,num2,result);

system("PAUSE");

break;

}

case 'b':

{

result=num1-num2;

printf("%d - %d = %d\n",num1,num2,result);

system("PAUSE");

break;

}

case 'c':

{

result=num1*num2;

printf("%d x %d = %d\n",num1,num2,result);

system("PAUSE");

break;

}

case 'g':

{

result=num1%num2;

printf("%d % %d = %d\n",num1,num2,result);

system("PAUSE");

break;

}

}

else system("PAUSE");

else printf("digite um numero\n");

scanf("%d",num1);

switch (resp){

case 'f':

{

result=num1*num1*num1;

printf("%d ao cubo = %d\n",num1,result);

system("PAUSE");

break;

}

case 'e':

{

result=num1*num1;

printf("%d ao quadrado = %d\n",num1,result);

system("PAUSE");

break;

}

}

else printf("digite o primeiro numero\n");

scanf("%d",&num1);

printf("digite o segundo numero diferente de ZERO\n");

scanf("%d",&num2);

result=num1/num2;

printf("%d/%d = %d",num1,num2,result);

}

grato desde já!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

cara...eu dei uma olhada no seu codigo...tah ate bom vey... mas não é muito bom uma calculadora assiim não....

tipow....não existe nenhuma calculadora que pede pra você escolher q tipo de operacao você quer fazer....

outra coisa.... não aconselho a usar switchs não.... não faz nada q não de pra faze usando ifs.....

eu vou postar um codigo akew...dá uma fragada no programa como deve ser....compila ele se puder...!

#include <cstdio>
#include <cstdlib>
#include <cmath>

int main()
{
    int option;
    float termo1, termo2, resultado;
    char operador;
    while (true)
    {
        system("color f0");
        printf ("\t\t\t\tCALCULADORA\n\n\n");
        printf ("Digite a operacao para que seja calculado o resultado\n");
        printf ("Utilize 'e' e 'r' para exponenciar, racionalizar qualquer numero\n");
        printf ("De espacos entre o numero, operador, numero. exemplo: 5 + 5 ou 9 r 2.\n\n");
        scanf ("%f", & termo1);
        scanf ("%s", & operador);
        scanf ("%f", & termo2);
        if (operador == '+')
        {
            resultado = termo1 + termo2;
            printf (" = %f", resultado);
        }
        else if (operador == '-')
        {
            resultado = termo1 - termo2;
            printf (" = %f", resultado);
        }
        else if (operador == '*')
        {
            resultado = termo1 * termo2;
            printf (" = %f", resultado);
        }
        else if (operador == '/')
        {
            while (termo2 == 0)
            {
                printf ("não se pode dividir por zero!\n");
                printf ("digite o divisor novamente: ");
                scanf ("%f", & termo2);
            }
            resultado = termo1 / termo2;
            printf (" = %f", resultado);
        }
        else if (operador == 'e')
        {
            resultado = pow (termo1, termo2);
            printf (" = %f", resultado);
        }
        else if (operador == 'r')
        {
            resultado = 1 / termo2;
            resultado = pow (termo1, resultado);
            printf (" = %f", resultado);
        }
        else
        {
            printf ("não existe este operador!\n");
        }
        system("pause");
        system("cls");
    }
    return 0;
}

qualquer coisa é só perguntar....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jhonny --

po q rapido você respondeu!

pensei q iria vir aqui e olhar o tópico e não teria nenhuma resposta ^^

hehe

gostei da sua calculadora ficou com background branco e o programa n fecha sozinho depois q executou o calculo. Novos comandos aprendidos hehe

obrigado por ter respondido ;)

mas so duas duvidas:

porque você não aconselha usar switch?

e você sabe solucionar o problema da minha calculadora?

grato!

Link para o comentário
Compartilhar em outros sites

  • 0

olha cara....num é pra fala não mas tipow....eu compilei o seu codigo aki e percebi q você num tah sabendo programa direito não veii...

fez uns ifs sem logica .... uns else tdo loko..... criou mais switchs sem necessidade.... o programa nunca ia compila mesmo não!!!

dá umas olhadas em tutoriais para aprender a programa ... ve como faz um if/else e tals....você pos operadores nos if sem dar logica ao programa.....tipow (resp != 'a') q quando o resp não for igual a 'a' o programa vai faze.....faze o que???!?? num tem nada mandando ele faze....e tb não adicionou chaves aos ifs...outro problema tb....

ow.... tah o seu codigo revisto e corrigido....dá uma olhada pra você onde errou!!

#include <stdio.h>
#include <stdlib.h>

int num1,num2,result;
char a,b,c,d,e,f,g,h,resp;

int main()
{
printf("a.adicao\nb.subtracao\nc.mutiplicacao\nd.divisao\ne.exponencial quadratica\nf.exponencial cubica\ng.resto\nh.sair\n");
scanf("%c",&resp);
printf("digite o primeiro numero\n");
scanf("%d",&num1);
if (resp != 'e' && resp != 'f')
{
printf("digite o segundo numero\n");
scanf("%d",&num2);
}
switch (resp){
case 'a':
{
result=num1+num2;
printf("%d + %d = %d\n",num1,num2,result);
system("PAUSE");
break;
}
case 'b':
{
result=num1-num2;
printf("%d - %d = %d\n",num1,num2,result);
system("PAUSE");
break;
}
case 'c':
{
result=num1*num2;
printf("%d x %d = %d\n",num1,num2,result);
system("PAUSE");
break;
}
case 'g':
{
result = num1 % num2;
printf("%d %% %d = %d\n", num1 ,num2 ,result);
system("PAUSE");
break;
}
case 'f':
{
result=num1*num1*num1;
printf("%d ao cubo = %d\n",num1,result);
system("PAUSE");
break;
}
case 'e':
{
result=num1*num1;
printf("%d ao quadrado = %d\n",num1,result);
system("PAUSE");
break;
}
}
return 0;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...