Logo Hardware.com.br
gtorre
gtorre Novo Membro Registrado
21 Mensagens 0 Curtidas

Programa Saldo médio C

#1 Por gtorre 21/12/2007 - 12:52
[Resolvido]
Gostaria de saber como eu faço para traduzir isto na linguagem C

escolha saldo_m
caso 0 ate 200
c <- saldo_m * 0/100
caso 201 ate 400
c <- saldo_m * 20/100
caso 401 a 600
c <- saldo_m * 30/100
fimescolha


Eu fiz assim em C mas não funciona

switch (saldo_m)

{

case 0 ? 200: c = saldo_m * 0/100;break; //? = ate
case 201 ? 400: c = saldo_m * 20/100;break; //? = ate
case 401 ? 600: c = saldo_m * 30/100;break; //? = a
}

Alguem poderia me ajudar?
Hardcore87
Hardcore87 Membro Junior Registrado
106 Mensagens 4 Curtidas
#3 Por Hardcore87
21/12/2007 - 13:18
[php]
switch(saldo_m)
{
case (saldo_m>=0 && saldo_m<=200):
c=saldo_m*0/100;
break;

case (saldo_m>=201 && saldo_m<=400):
c=saldo_m*20/100;
break;

case saldo_m>=401:
c=saldo_m*30/100;
break;
}
[/php]acho q é isso
eu ainda ñ compilei + se der erro tenta tirar os "()" do case vlw
..indu vou almoçar feliz.png
“Se não puder se destacar pelo talento, vença pelo esforço!”
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#4 Por tpcvasco
21/12/2007 - 13:19
Vc não vai conseguir fazer oq vc quer com switch. Switch só serve para valores exatos, oq vc está querendo é um intervalo. Vc vai ter q usar if, if else. Assim:

if (saldo_m>=0 && saldo_m<=200) c = saldo_m * 0/100; //? = ate
else if (saldo_m>=201 && saldo_m<=400) c = saldo_m * 20/100; //? = ate
else if (saldo_m>=401 && saldo_m<=600) c = saldo_m * 30/100; //? = a


============EDITANDO===========

Ops, já deram a mesma solução, fui lento hehe

Então eu posso aproveitar pra dar uma dica, vc pode otimizar o código acima se fizer da seguinte forma:


if (saldo_m>=401) c = saldo_m * 30/100; //? = a
else if (saldo_m>=201) c = saldo_m * 20/100; //? = ate
else if (saldo_m>=0) c = saldo_m * 0/100; //? = ate


Assim há menos testes de comparação.
Inclusive, se vc garantir q "saldo_m" nunca será menor q 0, a últim linha pode até ser simplesmente
else c = saldo_m * 0/100; //? = ate
Um teste a menos.


PS: O código do Hardcore87 não compila. Como eu disse, swith não funciona dessa forma, apenas para números inteiros.
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
scarvenger
scarvenger Membro Senior Registrado
306 Mensagens 4 Curtidas
#8 Por scarvenger
22/12/2007 - 12:53
Não, primeiro que case não aceita intervalos como explicado anteriormente, e este intervalo em si está errado pois diz: se 0 então 200 senão c = saldo_m * 0/100; o seu uso correto seria:

int c = 1;
(c > 200) ? printf("c maior que 200&quot : printf("c menor que 200&quot;
Fedora Core 7 + Beryl
Microsoft Windows XP Servive Pack 2

The Blog:
http://scarvenger.wordpress.com/
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal