Jump to content


Photo

Ajuda Na Conclusão Da Calculadora Em C++


  • Faça o login para participar
16 replies to this topic

#1 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 28/05/2009, 11:46

Bom dia galera, tudo bem.

Bom, estou desenvolvendo uma calculadora para um trabalho de faculdade.
Essa calculadora resolve as operações perfeitamente.

Ela funciona da seguinte forma:

10 + 10 = 20
10 - 5 = 5
20 * 2 = 40
30 / 3 = 10

Até aqui está ok. Mas eu gostaria que ela fizesse a operação direto, por exemplo:

10 + 10 = 20 - 5 = 15 * 2 = 30 / 3 = 10

Então galera, é somente essa dúvida, já coloquei e tirei do while e nada. Se alguém puder me ajudar, já agradeço...

O código está abaixo:

#include <cstdlib>
#include <iostream>
using namespace std;

int soma(int n1, int n2)
{
	int somatudo;
	somatudo = n1 + n2;
	return somatudo;
}
int subtrai(int n1, int n2)
{
	int subtraitudo;
	subtraitudo = n1 - n2;
	return subtraitudo;
}
int multiplic(int n1, int n2)
{
	int multiplictudo;
	multiplictudo = n1 * n2;
	return multiplictudo;
}
int divide(int n1,int n2)
{
	int dividetudo;
	dividetudo = n1 / n2;
	return dividetudo;
}
int porcento(int n1, int n2)
{
	int porcentotudo;
	porcentotudo = (n1*n2)/100;
	return porcentotudo;
}

int main()
{// inicio int main
	int valor,num, cont,op;
	float result,num1, num2;
	char sair,operacao,v;
	
	cout<<"########################################################"<<endl;
	cout<<"#													  #"<<endl;
	cout<<"#   PAINEL CALCULADORA								 #"<<endl;
	cout<<"#													  #"<<endl;
	cout<<"#"<<"   + --> soma										 #"<<endl;
	cout<<"#"<<"   - --> subtracao									#"<<endl;
	cout<<"#"<<"   * --> multiplicacao								#"<<endl;
	cout<<"#"<<"   / --> divisao									  #"<<endl;
	cout<<"#"<<"   % --> porecentagem								 #"<<endl;
	cout<<"#													  #"<<endl;
	cout<<"#"<<"  [ C ] COMECAR OU CONTINUAR [ F ] PARA FECHAR		#"<<endl;
	cout<<"#													  #"<<endl;
	cout<<"########################################################"<<endl<<endl;
   
   
   

	 
	cout<<endl<<" --> ";
	cin>>num1;
	//v:
		  //cont;
	cin>>operacao;
		 if (operacao == '+')op = 1;
	else if (operacao == '-')op = 2;
	else if (operacao == '*')op = 3;
	else if (operacao == '/')op = 4;
	else if (operacao == '%')op = 5;
		  
	cout<<endl<<endl;
	 do {
	switch(op){
				case 1:
					 cin>>num2;
					 result = soma(num1, num2);
					 cout<<num1<<" + "<<num2<<" = "<<result;
					 valor = result;
					 break;
				case 2:
					 cin>>num2;
					 result = subtrai(num1, num2);
					 cout<<num1<<" - "<<num2<<" = "<<result;
					 valor = result;
					 break;
				case 3:
					 cin>>num2;
					 result = multiplic(num1, num2);
					 cout<<num1<<" * "<<num2<<" = "<<result;
					 valor = result;
					 break;
				case 4:
					 cin>>num2;
					 result = divide(num1, num2);
					 cout<<num1<<" / "<<num2<<" = "<<result;
					 valor = result;   
					 break;
				case 5:
					 cin>>num2;
					 result = porcento(num1, num2);
					 cout<<num1<<" % "<<num2<<" = "<<result;
					 valor = result;				   
					 break;
				default:
					 cout<<endl;
					 cout<<"NUMERO ERRADO, TENTE DE NOVO"<<endl;
					 cout<<endl;
					 break;
					 
}// final switch case
}// final do
				while(sair!='d');
	
	system("PAUSE");
	return EXIT_SUCCESS;
}// final int main


#2 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 28/05/2009, 12:46

Peraí, não entendi a dúvida. O que é aquele monte de igual na expressão? O que você quer que isso faça exatamente? Pelo que vejo, o código está legal, apenas algumas otimizações que você poderia ter feito, mas nada de mais.

/*DS*/
Não sabe por onde começar? Que tal pelas Regras ?

#3 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 28/05/2009, 13:03

Olá, DarkSign.

Primeiramente quero agradecer pela atenção...

Vamos lá.

A calculadora está compilando perfeitamente. Mas só consigo fazer operações por vez, e não direto, por exemplo:

10 + 10 = 20 --> daqui por diante não consigo subtrair ou usar outro operação para usar com o 20, ou seja, como o resultado foi 20, com isso já quero usar um operador para que faça a operação direta, um exemplo:

10 + 10 = 20 - 5 = 15 e daqui por diante vai fazendo a operação direta.

Não estou conseguindo gravar o resultado para que eu possa usar outro operador e outro numero operando já com o 20 gravado.

Se você pegar uma calculadora comum e fazer as seguinte operações abaixo, dá certo:

operação direta --> 10 + 10 = 20 - 5 = 15 * 2 = 30 / 2 = 10

Acho que agora fiou uma explicação melhor.

Agradeço desde já...



Peraí, não entendi a dúvida. O que é aquele monte de igual na expressão? O que você quer que isso faça exatamente? Pelo que vejo, o código está legal, apenas algumas otimizações que você poderia ter feito, mas nada de mais.

/*DS*/


Edição feita por: xulambs, 28/05/2009, 13:07.


#4 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 28/05/2009, 13:59

Olá, fiz os testes aqui e descobri que é só você retornar o resultado na var num1 e pronto!

Observe:

case 1:
					 cin>>num2;
					 result = soma(num1, num2);
					 cout<<num1<<" + "<<num2<<" = "<<result;
					 valor = result;
					 num1 = result; //Resultado agora é numero 1, para uma nova contagem
					 break;

Ae você vai perceber que o cout imprime o símbolo utilizado, mesmo que você use outro, isso é questão de ajeitar um pouco os couts, mas a expressao com o anterior é realizada agora.

PS: você usa C++ mas programa como se fosse C? Hehehe, que tal uma classe para avaliar a expressão?

/*DS*/
Não sabe por onde começar? Que tal pelas Regras ?

#5 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 28/05/2009, 16:38

É isso mesmo DarkSign, mas tem um problema, só funcionou com soma e subtração, e na multiplicação e divisão compilador dispara.

Fico no aguardo... quanto isso vou tentando.

Há, eu não entendi a frase da sua pergunta: "você usa C++ mas programa como se fosse C? que tal uma classe para avaliar a expressão?".

Como assim programar em C ?

Olá, fiz os testes aqui e descobri que é só você retornar o resultado na var num1 e pronto!

Observe:

case 1:
					 cin>>num2;
					 result = soma(num1, num2);
					 cout<<num1<<" + "<<num2<<" = "<<result;
					 valor = result;
					 num1 = result; //Resultado agora é numero 1, para uma nova contagem
					 break;

Ae você vai perceber que o cout imprime o símbolo utilizado, mesmo que você use outro, isso é questão de ajeitar um pouco os couts, mas a expressao com o anterior é realizada agora.

PS: você usa C++ mas programa como se fosse C? Hehehe, que tal uma classe para avaliar a expressão?

/*DS*/



#6 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 28/05/2009, 17:17

C++ é orientado a objeto, porem vc está programando ele como se fose o C puro, só isso.

De qualquer forma, agora não posso analisar, vejo mais tarde.

Verifica direito ae as funções e retornos.

/*DS*/
Não sabe por onde começar? Que tal pelas Regras ?

#7 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 02/06/2009, 10:28

Perfeito, era isso mesmo, agora está funcionando.

Muito Obrigado...

C++ é orientado a objeto, porem vc está programando ele como se fose o C puro, só isso.

De qualquer forma, agora não posso analisar, vejo mais tarde.

Verifica direito ae as funções e retornos.

/*DS*/



#8 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 02/06/2009, 13:31

De nada, qualquer problema, volte a postar.

/*DS*/
Não sabe por onde começar? Que tal pelas Regras ?

#9 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 25/09/2017, 19:24

Buy Citodon discount worldwide fedex shipping isotretinoin pills Buying Viagra In The Caribbean cialis Order Now Macrobid Bacterial Infections
Soft Sidenifil viagra cialis Viagra Bestellen Gunstig Buy Cytotec 10 Pills

#10 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 08/10/2017, 01:10

Viagra E Cialis Prezzo Tomar Cialis Mujer viagra online pharmacy Cialis Para Impotencia Erfahrungen Mit Viagra Kaufen

#11 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 12/10/2017, 15:17

Kamagra Jellies Cialis Romania cialis online Kamagra Belgique Left Amoxicillin Out Over Night Non Prescription Levitra
Differenza Viagra Generico Vidal Tamoxifene viagra online pharmacy Std Treatment Online
Otitis Ear Amoxil Adult Dose Buy Viagra For Female generic viagra Natural Equivalent To Amoxicillin
Uk Propecia Sales Avana cialis Buy T4 Online Receta Finasteride Comprar Propecia

#12 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 22/10/2017, 09:44

Amoxicillin Without A Prescription Zithromax And Lyme Disease filitra vardenafil tablets Cephalexin And Strep A Kamagra Jelly Buy Online
Doxine Without Prescription Canada levitra Zithromax For Gonorrhea Treatment Viagra Foto Pillola
Albuterol If Swallowed Propecia Online Order Propecia Treatments best price on levitra Viagra Vendita Milano

#13 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 27/10/2017, 20:24

Cialis Prix En Suisse Herbs Similar To Keflex viagra Buy Zithromax Usa
100mg Viagra For Male And Female Where To Buy Amoxicilina Cod Accepted Milan Cephalexin On Line For Dogs best price on levitra Medicina Propecia Propecia Finasteride Problems Where Can I Get Ampicillin Quickly
Order Xenical Online Australia For Sale Provera Pills Overseas The Cost Of Propecia cialis Prescription For Propecia Order 60 Mg Cialis Online Canadian Health And Care Mall
Viagras Definition Thrush And Cephalexin 500 Mg cialis Farmaco Kamagra Keflex Side Effects Renal
Clobetasol With Next Day Deliverycheap Valtrex Canada Kamagra 100mg Amiens Styplon cialis price Wo Viagra Kaufen Comment Durer Plus Longtemps Naturellement Cialis 20 Mg Prezzo Farmacia
Online Pharmacy Using Paypal generic cialis Discount Acticin Elimite On Line Medicine Shop
Does Cephalexin Contain Penicillin Viagra And Cialis Sample Pack Amoxicillin And Metoprolol Interactions viagra online Avapro Differin Classifica Propecia

#14 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 31/10/2017, 21:07

Cialis Tratamiento Impotencia Kamagra Efectos Ajanta Pharma Penecillin And Amoxicillin Are levitra prezzi Discount Viagra Fast Shipping Cos'E Levitra

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 03/11/2017, 02:28

Amoxicillin Once Daily Internetapotheke Viagra Holland viagra Propecia Low Testosterone Causes Pfizer Viagra 100mg Price Comprare Levitra Generico 20mg
Pet Lower Back Pain Treated With Amoxicillin Kamagra En Ligne Pas Cher viagra Kamagra Directions
Finasteride Free Shipping buy accutane in canada Kamagra Oral Jelly Singapore buy viagra Secure Tabs Viagra




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq