Ajuda com while

"Os alunos do último ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Teófilo, dono de uma loja de informática, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quentão, pipoca, doces, ensaiaram a quadrilha e colocaram à venda ingressos numerados sequencialmente a partir de 1. O número do ingresso serviria para o sorteio do computador. Ficou acertado que Teófilo decidiria o método de sorteio; em princípio o sorteio seria, claro, computadorizado.

O local escolhido para a festa foi o ginásio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionário inseriu, em uma lista no computador da escola, o número do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Teófilo começou a trabalhar no computador para preparar o sorteio. Verificando a lista de presentes, notou uma característica notável: havia apenas um caso, em toda a lista, em que o participante que possuia o ingresso numerado com i, havia sido a i-ésima pessoa a entrar no ginásio. Teófilo ficou tão encantado com a coincidência que decidiu que o sorteio não seria necessário: esta pessoa seria o ganhador do computador.

Tarefa

Conhecendo a lista de participantes, por ordem de chegada, sua tarefa é determinar o número do ingresso premiado, sabendo que o ganhador é o único participante que tem o número do ingresso igual à sua posição de entrada na festa.

Entrada

A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém um número inteiro positivo N que indica o número de participantes da festa. A linha seguinte contém a sequência, em ordem de entrada, dos N ingressos das pessoas que participaram da festa. O final da entrada é indicado quando N = 0. Para cada conjunto de teste da entrada haverá um único ganhador.

Exemplo de Entrada

4
4
5
3
1

10
9
8
7
6
1
4
3
2
12
10

0
Saída

Para cada conjunto de teste da entrada seu programa deve produzir três linhas. A primeira linha identifica o conjunto de teste, no formato “Teste n”, onde n é numerado a partir de 1. A segunda linha deve conter o número do ingresso do ganhador, conforme determinado pelo seu programa. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.

Exemplo de Saída

Teste 1
3

Teste 2
10
(esta saída corresponde ao exemplo de entrada acima)

Restrições

0 ≤ N ≤ 10000 (N = 0 apenas para indicar o fim da entrada)"

Esse é o enunciado do problema. O que eu preciso saber é como usar o while(pq meu professor não me explicou isso bem) e um pouco em relação a declaração de variáveis.

E a duvida ?

TUDO

O que eu preciso saber é como usar o while(pq meu professor não me explicou isso bem) e um pouco em relação a declaração de variáveis.

Vamos lá.

O while é um laço de repetição, que traduzido significa “enquanto”. Ou seja, enquanto o parâmetro informado for verdadeiro(true), o que estiver dentro do while vai ser executado. Assim que o parâmetro se tornar falso, o programa sai desse laço.

No exemplo abaixo, a variável numero é inicializada com zero. Cria-se um laço while que diz "enquanto numero for menos que 5, faça o que está dentro do bloco while).

public class WhileTeste {
	
	//Criação e atribuição de valor à variavel.
	private  int numero = 0;
	
	
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public static void main(String[] args) {
		//Criação e instanciação do objeto.
		WhileTeste whi = new WhileTeste();
		
		
		while(whi.getNumero() < 5) {
			//Imprime o valor atual.
			System.out.println(whi.getNumero());
			//Variavel auxiliar de incremento
			int numeroIncrementado = whi.getNumero() + 1;
			//Incrementa o numero para a proxima iteração
			whi.setNumero(numeroIncrementado);
		}
		//Só vai imprimir isto após sair do while.
		System.out.println("Saiu do while");
	}
}[/code]

A saída disso vai ser:
[code]0
1
2
3
4
Saiu do while

E quanto a declaração de variáveis, refine mais sua dúvida por favor…

[quote=Ruttmann] O que eu preciso saber é como usar o while(pq meu professor não me explicou isso bem) e um pouco em relação a declaração de variáveis.

Vamos lá.

O while é um laço de repetição, que traduzido significa “enquanto”. Ou seja, enquanto o parâmetro informado for verdadeiro(true), o que estiver dentro do while vai ser executado. Assim que o parâmetro se tornar falso, o programa sai desse laço.

No exemplo abaixo, a variável numero é inicializada com zero. Cria-se um laço while que diz "enquanto numero for menos que 5, faça o que está dentro do bloco while).

public class WhileTeste {
	
	//Criação e atribuição de valor à variavel.
	private  int numero = 0;
	
	
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public static void main(String[] args) {
		//Criação e instanciação do objeto.
		WhileTeste whi = new WhileTeste();
		
		
		while(whi.getNumero() < 5) {
			//Imprime o valor atual.
			System.out.println(whi.getNumero());
			//Variavel auxiliar de incremento
			int numeroIncrementado = whi.getNumero() + 1;
			//Incrementa o numero para a proxima iteração
			whi.setNumero(numeroIncrementado);
		}
		//Só vai imprimir isto após sair do while.
		System.out.println("Saiu do while");
	}
}[/code]

A saída disso vai ser:
[code]0
1
2
3
4
Saiu do while

E quanto a declaração de variáveis, refine mais sua dúvida por favor…[/quote]

cara, eu acho que isso mesmo. Porém só nao entendi no final pq saem 4 números, pois deveria sair apenas 1, que é o numero premiado.

O bom é que creio que você possa submeter esse programa para o site da olimpiada:
http://olimpiada.ic.unicamp.br/pratique/programacao/nivel1/quermesse

E testar se está certo. Se for como o SPOJ, o feedback é instantâneo.

[quote]

O bom é que creio que você possa submeter esse programa para o site da olimpiada:
http://olimpiada.ic.unicamp.br/pratique/programacao/nivel1/quermesse

E testar se está certo. Se for como o SPOJ, o feedback é instantâneo.[/quote]

Se ele procura ele acha :smiley:

:slight_smile: SUBMETER é OSSO !

[quote=orzechoski][quote=Ruttmann] O que eu preciso saber é como usar o while(pq meu professor não me explicou isso bem) e um pouco em relação a declaração de variáveis.

Vamos lá.

O while é um laço de repetição, que traduzido significa “enquanto”. Ou seja, enquanto o parâmetro informado for verdadeiro(true), o que estiver dentro do while vai ser executado. Assim que o parâmetro se tornar falso, o programa sai desse laço.

No exemplo abaixo, a variável numero é inicializada com zero. Cria-se um laço while que diz "enquanto numero for menos que 5, faça o que está dentro do bloco while).

public class WhileTeste {
	
	//Criação e atribuição de valor à variavel.
	private  int numero = 0;
	
	
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	public static void main(String[] args) {
		//Criação e instanciação do objeto.
		WhileTeste whi = new WhileTeste();
		
		
		while(whi.getNumero() < 5) {
			//Imprime o valor atual.
			System.out.println(whi.getNumero());
			//Variavel auxiliar de incremento
			int numeroIncrementado = whi.getNumero() + 1;
			//Incrementa o numero para a proxima iteração
			whi.setNumero(numeroIncrementado);
		}
		//Só vai imprimir isto após sair do while.
		System.out.println("Saiu do while");
	}
}[/code]

A saída disso vai ser:
[code]0
1
2
3
4
Saiu do while

E quanto a declaração de variáveis, refine mais sua dúvida por favor…[/quote]

cara, eu acho que isso mesmo. Porém só nao entendi no final pq saem 4 números, pois deveria sair apenas 1, que é o numero premiado.[/quote]

Você prestou atenção na explicação que te fiz?

Te expliquei como funciona o while, não fiz o teu exercício.

Se precisar de ajuda em mais alguma coisa é só pedir, mas ninguém aqui vai fazer o exercício pra ti…