Existem duas estruturas de repetição (loops) muito comuns na programação que são o for e o while. Vamos começar entendendo como funciona o while. O while faz o programa entrar em um loop enquanto a condição passada para ele for verdadeira. Veja como ele é simples:

while(condição)
{
	//seu código
}

Vamos resolver o problema OBI da OBI nível júnior de 2008 usando esta estrutura. Basicamente o problema nos pede que, dado o número N de participantes da olimpíada, as pontuações X e Y na primeira e segunda fase de cada competidor e a pontuação P de corte para ser convidado para o curso na Unicamp, devemos imprimir a quantidade de convidados para o curso.

O problema nos diz que a pontuação total de um aluno é dada por X+Y. Então basta passarmos por cada aluno usando o while e fazermos um if para ver se sua pontuação é maior ou igual ao corte. Caso seja, incrementamos um à nossa resposta.

#include <iostream>

using namespace std;

int main()
{
    int n, p, x, y, ans = 0; //declaro as variáveis

    cin >> n >> p; //leio N e P

    int i = 0; //contador para sabermos quantas vezes já rodamos o while

    while(i < n)
    {
        cin >> x >> y; //leio o X e Y de cada competidor

        x += y; //faço X receber a pontuação total 

        if(x >= p)
        {
            ans++; //nossa resposta aumenta
        }

        i++; //nosso contador aumenta
    }
    
    cout << ans << "\n"; //imprimo a nossa resposta

    return 0;
}

Um loop pode ser interrompido a qualquer momento com o comando break, caso seja desejado. Assim, podemos fazer o código da seguinte forma:

while(condição)
{
   //seu código

   if(condiçãodeparada) break;
   
   //seu código
}

E caso deseje, você também pode pular para a próxima iteração do while, sem completar o loop, usando o continue, da mesma forma que se usa o break. Lembrando que ele só pulará para a próxima iteração caso sua condição para o while ainda seja verdadeira.

Problemas para praticar: