Programa - C++ c/arrays (ajuda)

Aninha28

Power Member
Boas!

Começei a estudar agora arrays em C++, em Programação, e o primeiro programa que tenho que fazer é:

- Adivinhar um número entre 0 e 4, em quatro tentativas;

- O utilizador nunca terá hipótese de adivinhar.


Gostaria que me dessem algumas dicas, ou se o meu raciocínio está correcto. Estava pensando em fazer o programa da seguinte forma:

- Utilizando o ciclo do If;

- Se o utilizador inserir "0", dizer que a resposta é "1";

- Se inserir "1" dizer que a resposta é "2", e assim sucessivamente, até chegar às quatro tentativas.


Aceito sugestões.. Obrigado !
 
Boas!

Começei a estudar agora arrays em C++, em Programação, e o primeiro programa que tenho que fazer é:

- Adivinhar um número entre 0 e 4, em quatro tentativas;

- O utilizador nunca terá hipótese de adivinhar.


Gostaria que me dessem algumas dicas, ou se o meu raciocínio está correcto. Estava pensando em fazer o programa da seguinte forma:

- Utilizando o ciclo do If;

- Se o utilizador inserir "0", dizer que a resposta é "1";

- Se inserir "1" dizer que a resposta é "2", e assim sucessivamente, até chegar às quatro tentativas.


Aceito sugestões.. Obrigado !

Parece que descobrir o que pretentes é mais dificil que o programa em si... :confused:

É algo parecido com isto... http://www.dreamincode.net/forums/showtopic20737.htm ?
 
Acho que, se é para o utilizador nunca acertar, fazes um ciclo de 1 a 4, e qualquer que seja a resposta que o utilizador dê, ele diz que está errada (ou seja, 4 tentativas, 5 números).
Se quiseres que o jogo diga o número "certo" no fim, dá jeito saberes usar arrays.
Senão, ficas com cinco variáveis, cada uma a dizer se um determinado número foi dito ou não. Depois, quando o utilizador disser esse número, essa variável passa a indicar que o número já foi dito, e o número que o jogo dirá será um número correspondente a uma (das?) variável/variáveis que não foi/foram marcada(s).

Confundi-te o suficiente? :P
 
Bom, o "if" não é um ciclo, é apenas uma bifurcação, se isto, faz aquilo, senão, faz aqueloutro.

As selecções "if" e "switch" e os ciclos "for", "while" e "do {} while" são chamados no seu conjunto "estruturas de contrôlo". São formas estruturadas de alterar o fluxo normal de execução do programa.

Tu precisas de guardar memória de todos os números que o utilizador já introduziu. No final, simplesmente dizes ao utilizador que o número que ele devia ter adivinhado era o único que ele não disse. Chamemos a essa memória um "saco".

Só há duas hipóteses:

  1. Ou vais metendo no "saco" as tentativas do utilizador e, no final, experimentas cada um dos números de 0 a 4 para ver se está ou não no "saco", caso não esteja dizes que era esse;
  2. Ou então começas com um "saco" com os números de 0 a 4 e, em cada tentativa, retiras desse "saco" o número que o utilizador disse, no final dizes-lhe que era o número que te sobrou no "saco".
Este saco pode ser muita coisa:

  • Pode ser um array dos números que foram dados pelo utilizador, ou que ainda não foram dados (consoante vás pela solução 1 ou 2). Não me parece ideal, porque o número de operações total que o computador terá de fazer será em média proporcional ao número de tentativas (M) vezes o número de hipóteses (N) (neste caso 5*4=20, no entanto, o problema podia ser maior).
  • Pode ser uma árvore binária, e nesse caso o número de operações que o computador tem que fazer será proporcional a log M * N ou log N * M, consoante a solução 1 ou 2. Mas suponho que ainda não aprendeste as árvores.
  • Pode ser um array que tem tantas posições como as hipóteses (tem posições de 0 a 4). Só que é um array de booleanos e não de números. Cada posição pode ser verdadeiro ou falso. No início pões todas a falso, à medida que o utilizador faz tentativas vais pondo as hipóteses que ele deu a verdadeiro. No final procuras a primeira hipótese que ainda for falso e dizes-lhe que era essa. Este algorítmo é óptimo para o problema, o número de operações é proporcional a N apenas.
Acho que já disse o suficiente para teres uma perspectiva suficientemente alargada do problema. Agora só tens de perceber todos os pequenos passos que estão envolvidos e ser capaz de dar ordens precisas ao computador (que é muito burro).

Na minha opinião é muito indicado para o teu caso que tentes escrever o algoritmo numa espécie de português simplificado (ou estruturado) antes de tentar passá-lo para C++. Uma coisa do género:
Código:
Seja n o número introduzido pelo utilizador.
Colocar na posição n do array "verdadeiro".
 
Back
Topo