Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luizinho do Forró

Algoritmo que mostre os números ímpares de 1 a 100

Recommended Posts

O meu código ficou o seguinte (ele está certo):

int main (void)

{
    int a = 1;

    while (a <= 100)
    {
    if (a % 2 != 0)
        printf ("%d\n", a);
        a++;
    }
}

Mas a minha dúvida é sobre o porque de se não usar o "inicio/fim" depois do IF e já ir mandando o printf direto, ficando assim:

int main (void)

{
    int a = 1;

    while (a <= 100)
    {
    if (a % 2 != 0)
    {
        printf ("%d\n", a);
        a++;
    }
    }
}

Quando compilado, esse código só exibe o número 1 na tela. Por quê?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto acontece porque quando você inseriu "inicio/fim" no if ele irá incrementar apenas se a condição for verdadeira porque você colocou o "a++" dentro do if, no caso ele irá fazer o loop do while e irá ler a condição no número 1 que é verdadeira e no 2 ele não irá incrementar por ser falso assim travando no número 2. Para resolver o problema basta colocar o incremento fora do IF:

int main() {
    int a = 1;

    while (a <= 100)
    {

       if (a % 2 != 0)
       {
          printf ("%d\n", a);   
       }

       a++; 
     }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.