Adivinhar um número

De GNU Octave
Revisão em 18h49min de 14 de janeiro de 2013 por Jgrocha (Discussão | contribs) (Programa completo)

(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Ir para: navegação, pesquisa

O computador pensa num número entre 1 e 100 e o utilizador tem que descobrir esse número no menor número de tentativas possíveis.

Pensar num número

Obviamente que o computador não pensa, mas pode imitar esse processo gerando um número aleatório.

A função rand gera um número aleatório entre 0 e 1. Exemplo:

octave:15> rand(1)
ans =  0.61484

Para conseguirmos gerar um número entre 1 e 100 temos que usar alguma matemática. A expressão será:

numero = 1+round(rand(1)*99)

Ciclo para ver se o número do utilizador é o correto

numero = 1+round(rand(1)*99)
do
	tentativa = input('Papite? ');
until (tentativa == numero)

Programa completo

# primeiro vou gerar um número aleatório entre 1 e 100
# o rand(1) dá um número aleatório entre 0 e 1
numero = 1+round(rand(1)*99);
do
	tentativa = input('Papite [1-100]? ');
	if (tentativa < numero)
		disp('A sua tentativa está abaixo. Tente um número maior.');
	endif
	if (tentativa > numero)
		disp('A sua tentativa está acima. Tente um número menor.');
	endif
until (tentativa == numero)
printf('Acertou! Era mesmo o número %d que eu tinha pensado!\n', numero)

Exemplo de execução

>>> adivinhanumero
Papite [1-100]?  50
A sua tentativa está abaixo. Tente um número maior.
Papite [1-100]?  75
A sua tentativa está acima. Tente um número menor.
Papite [1-100]?  62
A sua tentativa está acima. Tente um número menor.
Papite [1-100]?  56
A sua tentativa está acima. Tente um número menor.
Papite [1-100]?  54
A sua tentativa está acima. Tente um número menor.
Papite [1-100]?  52
Acertou! Era mesmo o número 52 que eu tinha pensado!
>>>