Calculadora
Publicado por Thiago 27/01/2006
[ Hits: 9.137 ]
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);
}
Agenda Telefônica Simples em C
Divisores simultâneos de 2 números
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (4)
Como posso remover arquivos MSG duplicados das minhas pastas de forma ... (0)









