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

CALCULADORA (FUNÇÕES)


gabrielEM

Pergunta

Bom galera eu estou desenvolvendo uma simples calculadora, com as seguintes operações: adição, subtração, multiplicação, divisão, potência e resto da divisão. Esta deve usar diversas funções para resolver o problema e é nesta parte que que está ocorrendo erro o qual não consigo achar, não ocorre relação entre as funções, o erro deve estar na parte do comando switch e nas funções.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float a,b;
float soma();
float dif();
float mult();
float divisao();
float resto();
float pot();

int main(void)
{
    while(1)
    {
        float num1, num2, resultado;
        char operador;
        printf("####### Calculadora #######\n");
        printf("_______ Operadores ________\n");
        printf("Soma\t\t\t[+]\n");
        printf("Diferença\t\t[-]\n");
        printf("Multiplicação\t\t[*]\n");
        printf("Divisão\t\t\t[/]\n");
        printf("Resto da divisão\t[%%]\n");
        printf("Potência\t\t[^]\n");
        printf("Para sair digite\t[000]\n");
        printf("_____________________________\n");
        printf("Sintaxe:\n[numero][operador][numero]\n\n");
        scanf("%f%c%f",&num1,&operador,&num2);
        switch(operador)
        {
        case '+':
            resultado=soma(num1,num2);
            break;
        case '-':
            resultado=dif(num1,num2);
            break;
        case '*':
            resultado=mult(num1,num2);
            break;
        case '/':
            while(num2=0)
                {
                printf("Não há diviso por zero\n");
                printf("Insira o valor\n");
                scanf("%f", num2);
                }
            resultado=divisao(num1,num2);
            break;
        case '%':
            resultado=resto(num1,num2);
            break;
        case '^':
            resultado=pot(num1,num2);
            break;
        case '0':
            if (num1==0 && num2==0)
                system("exit");
            else
                    printf("Operador inválido");
            break;
        default:
            printf("Operador inválido\n");
            break;

        }
        printf("=%f", resultado);
    }
return 0;
}

float soma(a,b)
{
    float r;
    r=a+b;
    return r;
}

float dif(a,b)
{
    float r;
    r=a-b;
    return r;
}

float mult(a,b)
{
    float r;
    r=a*b;
    return r;
}

float divisao(a,b)
{
    float r;
    r=a/b;
    return r;
}

float resto(a,b)
{
    float r;
    r=(int)a%(int)b;
    return r;
}

float pot(a,b)
{
    float r;
    r=pow(a,b);
    return r;
}


Editado por gabrielEM
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Tenta assim

#include <stdio.h>
 
float somar(float x, float y)
{
 
 return x+y ;     
}      
 
 
int main(void)
{
    while(1)
    {
        float num1, num2, resultado;
        char operador;
        
        printf("Sintaxe:\n[numero][operador][numero]\n\n");
        scanf("%f %c %f",&num1,&operador,&num2);
        printf("o resultado da soma %f + %f e = \n",num1,num2);
  
        switch(operador)
        {
            case '+':
                resultado =  somar(num1,num2);
                printf("%f\n",resultado);
                break;
            default:
                printf("Operador inválido\n");
                break;
 
        }
        printf("=%f", resultado);
    }
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...