1
resposta

Diferença de 100 no resultado final

Alguém saberia me explicar, por que ao final do cálculo há uma diferença de 100 do valor real?

#include <stdio.h>

int main () { int cem = 1; int soma = 0;

while (cem <= 100) {
  cem++;
  soma = soma + cem; 
}
printf ("A soma eh %d.\n", soma);
return 0;

}

1 resposta

Olá.

Você começa com a variável chamada cem valendo 1. Seu loop vai executar a soma enquanto essa variável for menor ou igual a 100. Na última rodada do loop, a varíavel cem é incrementada e passa a valer 100, depois, a variável soma recebe esse valor, e aí o loop se encerra, já que a variável cem passou a valer 100. Como o loop se encerraria no momento em que essa variável passasse a valer 100, ele sai do loop.

Veja o código alternativo abaixo. Nele, a variável cem será incrementada enquanto ela valer menos que 100.

#include <stdio.h>

int main () {
    int cem = 0;
    int soma = 0;
    while (cem < 100) {
        cem++;
        soma = soma + cem; 
    }
    printf ("A soma eh %d.\n", soma);
    return 0;
}

A variável começa valendo 0, é incrementada na primeira rodada e passa a valer 1. Então, é somada a variável soma. E assim segue-se, até o momento em que passa a valer 100. Como nossa condição para seguir rodando é valer menos que 100, saímos do loop quando a variável é igual a 100. A saída:

5050