Jump to content

Turbine o seu Perfil

Confira a atualização e participe do clube!
Clique e saiba mais

Junte-se ao Clube de Membros VIP

Tenha destaque e diversos benefícios!
Confira Aqui

Acesse nosso Discord

Conheça nossos canais interativos
Confira Aqui
Notícia
  • Adquira já o seu VIP!
Sign in to follow this  
NoSlake

c Calculadora 2.0²

Recommended Posts

Gostei deste tópico e decidi reescrever a mesma calculadora, porém, como estou estudando C fiz em tal linguagem xD

 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>

main()
{
float x,y,res;
char op,replay;

do{
x = 0;
y = 0;
res = 0;
	printf("Bem-vindo a calculadora 1.0.0.0.0.0.0");
	printf("\n--------------------------------------");
	printf("\nDigite 1 para soma;");
	printf("\nDigite 2 para subtracao;");
	printf("\nDigite 3 para divisao;");
	printf("\nDigite 4 para multiplicacao;");
	printf("\nDigite 5 para raiz quadrada;");
	printf("\nSua escolha: ");
	op = getche();
	
	switch(op){
		case '1': 
		printf("\nDigite um valor: ");
		scanf("%f",&x);
		printf("\nDigite outro valor: ");
		scanf("%f",&y);
		res = x+y;
		printf("\nA soma eh: %0.3f",res);
		break;
		case '2': 
		printf("\nDigite um valor: ");
		scanf("%f",&x);
		printf("\nDigite outro valor: ");
		scanf("%f",&y);
		res = x-y;
		printf("\nA subtracao eh: %0.3f",res);
		break;
		case '3': 
		printf("\nDigite um valor: ");
		scanf("%f",&x);
		printf("\nDigite outro valor: ");
		scanf("%f",&y);
		res = x/y;
		printf("\nA divisao eh: %0.3f",res);
		break;
		case '4': 
		printf("\nDigite um valor: ");
		scanf("%f",&x);
		printf("\nDigite outro valor: ");
		scanf("%f",&y);
		res = x*y;
		printf("\nA multiplicacao eh: %0.3f",res);
		break;
		case '5': 
		printf("\nDigite um valor: ");
		scanf("%f",&x);
		res = sqrt(x);
		printf("\nA raiz eh: %0.3f",res);
		break;
		default: printf("\nOpcao inexistente\n"); break;
	}
	
	printf("\nDeseja realizar outra operacao? S ou N: ");
	replay = getche();
	
	printf("\n");
	printf("\n");
	printf("\n");
} while(replay == 's');

system("pause>NULL");
}

 

Comentem se acharam algo desnecessário ou errado, estou aprendendo ainda ^^


Membro - Bronze - Geek - Bronze - Tech - Mod - Coord - Co-Admin - Platinum

Share this post


Link to post
Share on other sites

Gostei da source, o código ficou bom, bom trabalho :yes:

A única coisa que poderia alterar é no final ali, em vez de usar 3 printf, você poderia usar tudo em 1 só

Share this post


Link to post
Share on other sites

De olho assim, eu diria que sua aplicação poderia ficar considerávelmente mais leve descartando algumas bibliotecas declaradas, deixando apenas a STDIO e MATH...

 

 

STDIO:

 

printf()
scanf()
switch()
case:
getchar()  //no lugar de getche()

 

MATH:

 

sqrt()

 

 

E no final, apenas um SYSTEM("PAUSE") basta ^^


Meus brinquedos em WinAPI:

Calculador

MemoryScanner

Faça parte também da DarkProgramming Team!

Share this post


Link to post
Share on other sites
De olho assim, eu diria que sua aplicação poderia ficar considerávelmente mais leve descartando algumas bibliotecas declaradas, deixando apenas a STDIO e MATH...

 

 

STDIO:

 

printf()
scanf()
switch()
case:
getchar()  //no lugar de getche()

 

MATH:

 

sqrt()

 

 

E no final, apenas um SYSTEM("PAUSE") basta ^^

 

Ainda tenho estudado as bibliotecas mas obrigado pelo toque. Na verdade eu me adaptei a adicionar todas essas bibliotecas ao projeto e usar todas as funções que aprendi, ao invés de tentar usar só o necessário :)


Membro - Bronze - Geek - Bronze - Tech - Mod - Coord - Co-Admin - Platinum

Share this post


Link to post
Share on other sites

Olá.

Veja, sua source é eficaz, traz os resultados desejados.

Mas gostaria de deixar umas observações, coisas que me serviram bastante até hoje.

Você está usando um laço, certo?

Se você está usando um laço, não tenha medo de aproveitar ele. Você não precisa reescrever toda hora um printf solicitando os números, faça isso apenas uma vez e deixe o laço se encarregar de repeti-lo pra você.

 do{
   x = 0;
   y = 0;
   res = 0;
       printf("Bem-vindo a calculadora 1.0.0.0.0.0.0");
       printf("\n--------------------------------------");
       printf("\nDigite 1 para soma;");
       printf("\nDigite 2 para subtracao;");
       printf("\nDigite 3 para divisao;");
       printf("\nDigite 4 para multiplicacao;");
       printf("\nDigite 5 para raiz quadrada;");
       printf("\nSua escolha: ");
       op = getche();
       printf("\nDigite um valor: ");
       scanf("%f",&x);
       printf("\nDigite outro valor: ");
       scanf("%f",&y);

 

dessa forma você limpa o escopo, deixa o switch específico para as operações, facilitando a compreensão.

 

switch(op){
           case '1': 
           res = x+y;
           printf("\nA soma eh: %0.3f",res);
           break;
           case '2': 
           res = x-y;
           printf("\nA subtracao eh: %0.3f",res);
           break;
           case '3': 
           res = x/y;
           printf("\nA divisao eh: %0.3f",res);
           break;
           case '4': 
           res = x*y;
           printf("\nA multiplicacao eh: %0.3f",res);
           break;
           case '5': 
           res = sqrt(x);
           printf("\nA raiz eh: %0.3f",res);
           break;
           default: printf("\nOpcao inexistente\n"); break;
       }

 

Não se trata de estar ruim ou bom, mas vise sempre deixar o seu código o menor possível, assim você economiza espaço, tempo para escrevê-lo e a correção de possíveis problemas se tornam mais rápidos.

 

Outra coisa que me acrescentou muito também foi diminuir ao máximo o uso de variáveis. Economiza espaço na escrita e descarta o uso desnecessário de memória.

No caso, poderíamos remover a variavel res, pois a usamos apenas para guardar o resultado. A saída do c aceita que você saia resultados de operações, aproveite isso.

 

Exemplo:

switch(op){
           case '1': 
           printf("\nA soma eh: %0.3f",x+y);
           break;

 

Abraços!


Programming noob:coracao:

Share this post


Link to post
Share on other sites

Essa ideia de diminuir o uso de variáveis eu já conhecia, de fato acabou passando despercebido e não vi que eu poderia exibir o resultado "diretamente", e então acabei projetando o programa para usar uma outra variável, "intermediária".

 

Gratificações pelo comentário aprendiz.h!


Membro - Bronze - Geek - Bronze - Tech - Mod - Coord - Co-Admin - Platinum

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...