Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

Editado por newdrk

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

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

×