Ir para o conteúdo
Super.D

Calculadora em console application

Mensagens Recomendadas

Super.D    3
Super.D

Olá, estou a iniciar em C++ sozinho pois o curso de programação não abriu o ano passado e estou à espera que as aulas terminem, mas estou a ver tutoriais aqui no P@P e no youtube. Então estava fazendo uma espécie de "calculadora" em console application, segue o código, o compilador Dev C++ dá erro na linha 16:

Desculpem a desarrumação.  :)

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

int main ()
{
double adicao,subtracao,multiplicacao,divisao,x,y,total;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

switch (op);

case 1: 
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      adicao= x + y;

case 2:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      subtracao= x - y;

case 3:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      multiplicacao= x * y;
     
case 4:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      divisao= x / y;

cout << "Total é de: %d" << endl:
      
         

system("pause");
return 0;   
}

Quero em c++

EDIT: Titulo modificado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

O erro da linha 16 é o uso dum identificador não declarado.


Nota:

Em C (não sei C++, mas deve ser igual) o switch é composto por três partes:

1) a palavra chave switch propriamente dita

2) a condição entre parentesis

3) uma instrução (ou bloco)

O teu switch tem isto tudo --- a instrução é a instrução vazia.

Mas não faz muito sentido um switch vazio.

Tens outro erro na linha 18: usas um case num sitio ilegal --- o case sõ pode ser usado "dentro" dum switch.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    172
pikax

Não esquecer do Break;

switch(op)
{
  case 1:
        //qualquer coisa......
        break;//senão passa para o caso seguinte
  case 2:
        //qualquer coisa......
        break;//senão passa para o caso seguinte
//etc
}

É melhor dar um exemplo de como se utiliza o break :cheesygrin:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1134
HappyHippyHippo

de lembrar que o uso do break é o caso comum mas existe situações que isso não acontece, sendo mesmo melhor nem sequer usa-lo:

switch(x) {
  case 1:
    // executa "código 1"
  case 2:
    // executa "código 2"
}

se x = 2 só o "código 2" é executado

se x = 1 os dois ("código 1" e "código 2") são executados

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    172
pikax

Sim, mas pelo o código que ele deu, não parece que ele queira fazer isso.

acho que o não uso de break é mais para casos um bocado mais chatos de se fazer, como por exemplo:

void operationInputKeyboard(char key)
{
  switch(key)
  {
     case '1':
     case '2':
     case '3':
     case '4':
     case '5':
     //.....
     case '10': doskill(key);
                     break;
     case 'A':
     //.....
     case 'Z':
                    writeCharOnScreen(key);
                    break;
     default:
                   doNothing();
                   break;
     
  }
}

Pelo o menos na minha opinião, claro que ajuda bastante quando temos uma opção para fazer tudo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Patrícia Chaves    0
Patrícia Chaves

Olá, estou a iniciar em C++ sozinho pois o curso de programação não abriu o ano passado e estou à espera que as aulas terminem, mas estou a ver tutoriais aqui no P@P e no youtube. Então estava fazendo uma espécie de "calculadora" em console application, segue o código, o compilador Dev C++ dá erro na linha 16:

Desculpem a desarrumação.  B)

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

int main ()
{
double adicao,subtracao,multiplicacao,divisao,x,y,total;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

switch (op);

case 1: 
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      adicao= x + y;

case 2:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      subtracao= x - y;

case 3:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      multiplicacao= x * y;
     
case 4:
      cout << "Digite o primeiro numero: " << x << endl;
      cout << "Digite o segundo numero: " << y << endl;
      divisao= x / y;

cout << "Total é de: %d" << endl:
      
         

system("pause");
return 0;   
}

Quero em c++

Boa noite.

Tenho a solução para o teu problema. Havia coisas que estavas a fazer mal. Vou colocar aqui o código corrigido e depois vou-te explicar o que fiz.

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

int main ()
{
double adicao,subtracao,multiplicacao,divisao,x,y,total;

int op;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

cin >> op;

switch (op)
{
case 1: 
	  cout << "Digite o primeiro numero: " << endl;
	  cin >> x;
	  cout << "Digite o segundo numero: " << endl;
	  cin >> y;
	  adicao = x + y;
	  cout << "Total é de: " << adicao << endl;
	  break;

 case 2:
	  cout << "Digite o primeiro numero: " << endl;
	  cin >> x;
	  cout << "Digite o segundo numero: " << endl;
	  cin >> y;
	  subtracao= x - y;
	  cout << "Total é de: " << subtracao << endl;
	  break;

 case 3:
	  cout << "Digite o primeiro numero: " << endl;
	  cin >> x;
	  cout << "Digite o segundo numero: " << endl;
	  cin >> y;
	  multiplicacao= x * y;
	  cout << "Total é de: " << multiplicacao << endl;
	  break;
     
 case 4:
	  cout << "Digite o primeiro numero: " << endl;
	  cin >> x;
	  cout << "Digite o segundo numero: " << endl;
	  cin >> y;
	  divisao= x / y;
	  cout << "Total é de: " << divisao << endl;
	  break;
}
      
         

system("pause");
return 0;   
}

Não estavas a declarar a variável op, como tem que ser um inteiro coloquei assim:

int op;

Depois de ser apresentado no ecrã o menu das opções não estavas a introduzir o valor da opção, ou seja:

cin >> op;

Assim lê do teclado o valor da opção e coloca esse valor na variável op.

Estavas a utilizar mal a estrutura switch, a estrutura correcta é:

switch(op)
{
  case 1:
        //o que quer que se faça
        break;
  case 2:
        //o que quer que se faça
        break;
//etc
}

No teu código faltavam-te as chavetas '{ }' e tinhas ';' a seguir ao switch o que está errado.

Depois dentro de todos os case estavas a cometer o mesmo erro:

cout << "Digite o primeiro numero: " << x << endl;
cout << "Digite o segundo numero: " << y << endl;

O erro aqui é estares a escrever na consola e não estares a ler o primeiro e o segundo numero, porque o cout só se utiliza para escrever, para ler tem que ser o cin, que lê o valor introduzido e atribuiu a uma dada variável, neste caso x e y, então seria:

cout << "Digite o primeiro numero: " << endl;
cin >> x;
cout << "Digite o segundo numero: " << endl;
cin >> y;

Por fim como queres que imprima o resultado da operação, esse resultado tem que se imprimir em cada case e não fora do case. Mas no teu código só estavas a escrever no ecrã " Total é de:" e depois não imprimias o resultado, então a forma correcta é a seguinte:

cout << "Total é de: " << adicao << endl; // no case 1

Se quisesses por de uma forma mais "bonitinha" no ecrã podias por:

cout << "O total de " << x << " + " << y << " = " << adicao << endl;

Espero que tivesse sido útil a minha ajuda, alguma dúvida é só dizeres :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
RiKoNnEcT    0
RiKoNnEcT

Muito boa explicação Patricia, só há uma coisa que pode ser mais fácil e poupa umas linhas de código

em vez de escrever em todos os case

cout<<"Total é de:"<<adiccao<<endl;

cout<<"Total é de:"<<subtraccao<<endl;

.

.

.

basta em cada case atribuir o resultado a uma variável generica como por exemplo "total"

e depois no final do switch faz

cout<<"Total é de :"<<total<<endl

Ficando uma coisa deste genero:

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

int main ()
{
double x,y,total;

int op;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

cin >> op;

switch (op)
{
        case 1:
                  cout << "Digite o primeiro numero: " << endl;
                  cin >> x;
                  cout << "Digite o segundo numero: " << endl;
                  cin >> y;
                  total = x + y;
                  
                  break;

         case 2:
                  cout << "Digite o primeiro numero: " << endl;
                  cin >> x;
                  cout << "Digite o segundo numero: " << endl;
                  cin >> y;
                  total= x - y;
                 
                  break;

         case 3:
                  cout << "Digite o primeiro numero: " << endl;
                  cin >> x;
                  cout << "Digite o segundo numero: " << endl;
                  cin >> y;
                  total= x * y;
                  
                  break;
     
         case 4:
                  cout << "Digite o primeiro numero: " << endl;
                  cin >> x;
                  cout << "Digite o segundo numero: " << endl;
                  cin >> y;
                  total= x / y;
                  
                  break;
}
cout << "Total é de: " << total << endl;    
         

system("pause");
return 0;  
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Então e passar o x e o y para fora do ciclo? :P

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

int main ()
{
double x,y,total;

int op;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

cin >> op;

cout << "Digite o primeiro numero: " << endl;
cin >> x;
cout << "Digite o segundo numero: " << endl;
cin >> y;

switch (op)
{
        case 1:
                  total = x + y;
                  break;

         case 2:
                  total= x - y;
                  break;

         case 3:
                  total= x * y;
                  break;
     
         case 4:
                  total= x / y;
                  break;
}
cout << "Total é de: " << total << endl;    
         

system("pause");
return 0;  
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
s4muc4_!)0g@$    0
s4muc4_!)0g@$

Eu realmente não sei como responder à sua pergunta, porque o meu próprio C + + é má ciência. :wallbash:

uma coisa eu te digo, prefiro c++ do que vb net

em relaçao ao problema, a sra patricia tem toda a razao so que eu faria de uma forma mais organizada do genero:

#include <iostream>
#include <cstdlib>
#include <math.h> //nao percebo o interece de ter isto
using namespace std;

int main ()
{
double x, y, total;

cout << "Escolha o numero abaixo para a respectiva escolha:" << endl;
cout << "1) adicao" << endl;
cout << "2) subtracao" << endl;
cout << "3) multiplicacao" << endl;
cout << "4) divisao" << endl;

int op;
cout << "Indique a sua opção: ";
cin >> op; 

switch (op);

case 1:
//     cout << "Digite o primeiro numero: " << x << endl; isto aqui nao esta a fazer cin mas sim a mostrar o que esta dentro de x
      cout << "Digite o primeiro numero: "; cin>>x;
//      cout << "Digite o segundo numero: " << y << endl; a mesma historia
      cout << "Digite o segundo numero: "; cin>>y;
     total = x + y;

case 2:
      cout << "Digite o primeiro numero: "; cin>>x;
      cout << "Digite o segundo numero: "; cin>>y;
      total= x - y;

case 3:
      cout << "Digite o primeiro numero: "; cin>>x;
      cout << "Digite o segundo numero: "; cin>>y;
      total= x * y;
     
case 4:
      cout << "Digite o primeiro numero: "; cin>>x;
      cout << "Digite o segundo numero: "; cin>>y;
      total= x / y;

// cout << "Total é de: %d" << endl: o meu rapaz, o %d e para o printf e o scanf ex:
printf("O total e de %d", total);
         

system("pause");
return 0;  
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade