Calculadora

Publicado por Thiago 27/01/2006

[ Hits: 8.779 ]

Download CALCULADORA2.C




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.

  



Esconder código-fonte

/* 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);
}

Scripts recomendados

Resolvendo Equações de 1º e 2º grau

Binário para decimal

Cálulo de expressão do 2 grau ( Baskara )

gerenciador de historico de comandos

Criando um Quadrado com asteriscos


  

Comentários
[1] Comentário enviado por doradu em 29/01/2010 - 12:58h

muito bom

se pudesse implementar pra gerar um resultado com casa decimais apenas se for necessário

abraço

[2] Comentário enviado por doradu em 29/01/2010 - 13:00h

poderia tb colocar as expressões 'soma' 'diferença' etc. na linha de cada resultado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts