marcos andra...
General de Pijama
Registrado
3.6K Mensagens
333 Curtidas
Não entendo muito de C mas acho que antes de você realizar uma operação com y deveria declarar a variável.
Você esta realizando uma operação com uma variável que ainda não existe, tente colocar o scanf de y antes de realizar as operações no código.
quemsou_naod...
Cyber Highlander
Registrado
28.8K Mensagens
1.8K Curtidas
Você usa os if...else para verificar o operador e se ele não for válido o programa fica preso em um loop.
Mas depois que ele fica preso em um loop e é liberado, como você sabe qual é a operação?
Também considere usar switch...case para menus, ao invés de vários if...else.
EDIT:
Além de tudo isso, encontrei um erro básico de lógica:
Você está tentando calcular operações envolvendo a variável y sem ter um valor atribuído para ela. Note que o usuário somente entra com o valor da variável y após o programa supostamente calcular as operações.
Coloque esse bloco:
[code=C]
while( op!='+'&& op !='-'&& op!='*'&& op!='/')
{printf("selecione uma operacao valida.\nescolha a operacao que deseja efetuar:\n+\n-\n*\n/");
scanf(" %c",&op);}
}
[/code]
Antes desse:
[code=C]
if(op=='+'){
resul=x+y;
}
elseif( op=='-'){
resul=x-y;
}
elseif(op=='*'){
resul=x*y;
}
elseif(op=='/'){
resul=x/y;
}[/code]
Esse pedido de entrada para o usuário:
[code=C]
printf("escolha o segundo numero: ");
scanf("%f",&y);[/code]
Pode ficar depois disso:
[code=C]
printf("escolha o primeiro numero: ");
scanf(" %f",&x);[/code]
vitor hugo20...
Novo Membro
Registrado
7 Mensagens
0 Curtidas
Você usa os if...else para verificar o operador e se ele não for válido o programa fica preso em um loop.
Mas depois que ele fica preso em um loop e é liberado, como você sabe qual é a operação?
Também considere usar switch...case para menus, ao invés de vários if...else.
EDIT:
Além de tudo isso, encontrei um erro básico de lógica:
Você está tentando calcular operações envolvendo a variável y sem ter um valor atribuído para ela. Note que o usuário somente entra com o valor da variável y após o programa supostamente calcular as operações.
Coloque esse bloco:
[code=C]
while( op!='+'&& op !='-'&& op!='*'&& op!='/')
{printf("selecione uma operacao valida.\nescolha a operacao que deseja efetuar:\n+\n-\n*\n/");
scanf(" %c",&op);}
}
[/code]
Antes desse:
[code=C]
if(op=='+'){
resul=x+y;
}
elseif( op=='-'){
resul=x-y;
}
elseif(op=='*'){
resul=x*y;
}
elseif(op=='/'){
resul=x/y;
}[/code]
Esse pedido de entrada para o usuário:
[code=C]
printf("escolha o segundo numero: ");
scanf("%f",&y);[/code]
Pode ficar depois disso:
[code=C]
printf("escolha o primeiro numero: ");
scanf(" %f",&x);[/code]
Muito obrigado pelas dicas e atenção! agora entendi melhor como funciona a lógica e vou poder ir mais além!
icefusion
Tô em todas
Registrado
2.2K Mensagens
41 Curtidas
Toda vez que tu vai ter entrada de dados pelo usuário, você le as entradas primeiro, depois você executa as operações. Pois muitas vezes existe lixo de memória e pode causar diferença nos valores (embora no seu caso, calculou antes de receber o segundo valor). O ideal é inicializar sempre as variáveis com um valor padrão. Por Exemplo 0 (Zero para inteiros) , "" (Vazio para Strings), (false ou true para boleanos) e assim por diante.