Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ruka284

Calculador em c

Recommended Posts

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;
}

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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;
   }

Edited by 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!

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.