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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts