Analise o código em C++ abaixo e explique, de forma clara e objetiva, o comportamento do programa. Informe qual erá a saida para as seguintes entradas: [1,5],[-1,-5],[5,5].
#include <iostream>
using namespace std;
int main() {
    int x,y,z,w=0;
    cin >> x;
    cin >> y;
    If (y < x) {
        z=y;
        y = x;
        x = z;
    }
    int i = x;
    do {
        w += i;
        i++;
    } while (i <= y);
    cout << w << endl;
    return 0;
}

Passo 1

O programa lê dois inteiros x e y, garante que x seja o menor (fazendo troca se necessário) e depois usa um laço do…while para somar todos os valores de x até y (inclusive) em w. Por fim, imprime w.

Passo 2

A condição \displaystyle\text{if }(y<x)
verifica se o segundo valor é menor que o primeiro. Se for, o programa faz a troca
z = y;\quad y = x;\quad x = z;
assim sempre teremos x \le y.

Passo 3

Em seguida vem o laço
\text{int }i = x;\quad w=0;
\text{do \{} \quad w += i; \quad i++; \}\;\text{while}(i \le y);
Isso significa que i começa em x, soma-se i em w, incrementa i e repete enquanto i \le y. Ou seja, faz a soma de todos os inteiros de x até y.

Passo 4

Para a entrada x=1, y=5 não ocorre troca (pois 1\le5). O laço soma
1+2+3+4+5 = 15.

Passo 5

Para a entrada x=-1, y=-5 ocorre troca (pois -5 < -1), virando x=-5, y=-1. O laço soma
-5 + (-4) + (-3) + (-2) + (-1) = -15.

Passo 6

Para a entrada x=5, y=5 não há troca e o do…while faz exatamente uma iteração, somando apenas 5.

Resposta

Para entrada x=1, y=5: saída será 15.
Para entrada x=-1, y=-5: saída será -15.
Para entrada x=5, y=5: saída será 5.

Exercícios relacionados