-4
I have tried to use some other topics here but unfortunately they have not solved my problem. The most I could was showing 3.00 using float, but I don’t think I used it correctly. Whenever I divide I never return decimal number, for example 7/2 = 3 or 10/3 = 3. And another problem, how do I get my code instead of terminating the execution back to the "choose an operation"?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <stdlib.h>
int soma (int s1, int s2)
{
int resultado;
resultado = s1+s2;
return(resultado);
}
int subtracao (int sub1, int sub2)
{
int resultado;
resultado = sub1-sub2;
return (resultado);
}
int multiplicacao (int m1, int m2)
{
int resultado;
resultado = m1*m2;
return (resultado);
}
int divisao (int d1, int d2)
{
int resultado;
if (d1==0 && d2==0){
printf ("Nao é possivel dividir por zero!");
}
else{
resultado = d1/d2;
}
return (resultado);
}
int fatorial (int numfat)
{
int resultado, fat;
resultado=1;
for (fat=1;fat<=numfat;fat++)
{
resultado=resultado*fat;
}
return (resultado);
}
int potencia (int base, int exp)
{
int resultado;
if (exp==0)
return 1;
else if (exp==1)
return base;
return resultado=base*potencia(base, exp-1);
}
int main (void)
{
int op, num1, num2, numfato, bas, expo, resultado;
printf ("\n1 - Adicao (+)\n");
printf ("2 - Subtracao (-)\n");
printf ("3 - Multiplicacao (*)\n");
printf ("4 - Divisao (/)\n");
printf ("5 - Fatoral (!)\n");
printf ("6 - Potenciacao (^)\n");
printf ("\nEscolha a operacao que sera realizada:\n");
scanf ("%d", &op);
system("cls");
switch (op){
case 1:
printf ("Operacao escolhida > ADICAO\n");
printf ("Insira o primeiro numero:\n");
scanf ("%d", &num1);
printf ("Insira o segundo numero:\n");
scanf ("%d", &num2);
resultado=soma(num1, num2);
printf ("Resultado da operacao: %d\n", resultado);
break;
case 2:
printf ("O peracao escolhida > SUBTRACAO\n");
printf ("Insira o primeiro numero:\n");
scanf ("%d", &num1);
printf ("Insira o segundo numero:\n");
scanf ("%d", &num2);
resultado=subtracao(num1, num2);
printf ("Resultado da operacao: %d\n", resultado);
break;
case 3:
printf ("Operacao escolhida > MULTIPLICACAO\n");
printf ("Insira o primeiro numero:\n");
scanf ("%d", &num1);
printf ("Insira o segundo numero:\n");
scanf ("%d", &num2);
resultado=multiplicacao(num1, num2);
printf ("Resultado da operacao: %d\n", resultado);
break;
case 4:
printf ("Operacao escolhida > DIVISAO\n");
printf ("Insira o primeiro numero:\n");
scanf ("%d", &num1);
printf ("Insira o segundo numero:\n");
scanf ("%d", &num2);
resultado=divisao(num1, num2);
printf ("Resultado da operacao: %d\n", resultado);
break;
case 5:
printf ("Operacao escolhida > FATORIAL\n");
printf ("Insira o numero a ter sua fatorial calculada:\n");
scanf("%d", &numfato);
resultado=fatorial(numfato);
printf ("Resultado da operacao: %d\n", resultado);
break;
case 6:
printf ("Operacao escolhida > POTENCIACAO\n");
printf ("Insira a base:\n");
scanf ("%d", &bas);
printf ("Insira o expoente:\n");
scanf ("%d", &expo);
resultado=potencia(bas,expo);
printf("Resultado da operacao: %d\n", resultado);
break;
default:
printf ("OPCAO INVALIDA\n");
}
getch();
return 0;
}
The division of two
int
's results in anotherint
(with "automatic" rounding). If you want the decimals, you have to change everything tofloat
ordouble
: https://answall.com/q/453132/112052– hkotsubo
This answers your question? decimal division result
– Rafael Tavares