Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ruka284

Calculador em c

Mensagens Recomendadas

Ruka284

Qual vossa opinião, onde detectaram erros.

#include<stdio.h>
#include <stdlib.h>
int main()
{
 int num1,num2;
 int op;
 int resp;
 // menu das operações
 printf("o menu abaixo indicado com as operacoes \n:");
 printf("1 para somar\n");
 printf("2 para subtrair\n");
 printf("3 para multiplicar\n");
 printf("4 para dividir\n");
 scanf("%d",&op);
 //introdução de dados
 printf("introduzir 1 valor  ");
 scanf("%d",&num1);
 printf("introduzir 2 valor  ");
 scanf("%d",&num2);
 //o que esta abaixo mencionado e operação que queremos fazer e as formulas
 switch(op)
 {
   case (1): resp=num1+num2;
     break;
   case (2): resp=num1-num2;
     break;
   case (3): resp=num1*num2;
     break;
   case (4): resp=num1/num2;
     break;
 }
 // saida dos resultados para o utilizador saber
 printf("\n o resultado e: %d\n",resp);
 getchar();
 return 0;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Só tenho uma coisa a apontar (além da deficiente indentação):

Habitua-te a usar sempre um default no switch


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ruka284

Só tenho uma coisa a apontar (além da deficiente indentação):

o que queres dizer com a deficiente indentação??

Habitua-te a usar sempre um default no switch

podes me dar exemplo s.f.f.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg
   switch(op)
   {
       case 1: resp = num1 + num2;
               break;
       case 2: resp = num1 - num2;
               break;
       case 3: resp = num1 * num2;
               break;
       case 4: resp = num1 / num2;
               break;
       default: printf("Opcao invalida\n");
                exit(EXIT_FAILURE);
                break;
   }

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

faz validacao no input do utilizador!


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ruka284

switch(op)
{
	case 1: resp = num1 + num2;
			break;
	case 2: resp = num1 - num2;
			break;
	case 3: resp = num1 * num2;
			break;
	case 4: resp = num1 / num2;
			break;
	default: printf("Opcao invalida\n");
			 exit(EXIT_FAILURE);
			 break;
}

Obrigado fica melhor, se eu escolher opção 5, como não esta declarada da erro.

muito obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

como o processo de validação e leitura do buffer de entrada não é algo muito simples, usa este código à descrição:

#include <stdarg.h>

#define BUFFER_SIZE 256

int read_int(const char * message, ...)
{
 char fmessage[bUFFER_SIZE];
 int ok, value;
 va_list ap;

 // formatar a mensagem a ser apresentada
 va_start (ap, message);
 vsnprintf(fmessage, BUFFER_SIZE, message, ap);
 va_end (ap);

 // ciclo de pedido de um valor numérico inteiro
 do
 {
   // apresentar a mensagem de pedido
   printf("%s", fmessage);
   fflush(stdout);

   // ler o valor do buffer de entrada
   // a variavel ok terá o número de elementos lidos do buffer de entrada
   // isto quer dizer que se não conseguir ler nada, terá o valor de 0 = falso
   // o que invalidará a saída do ciclo de pedido
   ok = scanf("%d", &value);

   // limpar o buffer de entrada de algum "lixo" que possa ficar depois de ler o número
   while (getchar() != '\n');
 } while (!ok);

 // retornar o valor lido
 return value;
}

int main()
{
 int min = 10, max = 20, value = 0;

 do
 {
   value = read_int("insira um valor entre %d e %d : ", min, max);
 } while (value < min || value > max);

 printf("o valor inserido foi : %d\n", value);

 return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

Boas!

Outra pequena melhoria, começa a fazer funcoes auxiliares, por exemplo podes fazer uma funcao para apresentar o menu, e outra para fazer as operaçoes.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.