I was doing a simple "C" calculator just to exercise logic, which I learned and for fun, but I had problems, since I would like to transform it and a scientific calculator, I would need more memory than the Float
can use, so I tried to use Double
, which gave a bizarre error, to give a very large random value when I do (10+10)
for example. Code down using Float.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
//VAR
int conti=0;
float numero1;
float numero2;
float resultado;
char equacao;
int potencia;
int A;
float soma (float numero1,float numero2,float resultado,int primeiravez);
float subtracao (float numero1,float numero2,float resultado,int primeiravez);
float multiplicacao (float numero1,float numero2,float resultado,int primeiravez);
float divisao (float numero1,float numero2,float resultado,int primeiravez);
float porcentagem (float numero1,float numero2,float resultado,int primeiravez);
float raiz(float numero1,float resultado,int primeiravez);
//FIM VAR
//EXPLICAÇÃO
printf("Esse programa faz tudo que uma calculadora simples faz,ou seja.\n");
printf("Soma(+)\nSubtracao(-)\nDivisao(/)\nMultiplicacao(*)\nRaiz(#)\nPorcentagem(%%)\n");
printf("Comece:\n");
//INICIO CÓDIGOS
A=1;
scanf ("%f", &numero2);
scanf ("%s", &equacao);
//INICIO EQUAÇÃO
do{
if(equacao=='+' or equacao=='-' or equacao=='*' or equacao=='=' or equacao=='/'
or equacao=='%' or equacao=='#' ){
//SE SOMA
if(equacao=='+'){
numero1=numero2;
scanf("%f",&numero2);
resultado=soma(numero1,numero2,resultado,A);
scanf("%s",&equacao);
A=0;
}
//SE SUBTRAÇÃO
if(equacao=='-'){
numero1=numero2;
scanf("%f",&numero2);
resultado=subtracao(numero1,numero2,resultado,A);
scanf("%s",&equacao);
A=0;
}
//SE MULTIPLICAÇÃO
if(equacao=='*'){
numero1=numero2;
scanf("%f",&numero2);
resultado=multiplicacao(numero1,numero2,resultado,A);
scanf("%s",&equacao);
A=0;
}
//SE DIVISÃO
if(equacao=='/'){
numero1=numero2;
scanf("%f",&numero2);
resultado=divisao(numero1,numero2,resultado,A);
scanf("%s",&equacao);
A=0;
}
//SE PORCENTAGEM
if(equacao=='%'){
numero1=numero2;
scanf("%f",&numero2);
resultado = porcentagem (numero1,numero2,resultado,A);
scanf("%s",&equacao);
A=0;
}
//SE RAIZ
if(equacao=='#'){
numero1=numero2;
resultado = raiz (numero1,resultado,A);
scanf("%s",&equacao);
A=0;
}
//MOSTRANDO RESULTADO
if(equacao=='='){
printf("%f \n",resultado);
conti=1;
}
}
else{
printf("VALOR INVALIDO \n");
conti=1;
}
}while(conti==0);
system("PAUSE");
return 0;
}
//FUNÇÕES
float soma (float numero1,float numero2,float resultado,int primeiravez){
if(primeiravez==1){
resultado=numero1+numero2;
}else{
resultado=numero2+resultado;
}
return resultado;
}
float subtracao (float numero1,float numero2,float resultado,int primeiravez){
if(primeiravez==1){
resultado=numero1-numero2;
}else{
resultado=resultado-numero2;
}
return resultado;
}
float multiplicacao (float numero1,float numero2,float resultado,int primeiravez){
if(primeiravez==1){
resultado=numero1*numero2;
}else{
resultado=resultado*numero2;
}
return resultado;
}
float divisao (float numero1,float numero2,float resultado,int primeiravez){
if(primeiravez==1){
resultado=numero1/numero2;
}else{
resultado=resultado/numero2;
}
return resultado;
}
float porcentagem (float numero1,float numero2,float resultado,int primeiravez){
if(primeiravez==1){
resultado=numero1*(numero2/100);
}else{
resultado=resultado/(numero2/100);
}
return resultado;
}
float raiz(float numero1,float resultado,int primeiravez){
if(primeiravez==1){
resultado= sqrt(numero1);
}else{
resultado= sqrt(resultado);
}
return resultado;
}