Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
newdrk

Avaliem meu código??

Recommended Posts

Passei a noite fazendo ele ... é um exercício que é assim:

1)

a-)Faça um algoritmo em C que calcule soma, subtração, divisão, adição de 2 números mostrando o resultado na tela.

b-)Após feita a operação, perguntar sobre um novo calculo (nova operação).

c-)Fazer uma nova operação com o resultado anterior.

Sou novo em programação.. avaliem essa bagunça que eu fiz e me falem se está bom e como eu posso otimizá-lo....


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

void main()
{
double n1,n2,res = 0.0;
char op;
char op2;
char op3;
int cont = 0;
int cont2 = 1;
int cont3 = 0;

while (cont <1){
cont3 = 0;
printf("Digite o primeiro Valor \n");
scanf("%lf",&n1);
printf("Digite o segundo Valor \n");
scanf("%lf",&n2);
printf("Digite a operacao que deseja (* / + -)\n");
scanf(" %c",&op);

switch(op){
case '*':
printf("%lf * %lf = %lf\n",n1,n2,(n1*n2));
res = n1*n2;
break;
case '/':
printf("%lf / %lf = %lf\n",n1,n2,(n1/n2));
res = n1/n2;
break;
case '+':
printf("%lf + %lf = %lf",n1,n2,(n1+n2));
res = n1+n2;
break;
case '-':
printf("%lf - %lf = %lf",n1,n2,(n1-n2));
res = n1-n2;
break;
default:
printf("Operador Invalido");
cont2 = 1;
cont3 = 1;
cont = 0;
printf("\n");
system("pause");
system("cls");
}

while (cont3<1){
printf("\nDeseja fazer outra operacao? (S/N)\n");
scanf(" %c",&op2);
if ((op2=='s')||(op2=='S')){
printf("Deseja manter o resultado da ultima conta?(S/N)\n");
scanf(" %c",&op3);
if ((op3=='s')||(op3=='S')){
cont = 1;
cont2 = 0;
cont3 = 1;
system("cls");
}
else
{
cont3 = 1;
cont2 = 1;
cont = 0;
system("cls");
}
}
else
{
cont = 1;
cont2 = 1;
cont3 = 1;
system("pause");
}

while (cont2<1){

printf("\nO primeiro valor é %lf \n",res);
printf("Digite o segundo Valor \n");
scanf("%lf",&n2);
printf("\n Digite a operacao que deseja (* / + -)\n");
scanf(" %c",&op);

switch(op){
case '*':
printf("%lf * %lf = %lf\n",res,n2,(res*n2));
res = res*n2;
cont = 1;
cont3 = 0;
cont2 = 1;
break;
case '/':
printf("%lf / %lf = %lf\n",res,n2,(res/n2));
res = res/n2;
cont = 1;
cont3 = 0;
cont2 = 1;
break;
case '+':
printf("%lf + %lf = %lf\n",res,n2,(res+n2));
res = res+n2;
cont = 1;
cont3 = 0;
cont2 = 1;
break;
case '-':
printf("%lf - %lf = %lf\n",res,n2,(res-n2));
res = res-n2;
cont = 1;
cont3 = 0;
cont2 = 1;
break;
default:
printf("Operador Invalido");
cont2 = 0;
cont3 = 1;
cont = 1;
printf("\n");
system("pause");
system("cls");
}
}
}
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, não ta bom e nem ruim,

pode melhorar muito ainda!

crie funções, testes de erro.

se eu digitar uma Letra, buga.

se eu digitar algo diferente dos métodos matematicos.

BUGA.

uma opinião.

abraços

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu não aprendi métodos ainda... como eu faria com eles?

deem um desconto por ser o primeiro código da minha vida hahah

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uma parte do seu exercicio com metodos

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

void ReadDouble(char *str, double *result)
{
printf(str);

while (!scanf("%lf", result))
{
printf("Dado Informado Erroneamente, %s", str);
fflush(stdin);
}

fflush(stdin);
}

void ReadOperator(char *str, char *result)
{
printf(str);

while (scanf("%c", result))
{
if (result[0] == '+' || result[0] == '-' || result[0] == '*' || result[0] == '/')
{
break;
}
printf("Dado Informado Erroneamente, %s", str);
fflush(stdin);
}

fflush(stdin);
}

double Calc(double d1, char op, double d2)
{
switch (op)
{
case '+':
return d1 + d2;
case '-':
return d1 - d2;
case '*':
return d1 * d2;
case '/':
return d1 / d2;
}
}

int main()
{
double d1;
ReadDouble("Entre com um Double: ", &d1);

char c;
ReadOperator("Entre com um o operador [ + - * / ]: ", &c);

double d2;
ReadDouble("Entre com um Double: ", &d2);

double resultado = Calc(d1, c, d2);
printf("Resuldado: %lf\n", resultado);

system("PAUSE");
return 0;
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que eu vi ali voce fez a operação la em cima e colocou o nome dela lá em baixo pra iniciar?

é basicamente isso????

Compartilhar este post


Link para o post
Compartilhar em outros sites
pelo que eu vi ali voce fez a operação la em cima e colocou o nome dela lá em baixo pra iniciar?

é basicamente isso????

Sim, veja que o metodo ReadDouble é seguro, tente passar um valor errado nele, ele fica informando o erro, o ReadOperator também faz isso até que você passe um valor valido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou bom mas para melhorar mais ainda ^^

um teste de operação no switch das operações aritméticas. um default eu creio

se nao for * / + -

se caso o usuario digite errado alguma operação

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, isso ele fez "antes"


void ReadOperator(char *str, char *result)
{
printf(str);

while (scanf("%c", result))
{
if (result[0] == '+' || result[0] == '-' || result[0] == '*' || result[0] == '/')
{
break;
}
printf("Dado Informado Erroneamente, %s", str);
fflush(stdin);
}

fflush(stdin);
}

ao que entendi, caso não seja +, -, * ou / o programa vai dar a msg de erro...

mas de um modo geral (sendo que não testei o código pra confirmar isso, e nem posso agora =/) eu diria que daria pra fazer um "get". caso o cara tenha digitado abobrinha e alguns numeros o programa catar os primeiros numeros encontrados e passar pra operação, mesma coisa com a operação no caso do cara ter feito um teste do genero..

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode atentar um pouco pra identação e não tenha pena nas quebras de linha.

dê enter mesmo, fica mais organizado.

Existem costumes e existem regras.

Em C/C++ é um costume usar em funções/condicionais/etc os {} assim:

int funcao ()

{

codigo

}

Já em java Java, Perl etc se usa assim

String function(){

codigo

}

Mas são costumes, não regras.

Mas é sempre bom seguir o que a maioria faz, ajuda quando os outros vão ler seus códigos...dói no meu peito ver

while(...){

...

}

em C

Em Java ok :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×