converter loop while p/ for ou vice-versa

1. converter loop while p/ for ou vice-versa

Jose Luiz
joseluiz2029

(usa Outra)

Enviado em 14/04/2020 - 14:46h

while ( numContato > 0 ) {
if ( numContato % 10 == digProcurado )
cont++;
numContato = numContato / 10;

converter para for, como ficaria?


  


2. Re: converter loop while p/ for ou vice-versa

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/04/2020 - 15:24h

No código que você postou, faltou fechar as chaves.

De modo geral, no entanto, as duas construções a seguir são quase equivalentes.
for(expr1; expr2; expr3)
comando_ou_bloco
expr1;
while(expr2){
comando_ou_bloco
expr3;
}


expr1 é uma expressão de inicialização, expr2 é a expressão de controle de repetição e expr3 geralmente recalcula alguns dos valores usados em expr2. comando_ou_bloco pode ser um comando simples (nesse caso, terminado com um ponto e vírgula (“;”)) ou um bloco de múltiplos comandos, delimitados por chaves (“{” e “}”).

O “quase” acima referido é por causa do comando continue, que faz com que o laço de repetição pule para a próxima iteração. Quando usado dentro de um laço com for, o continue sempre provoca a avaliação de expr3 antes de reavaliar expr2. Com while, se você quiser que expr3 seja avaliada antes de passar para a próxima iteração, tem de fazer isso explicitamente antes do continue.

EDIT (2020/04/15 05:45): Existem outras diferenças. Com for, qualquer uma das três expressões pode ser omitida, ou seja: não é necessária uma inicialização explícita, como expr1, nem uma expressão explícita de atualização de condições, como expr3, e, na ausência de uma condição de teste para continuar com as repetições como expr2, o laço de repetição simplesmente continua indefinidamente, até que alguma coisa dentro de comando_ou_bloco explicitamente o interrompa (por exemplo, um break, um goto para fora do bloco de repetição, um return ou uma chamada a uma função de abandono ou exceção, tal como exit(), abort() ou longjmp()). Com while, expr1 e expr3 não fazem parte da construção em si, então não precisam estar presentes, mas expr2 não pode ser vazia. Para simular o efeito de expr2 omitida no for, a condição de repetição do while tem de estar presente e tem de ter um valor interpretado como verdadeiro (geralmente se usa "while(1)" em C, ou "while(true)" em C++).


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


3. Re: converter loop while p/ for ou vice-versa

sant matos
santm

(usa Linux Mint)

Enviado em 14/04/2020 - 23:55h

joseluiz2029 escreveu:

while ( numContato > 0 ) {
if ( numContato % 10 == digProcurado )
cont++;
numContato = numContato / 10;

converter para for, como ficaria?


falta dar um valor inicial para numContato.. vou usar 100 como exemplo.
for(numContato=100; numContato>0; numContato=numContato/10){
if(numContato%10==digProcurado)
cont++;
}



4. Re: converter loop while p/ for ou vice-versa

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/04/2020 - 05:43h

Prezado santm,

Geralmente a comunidade C e C++ prefere mensagens que, em lugar de dar respostas prontas, ensinem conceitos que ajudem aqueles com dúvidas a construir suas soluções por conta própria -- como naquele clichê de ensinar a pescar em lugar de distribuir peixes.

Sua ajuda é obviamente bem-vinda, mas entendemos que será sempre melhor disseminar conhecimento do que entregar produtos.

Grande abraço.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


5. Re: converter loop while p/ for ou vice-versa

sant matos
santm

(usa Linux Mint)

Enviado em 15/04/2020 - 14:42h

paulo1205 escreveu:

Prezado santm,

Geralmente a comunidade C e C++ prefere mensagens que, em lugar de dar respostas prontas, ensinem conceitos que ajudem aqueles com dúvidas a construir suas soluções por conta própria -- como naquele clichê de ensinar a pescar em lugar de distribuir peixes.

Sua ajuda é obviamente bem-vinda, mas entendemos que será sempre melhor disseminar conhecimento do que entregar produtos.

Grande abraço.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


Obrigado pelo toque paulo1205, sou novo aqui ainda n sabia mt como funcionava.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts