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.
// OBI 2008 - NÃvel Prog. Júnior - Fase 1 | |
// Problema: OBI | |
#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: