Calculadora
Publicado por Thiago 27/01/2006
[ Hits: 9.288 ]
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);
}
light_konsole - konsole de ultima hora
Ordenando linhas e colunas de matrizes
Classe para manipulação de números complexos
SynapSeq - programa para estimular as ondas cerebrais
Por que seu __DIR__ falhou ou o "inferno" dos caminhos no PHP
Preparando-se para certificações da LPI através do LPI Lab
Migração de Arch Linux para repositórios CachyOS (Uso de Instruções v3 e v4)
Arch Linux com repos do CachyOS para otimização ou usar Gentoo?
Ativando o modo Quake no XFCE4-Terminal
[Tutorial] Configurando Multimaster no Samba 4 AD (DC02) + Explicação de FSMO Roles
[Resolvido] Google Chrome reclamando de perfil em uso após mudar hostname
Como instalar Warsaw no Gentoo? (6)
Senhor Einstein tinha razão mesmo! [RESOLVIDO] (12)
Como insiro e excluo um elemento XML e JSON ao código Javascript (2)
Da pra formatar um netbook MGB e usar algum linux nele? É possível usa... (4)









