Calculadora

Publicado por Thiago 27/01/2006

[ Hits: 9.281 ]

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

Ordenação

Constantes de barra invertida

MMC entre 2 números

Selection sort

Primeiro programa em C


  

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