Comando if [RESOLVIDO]

1. Comando if [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 30/08/2013 - 18:32h

Olá pessoal.

Estou tentando escrever um programa em C que que tenha como dados de entrada o código do cliente, o código do
tipo de investimento e o valor investido. O algoritmo deve calcular e imprimir o rendimento.
O problema é que ao digitar o code = 2, ele mesmo assim calcula para o code=1. Alguém pode ajudar? Segue abaixo o código.

#include<stdio.h>
int main(){
int code;
float inv,x=0.6,y=1.1,z=1.8,w=2.5,aux1,aux2,aux3,aux4;

while(code !=0){
printf("Digite o código do cliente \n");
scanf("%i",&code);
printf("Digite o valor investido \n");
scanf("%f",&inv);

if(code = 1)
aux1=inv*x;
printf("redimento mensal %.2f \n",aux1);

if(code = 2)
aux2=(inv*y);
printf("redimento mensal %.2f \n",aux2);


}
}



  


2. MELHOR RESPOSTA

Kaio Vinicius Cassiano dos Santos
kaiio_

(usa Debian)

Enviado em 30/08/2013 - 18:50h

Eu procuro sempre construir a estrutura do if assim, bem separadinho:

if(teste lógico)
{
comandos;
}
else if(outro teste lógico) (caso necessário)
{
comandos;
}
.
.
.
else
{
comandos;
}

Antes de "palpitar", vou te falar o que pode estar acontecendo de errado. Para comparação dentro do teste lógico do if, usa-se "==" (duplo =), ai você utilizou somente um "=". Além disso, faltam abrir e fechar as chaves de cada if.

Nesse seu caso, para não serem feitos dois destes condicionais (if), use o primeiro if, e depois de fechá-lo utilize o else.

Ex1:

#include<stdio.h>

int main(){
int code;
float inv,x=0.6,y=1.1,z=1.8,w=2.5,aux1,aux2,aux3,aux4;

while(code !=0)
{
printf("Digite o código do cliente \n");
scanf("%i",&code);
printf("Digite o valor investido \n");
scanf("%f",&inv);

if(code == 1)
{
aux1=inv*x;
printf("redimento mensal %.2f \n",aux1);
}

if(code = 2)
{
aux2=(inv*y);
printf("redimento mensal %.2f \n",aux2);
}

} //fim while

}

Ex2:

#include<stdio.h>

int main(){
int code;
float inv,x=0.6,y=1.1,z=1.8,w=2.5,aux1,aux2,aux3,aux4;

while(code !=0)
{
printf("Digite o código do cliente \n");
scanf("%i",&code);
printf("Digite o valor investido \n");
scanf("%f",&inv);

if(code == 1)
{
aux1=inv*x;
printf("redimento mensal %.2f \n",aux1);
}

else
{
aux2=(inv*y);
printf("redimento mensal %.2f \n",aux2);
}

} //fim while

}

Não sei se esse é o código todo, mas tem variáveis que não estão sendo utilizadas.

Desculpe se escrevi besteira, sou novo por aqui ^^
Espero ter te ajudado.

3. Re: Comando if [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 30/08/2013 - 19:07h

Realmente kaiio sua dica funcionou em parte, ao fazer a alteração de code=1 para (code == 1), ele passou a calcular o (code==2), mas não deixou de calcular o (código==1) pois a saída deu rendimento zero para o (code==1). Usei dois ifs pois achei necessário já que existem quatro códigos, 1,2,3 e 4, ou seja ainda falta acrescentar mais dois ifs, correspondentes ao clientes.E muito obrigado pela ajuda.


4. Re: Comando if [RESOLVIDO]

Kaio Vinicius Cassiano dos Santos
kaiio_

(usa Debian)

Enviado em 30/08/2013 - 19:19h

Tenta usar o else if, assim:
if(code==1)
{

}
else if(code==2)
{

}
else if(code==3)
{

}
else //que seria o code==4
{

}

Essa linguagem é cheia de dar essas errinhos assim mesmo.

Eu testei aqui, coloquei as chaves, tenta arrumar as chaves if, assim como está no exemplo acima, mas dá pra por assim tambem:

if(code==1)
{

}
if(code==2)
{

}
if(code==3)
{

}
if(code==4)
{

}

O ruim é que ele faria TODOS os testes, no caso do else if ele faria até dar verdadeiro.


5. Re: Comando if [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 30/08/2013 - 19:33h

kaiio funcionou quando coloquei as chaves, não foi preciso o uso do else, mas estou com problema em fazer o while parar. Eu gostaria que ele parasse quando fosse digitado um número menor ou igual a zero.Fiz assim:
[code]
#include<stdio.h>
int main(){
int code;
float inv=0,x=0.6,y=1.1,z=1.8,w=2.5,aux1,aux2,aux3,aux4;

while(code > 0){
printf("Digite o código do cliente \n");
scanf("%i",&code);
printf("Digite o valor investido \n");
scanf("%f",&inv);

if(code == 1){
aux1=inv*x;
printf("redimento mensal %.2f \n",aux1);}

if(code == 2){
aux2=(inv*y);
printf("redimento mensal %.2f \n",aux2);}

if(code == 3){
aux3=(inv*z);
printf("redimento mensal %.2f \n",aux3);}
if(code == 4){
aux4=(inv*w);
printf("redimento mensal %.2f \n",aux4);}
inv+=inv;
}
printf("O total de investimentos foi %f",inv);
}

[code]

O problema é que antes de parar ele pede para digitar o investimento, mesmo após digitar zero.Só depois ele para.


6. Re: Comando if [RESOLVIDO]

Kaio Vinicius Cassiano dos Santos
kaiio_

(usa Debian)

Enviado em 30/08/2013 - 20:30h

Faz assim, parece meio gambiarra, mas dá.
Após esse último printf do while, coloque outro printf, e um scanf guardando na variável code, assim:

printf("\nDeseja continuar? 1- Sim / 0 - Não: ");
scanf("%d",&code);

Ou então, coloque uma variável op (operação), do tipo char, ai o usuário digita "s" ou "n".


7. Re: Comando if [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 30/08/2013 - 20:45h

Muito obrigado vou testar. mas de qualquer forma ele está 99% pronto.


8. Re: Comando if [RESOLVIDO]

Kaio Vinicius Cassiano dos Santos
kaiio_

(usa Debian)

Enviado em 30/08/2013 - 20:48h

Beleza, muito obrigado pelos votos e por tornar o tópico resolvido. Vou acompanhar esta pergunta, mas caso demore pra responder, me mande uma msg.