Calculadora
Publicado por Thiago 27/01/2006
[ Hits: 9.144 ]
Uma calculadora simples que implementa o conceito de modularização através de funções. Este conceito é de suma importância, pois C é uma linguagem estruturada e basicamente todos os recursos que nos são disponibilizados por ela são por meio de suas bibliotecas de funções.
/* Programa: CALCULADORA2.C
Por: thiagoamm
OBS: Programa baseado no fonte do livro Linguagem C
(Estudo dirigido), Editora: Érica, Autor: Augusto N.G Manzano */
#include <stdio.h>
// Variáveis globais
float r,a,b;
char tecla;
// Protótipos de funções
int rotadicao(void);
int rotsubtracao(void);
int rotmultiplicacao(void);
int rotdivisao(void);
void entrada(void);
void saida(void);
// Função principal ou de execução
int main()
{
int opcao = 0;
while (opcao != 5)
{
puts("\n\nMenu Principal\n");
puts("----------------\n\n");
puts("1 - Adicao\n");
puts("2 - Subtracao\n");
puts("3 - Multiplicacao\n");
puts("4 - Divisao\n");
puts("5 - Fim de Programa\n\n");
printf("Escolha uma opcao: ");
fflush(stdin);
scanf("%d",&opcao);
if (opcao != 5)
{
switch (opcao)
{
case 1:
rotadicao();
break;
case 2:
rotsubtracao();
break;
case 3:
rotmultiplicacao();
break;
case 4:
rotdivisao();
break;
default:
printf("Opcao invalida - Tecle <Enter>: ");
fflush(stdin);
while ((tecla = getchar()) != '\r')
break;
}
}
}
return(0); // retorna 0 para o S.O
}
void entrada(void)
{
printf("Informe o valor de A: ");
fflush(stdin);
scanf("%f",&a);
printf("Informe o valor de B: ");
fflush(stdin);
scanf("%f",&b);
return; // Retorna valor indefinido para função chamadora - main()
}
void saida(void)
{
printf("\nO resultado entre A e B = %6.2f \n",r);
printf("\nTecle <Enter> para acessar o menu: ");
fflush(stdin);
while ((tecla = getchar()) != '\r')
return;
}
float calculo(float x, float y, char operador)
{
float resultado;
switch (operador)
{
case '+' :
resultado = x + y;
break;
case '-' :
resultado = x - y;
break;
case '*' :
resultado = x * y;
break;
case '/' :
resultado = x / y;
break;
}
return (resultado);
}
int rotadicao(void)
{
printf("\n\nRotina de Adicao\n");
printf("------------------\n\n");
entrada();
r = calculo(a,b,'+');
saida();
return(0);
}
int rotsubtracao(void)
{
printf("\n\nRotina de Subtracao\n");
printf("---------------------\n\n");
entrada();
r = calculo(a,b,'-');
saida();
return(0);
}
int rotmultiplicacao(void)
{
printf("\n\nRotina de Multiplicacao\n");
printf("-------------------------\n\n");
entrada();
r = calculo(a,b,'*');
saida();
return(0);
}
int rotdivisao(void)
{
printf("\n\nRotina de Divisao\n");
printf("-------------------\n\n");
entrada();
if (b == 0)
{
printf("\nErro de divisao\n");
printf("\nTecle <Enter> para acessar o menu: ");
fflush(stdin);
while ((tecla = getchar()) != '\r')
return(0);
}
else
{
r = a / b;
saida();
}
return(0);
}
Parte 2 - Sessão de estudo sobre MATRIZES
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Secure boot, artigo interessante, nada técnico. (5)
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









