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

Ajudem por favor


Marcos Sanches

Pergunta

Eu sou iniciante no c++ e estava fazendo uma calculadora, todas as opções estão funcionando menos a de elevar o número a 2, você bota o número mas o programa fecha. Olhem o código aí:

#include <stdio.h>

main () {
/*Janela Principal*/
label0:
int enter;
printf ("Selecione a operacao:\n\
Soma...............<1>\n\
Subtracao..........<2>\n\
Multiplicacao......<3>\n\
Divisao............<4>\n\
Elevar a 2.........<5>\n\
Fechar Programa....<0>\n\
");
scanf ("%i", &enter);
if (enter == 1) {
          goto soma;
          }
if (enter == 2) {
          goto sub;
          }
if (enter == 0) {
          goto fim;
          }
if (enter == 3) {
          goto mult;
          }
if (enter == 4) {
          goto div;
          }
if (enter == 5) {
          goto sqr2;
          }
else {
     goto fim;
     }
/*Fim*/
     
     /*Soma*/
     soma:
     float Snum1, Snum2;
     printf ("Selecione o Primeiro Numero:..");
     scanf ("%f", &Snum1);
     printf ("Selecione o Segundo Numero:...");
     scanf ("%f", &Snum2);
     float Sresultado;
     Sresultado = Snum1 + Snum2;
     printf ("O resultado e: %f \n", Sresultado);
     int Senter;
     printf ("Deseja somar novamente\?   <1>Sim <0>não: ");
     scanf ("%i", &Senter);
     if (Senter == 1) {
                goto soma;
                }
     if (Senter == 0) {
                goto label0;
                }
     else {
          goto fim;
          }
     /*Fim*/
     
     /*Subtração*/
     sub:
     float snum1, snum2;
     printf ("Selecione o Primeiro Numero:..");
     scanf ("%f", &snum1);
     printf ("Selecione o Segundo Numero:...");
     scanf ("%f", &snum2);
     float sresultado;
     sresultado = snum1 - snum2;
     printf ("O resultado e: %f \n", sresultado);
     int senter;
     printf ("Deseja Subtrair novamente\?   <1>Sim <0>não: ");
     scanf ("%i", &senter);
     if (senter == 1) {
                goto sub;
                }
     if (senter == 0) {
                goto label0;
                }
     else {
          goto fim;
          }
     /*Fim*/
     
     /*Multiplicação*/
     mult:
     float mnum1, mnum2;
     printf ("Selecione o primeiro Numero..");
     scanf ("%f", &mnum1);
     printf ("Selecione o segundo Numero...");
     scanf ("%f", &mnum2);
     float mresultado;
     mresultado = mnum1 * mnum2;
     printf ("O resultado e: %f \n", mresultado);
     int menter;
     printf ("Deseja Multiplicar novamente\?    <1>Sim <0>não: ");
     scanf ("%i", &menter);
     if (menter == 1) {
                goto mult;
                }
     if (menter == 0) {
                goto label0;
                }
     else {
          goto fim;
          }
     /*Fim*/
     
     /*Divisão*/
     div:
     float dnum1, dnum2;
     printf ("Selecione o primeiro Numero..");
     scanf ("%f", &dnum1);
     printf ("Selecione o segundo Numero...");
     scanf ("%f", &dnum2);
     float dresultado;
     dresultado = dnum1 / dnum2;
     printf ("O resultado e: %f \n", dresultado);
     int denter;
     printf ("Deseja Dividir novamente\?    <1>Sim <0>não: ");
     scanf ("%i", &denter);
     if (denter == 1) {
                goto div;
                }
     if (denter == 0) {
                goto label0;
                }
     else {
          goto fim;
          }
     /*Fim*/
     
     /*Elevar a 2*/
     sqr2:
     float sqr2num1;
     printf ("Selecione o Numero.. ");
     scanf ("%f", &sqr2num1);
     float sqr2resultado;
     sqr2resultado = sqr2num1 * sqr2num1;
     printf ("O resultado e: %f \n", sqr2resultado);
     int sqr2enter;
     printf ("Deseja elevar a 2 Novamente?   <1>Sim <0>não: ");
     scanf ("i", &sqr2enter);
     if (sqr2enter == 1) {
                   goto sqr2;
                   }
     if (sqr2enter == 0) {
                   goto label0;
                   }
     else {
          goto fim;
          }
     /*Fim*/
     
fim:
return 0;    
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá Marcos,

No scanf onde você pergunta se deseja elevar a 2 novamente tá faltando o %.

Deveria ser scanf ("%i", &sqr2enter);

Aproveitando, a linguagem C/C++ tem estruturas melhores que "goto".

Tenta refazer seu programa usando switch/case dentro de um laço while ou do/while.

Bom estudo.

qualquer coisa avisa.

Abraços

Editado por CPP
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...