Ir ao conteúdo

Avaliem meu código??


newdrk

Posts recomendados

Postado

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

Postado

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

Postado

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

Postado

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

Postado

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????

Postado
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.

Postado

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

Postado

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..

Postado

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

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!