Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então, eu fiz um código para uma calculadora, onde o usuário faz digita os numeros 1 e 2, escolhe a operação, o programa mostra o resultado, e pergunta se o usuário quer continuar com a conta, utilizando o resultado obtido, fazer uma nova conta, ou finalizar o programa, como sou bem iniciante, fiz pra aprender um pouco das funçoes :P
São 6 funções + o main:
-soma( somar )
-subt( subtrair )
-mult( multiplicar )
-divi( dividir )
-calc(calculadora onde chama as outras funçoes e caso o usuario escolha nova conta)
-ccont(calculadora onde chama as outras funçoes, mas ao invés de usar N1 (operação) N2, usa o RESULTADO da função CALC
O main apenas pede n1 e n2, chama a calc, que pergunta a operação, chama a operação, retorna, mostra, pergunta se quer fazer nova conta, continuar, finalizar, se nova conta volta pro inicio de calc, se continuar vai pra ccont, se finalizar fecha a função.
Mas parece não estar sequer chamando calc, gostaria que me ajudassem com isso, já comecei a usar o Code::Block aqui :P
Código
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float escolhas(float resuld);
float cconta(float resul, float n2, int x, int y);
float calc(float n1,float n2, int x, int y);
float soma(float n1,float n2);
float subt(float n1,float n2);
float mult(float n1,float n2);
float divi(float n1,float n2);
float main();
float soma(float n1, float n2)
{
float res;
res = n1+n2;
return res;
}
float subt(float n1, float n2)
{
float res;
res = n1-n2;
return res;
}
float mult(float n1, float n2)
{
float res;
res = n1*n2;
return res;
}
float divi(float n1, float n2)
{
float res;
res = n1/n2;
return res;
}
float calc(float nu1, float nu2, int x,int y)
{
int xx,yy = y,nccc;
float resul,n1,n2;
char op,op2[] = {"sim"},op3[3];
if (yy==1) xx=x;
while (xx=1)
{
printf("\nDigite A=SOMA B=SUBTRACAO C=MULTIPLICACAO D=DIVISAO\n");
scanf(" %c",&op);
if ((op=='a') || (op=='A'))
{
resul = soma(n1,n2);
printf("\nResultado: %.2f\n",soma(n1,n2));
}
else if ((op=='b') || (op=='B'))
{
resul = subt(n1,n2);
printf("\nResultado: %.2f\n\n",subt(n1,n2));
}
else if ((op=='c') || (op=='C'))
{
resul = mult(n1,n2);
printf("\nResultado: %.2f\n\n",mult(n1,n2));
}
else if ((op=='d') || (op=='D'))
{
if (nu2==0) printf("Nao existe divisao por zero!\n\n");
else
{
resul = divi(n1,n2);
printf("\nResultado: %.2f\n",divi(n1,n2));
}
}
escolhas(resul);
}
return resul;
}
else if (yy==0)
{
return 0;
}
}
float cconta(float resulc, float nu2, int x,int yy)
{
int nccc,xx;
float n1, resulcc = resulc,n2 = nu2,resul;
char op;
if (yy==1)
{
xx = x;
while (xx = 1)
{
printf("\nDigite A=SOMA B=SUBTRACAO C=MULTIPLICACAO D=DIVISAO\n");
scanf(" %c",&op);
if ((op=='a') || (op=='A'))
{
resulcc = soma(resul,n2);
printf("\nResultado: %.2f\n",soma(resulcc,n2));
}
else if ((op=='b') || (op=='B'))
{
resulcc = subt(resul,n2);
printf("\nResultado: %.2f\n\n",subt(resulcc,n2));
}
else if ((op=='c') || (op=='C'))
{
resulcc = mult(resul,n2);
printf("\nResultado: %.2f\n\n",mult(resulcc,n2));
}
else if ((op=='d') || (op=='D'))
{
if (n2==0) printf("Nao existe divisao por zero!\n\n");
else
{
resul = divi(resulcc,n2);
printf("\nResultado: %.2f\n",divi(resulcc,n2));
}
}
escolhas(resulcc);
}
return resul;
}
else if (yy==0)
{
return 0;
}
}
float escolhas(float resuld)
{
int x,y,nccc,fecha;
float n1,n2,resul = resuld;
printf("\n\nDigite 1 para uma nova conta, Digite 2 para continuar a conta, 3 para finalizar\n\n");
scanf("%d", &nccc);
if (nccc==1)
{
y = 1;
x = 1;
printf("\nDigite n1\n");
scanf("%d",&n1);
printf("\nDigite n2\n");
scanf("%d",&n2);
calc(n1,n2,x,y);
}
else if (nccc==2)
{
y = 1;
x = 1;
printf("\nDigite n2 para a proxima conta\n");
scanf("%d",&n2);
cconta(resuld,n2,x,y);
}
else if (nccc==3)
{
y = 0;
x = 0;
fecha = 2;
main();
}
else printf("\n\nOpcao invalida\n\n");
}
float inicio()
{
int inicalc;
printf("\n1 - Iniciar Calculadora 2 - Fechar\n");
scanf("%d",(&inicalc));
return inicalc;
}float n1,n2,ress;
int y=1,x,inicalc, cont = 1;
while (cont==1)
{
inicalc = inicio();
switch (inicalc)
{
case 1:
{
printf("Digite n1\n");
scanf("%f",&n1);
printf("\nDigite n2\n");
scanf("%f",&n2);
x=1;
y=1;
ress = calc(n1,n2,x,y);
printf("\n\n\tResultado das operacoes feitas: %.2f\n", ress);
}
case 2:
{
cont = 0;
}
}
}
}
EDIT: Dei uma modificada, agora ele chama, mas ainda nao faz as contas e nem fecha quando escolho a opção de fechar a calculadora, acho que ficou melhor do que estava antes, mas também mais complicado T_T, espero que consigam entender xD
Carregando comentários...