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

(Resolvido) Caluculadora... qual o erro no meu código...


C++kana

Pergunta

Por favor me ajudem estou tentando refazer os exercicios dados em aula.....

Estava tentando compilar o meu códio no C++ Builder 6 e dava o seginte erro:

"Call to underfined 'rotsoma'

segue abaixo o código

#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

   float r,a,b;
   float calculo (float x, float y, char operador);
    #pragma argsused
int main(int argc, char* argv[])


   {
     char opcao;
     opcao = '0';
     while(opcao != '5')
     {
        clrscr();
        printf("Menu Principal\n");
        printf("---------------\n"); printf("\n"); printf("\n");
        printf("1 - Soma\n");
        printf("2 - subtracao\n");
        printf("3 - Multiplicacao\n");
        printf("4 - Divisao\n");
        printf("5 - Fim de programal\n");
        printf("\n");
        printf("Escolha uma opcao: "); scanf("%c",&opcao); fflush(stdin);
        if(opcao != '5'){
           switch(opcao){
           case '1':
                  rotsoma();
                  break;
            case '2':
                  rotsubtracao();
                  break;
            case '3':
                  rotmultiplicacao;
                  break;
            case '4':
                  rotdivisao();
                  break;
            default:
                 printf("Opcao invalida - tente novamente");
                 getche();

                        }
                        }

        }
     }

         entrada()
         {
            printf("Entre um valor para A:  "); scanf("%f",&a);
            printf("Entre um valor para B:  "); scanf("%f",&b);
         }

         float calculo(float x, float y, char operador)
         {
          switch (operador)
           {
            case '+': return(x + Y);
            case '-': return(x - Y);
            case '*': return(x * Y);
            case '/': return(x / Y);

            }
          }


         saida()
         {
            printf("\n"); printf("\n");
            printf("O resultado entre A eB = %f",r);
            printf("\n");
            fflush(stdin);
            getche;
          }

         rotsoma()
          {
            clrscr();
            printf("Rotina de Soma\n");
            printf("---------------\n"); printf("\n"); printf("\n");
            entrada();
            r = calculo(a,b,'+');
            saida();
          }

          rotsubtracao()
          {
           clrscr();
            printf("Rotina de Subtracao\n");
            printf("---------------\n"); printf("\n"); printf("\n");
            entrada();
            r = calculo(a,b,'-');
            saida();
          }

          rotmultiplicacao()
          {
          clrscr();
            printf("Rotina de Multiplicacao\n");
            printf("---------------\n"); printf("\n"); printf("\n");
            entrada();
            r = calculo(a,b,'*');
            saida();
          }

          rotdivisao()
          {
          clrscr();
            printf("Rotina de Divisa0\n");
            printf("---------------\n"); printf("\n"); printf("\n");
            entrada();
            r = calculo(a,b,'/');
            saida();
          }

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Kara!!Valeu!!!

Acho que conseguir fazer mais ou menos que você me orientou....

beleza... consegui rodar o programa....só que quando executa as operações (soma, subtraçao, divisão ou multiplicação), ele em seguida pede para entrar com "A" e "B" novamente, só que ao invés de trazer o resultado, ele volta para o menu inicial.

O correto não seria ele voltar para o menu logo que terminar a primeira operação?

Sera que tem algo errado com a rotina de saída?

Se puder me ajudar, PLEASE....

De qualquer forma valeu pela dica!!!!

segue o código:

#include <vcl.h>

#include <stdio.h>

#include <conio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

float r,a,b,y,x;

float calculo (float x, float y, char operador);

float calculo(float x, float y, char operador)

{

switch (operador)

{

case '+': return(x + y);

case '-': return(x - y);

case '*': return(x * y);

case '/': return(x / y);

}

}

entrada()

{

printf("Entre um valor para A: "); scanf("%f",&a);

printf("Entre um valor para B: "); scanf("%f",&b);

}

saida()

{

printf("\n"); printf("\n");

printf("O resultado entre A eB = %f",r);

printf("\n");

fflush(stdin);

getche;

}

rotsoma()

{

clrscr();

printf("Rotina de Soma\n");

printf("---------------\n"); printf("\n"); printf("\n");

entrada();

r = calculo(a,b,'+');

saida();

}

rotsubtracao()

{

clrscr();

printf("Rotina de Subtracao\n");

printf("---------------\n"); printf("\n"); printf("\n");

entrada();

r = calculo(a,b,'-');

saida();

}

rotmultiplicacao()

{

clrscr();

printf("Rotina de Multiplicacao\n");

printf("---------------\n"); printf("\n"); printf("\n");

entrada();

r = calculo(a,b,'*');

saida();

}

rotdivisao()

{

clrscr();

printf("Rotina de Divisa0\n");

printf("---------------\n"); printf("\n"); printf("\n");

entrada();

r = calculo(a,b,'/');

saida();

}

#pragma argsused

int main(int argc, char* argv[])

{

char opcao;

opcao = '0';

while(opcao != '5')

{

clrscr();

printf("Menu Principal\n");

printf("---------------\n"); printf("\n"); printf("\n");

printf("1 - Soma\n");

printf("2 - subtracao\n");

printf("3 - Multiplicacao\n");

printf("4 - Divisao\n");

printf("5 - Fim de programal\n");

printf("\n");

printf("Escolha uma opcao: "); scanf("%c",&opcao); fflush(stdin);

if(opcao != '5'){

switch(opcao){

case '1':

rotsoma();

entrada();

saida();

break;

case '2':

rotsubtracao();

entrada();

saida();

break;

case '3':

rotmultiplicacao();

entrada();

saida();

break;

case '4':

rotdivisao();

entrada();

saida();

break;

default:

printf("Opcao invalida - tente novamente");

getche();

}

}

}

}

//---------------------------------------------------------------------------

Link para o comentário
Compartilhar em outros sites

  • 0

Loguei dessa vez...

Bom, repare na sua função saida():

saida()
{
printf("\n"); printf("\n");
printf("O resultado entre A eB = %f",r);
printf("\n");
fflush(stdin);
getche;
}
getche é simplesmente um handle para a função, use a sintaxe adequada para chamar funções:
(...)
getche();

Outra coisa, note que nas funções: rotsoma, rotsubtracao, rotmultiplicacao e rotdivisao você invoca saida(). no laço switch de main() o programa chama as rotinas de operações e invoca saida() novamente.

Acho que é isso,

até a próxima!

Editado por == Douplus ==
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...