Olá, caros amigos do fórum.
Fiz essa calculadora em C, porém quando escolhi Multiplicação e digitei o seguinte numero: 1995425848 multiplicado por 2, ele trocou o primeiro por este numero 1995425792 e fez a multiplicação.
Testei também com as outras operações e acontece a mesma coisa.
O que pode estar acontecendo de errado?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float R, A, B;
int rotadicao(void);
int rotsubtracao(void);
int rotmultiplicacao(void);
int rotdivisao(void);
int rotpotencia(void);
int rotraizquad(void);
int main(void)
{
char TECLA;
int OPCAO = 0;
while (OPCAO != 7)
{
system("clear || cls");
printf("\n - Calculadora - \n\nGabruna Development\n");
printf("\n\nMenu principal\n");
printf("--------------------\n\n");
printf("1 - Adicao\n");
printf("2 - Subtracao\n");
printf("3 - Multiplicacao\n");
printf("4 - Divisao\n");
printf("5 - Potenciacao\n");
printf("6 - Raiz Quadrada\n");
printf("7 - Fim de programa\n\n");
printf("Escolha uma opcao: "); setbuf(stdin, NULL); scanf("%d", &OPCAO);
if (OPCAO != 7)
{
switch (OPCAO)
{
case 1: rotadicao(); break;
case 2: rotsubtracao(); break;
case 3: rotmultiplicacao(); break;
case 4: rotdivisao(); break;
case 5: rotpotencia(); break;
case 6: rotraizquad(); break;
default: printf("\nOpcao invalida! \nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
break;
}
}
}
return 0;
}
int rotadicao(void)
{
system("clear || cls");
printf("\n\nRotina de Soma\n");
printf("-------------------\n\n");
printf("Entre um valor para A: ");
setbuf(stdin, NULL); scanf("%f", &A);
printf("Entre um valor para B: ");
setbuf(stdin, NULL); scanf("%f", &B);
R = A + B;
printf("\nA soma entre %9.2f e %9.2f = %9.2f\n", A, B, R);
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}
int rotsubtracao(void)
{
system("clear || cls");
printf("\n\nRotina de Subtracao\n");
printf("-------------------\n\n");
printf("Entre um valor para A: ");
setbuf(stdin, NULL); scanf("%f", &A);
printf("Entre um valor para B: ");
setbuf(stdin, NULL); scanf("%f", &B);
R = A - B;
printf("\nA subtracao entre %9.2f e %9.2f = %9.2f\n", A, B, R);
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}
int rotmultiplicacao(void)
{
system("clear || cls");
printf("\n\nRotina de Multiplicacao\n");
printf("-------------------\n\n");
printf("Entre um valor para A: ");
setbuf(stdin, NULL); scanf("%f", &A);
printf("Entre um valor para B: ");
setbuf(stdin, NULL); scanf("%f", &B);
R = A * B;
printf("\nA multiplicacao entre %15.2f e %15.2f = %15.2f\n", A, B, R);
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}
int rotdivisao(void)
{
system("clear || cls");
printf("\n\nRotina de Divisao\n");
printf("-------------------\n\n");
printf("Entre um valor para A: ");
setbuf(stdin, NULL); scanf("%f", &A);
printf("Entre um valor para B: ");
setbuf(stdin, NULL); scanf("%f", &B);
if (B == 0)
printf("Erro na divisao\n");
else
{
R = A / B;
printf("\nA divisao entre %9.2f e %9.2f = %9.2f\n", A, B, R);
}
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}
int rotpotencia()
{
system("clear || cls");
printf("Rotina de Potenciacao\n");
printf("-------------------\n\n");
printf("Entre um valor para base: ");
setbuf(stdin, NULL); scanf("%f", &A);
printf("Entre um valor para o expoente: ");
setbuf(stdin, NULL); scanf("%f", &B);
R = pow(A, B);
printf("A potenciacao de %9.2f elevado a %9.2f = %9.2f\n", A, B, R);
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}
int rotraizquad()
{
system("clear || cls");
printf("Rotina de Raiz Quadrada\n");
printf("-------------------\n\n");
printf("Entre um valor: ");
setbuf(stdin, NULL); scanf("%f", &A);
R = sqrt(A);
printf("A raiz quadrada de %9.2f = %9.2f\n", A, R);
printf("\nTecle <Enter> para acessar o menu: ");
getchar() + scanf("Enter");
return 0;
}