Calculadora
Publicado por Thiago 27/01/2006
[ Hits: 9.194 ]
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);
}
Simulador de cronometro com 2 digitos - otimizado
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (1)
Como programar um sistema de controle para distribuições linux em c? (3)









