Imagine que eu ja tivesse declarado previamente. 'E que na verdade existe um erro na conversao de um loop para o outro. Tem alguma ideia arthur?
A
arthurnn
nao entendi!! esses dois loops um esta seguido do outro?!
bru_1987
Ele esta convertendo um loop for para um while (os dois com um if dentro). So que existe um erro, isso ele ja diz, e pede para achar aonde esta esse erro!
Adriano_Almeida
no while, qdo a expressão:
if(i%3==0)
é verdadeira, ele vai pro próximo passo do loop (continue) (sem incrementar i). Logo, vc acaba tendo um looping infinito por isso!
No for isso não acontece porque a mesmo com o continue, ele vai incrementar a variável i.
bru_1987
Mas ele incrementa o i com o i++ no final, nao?
Adriano_Almeida
Não, ele não incrementa. Explico o porque:
a palavra chave continue faz com que o seu looping vá para a próxima iteração imediatamente. Assim sendo, ele não chega a passar pelo código que incrementa i.
Esse problema seria resolvido se a primeira linha dentro do seu while fosse o i++.
Entendeu?
bru_1987
Entendi sim! Perfeitamente! Mto obrigado pela ajuda!
Abraços!
mari_sm
alem de nao ter declarado a variavel sum, e alem de nao ter fechado a ultima chave, tua conversao tem 1 erro de logica.
while(i<4){
if(i%3==0)continue;sum+=i;i++;
}
essa é a tua conversao … o problema dela é que tudo o que vem depois do continue nao vai ser executado se o if for verdadeiro. logo a variavel i nao vai sempre ser incrementada e tu vai ficar num loop eterno.