Alguém poderia resolver este problema de C++?
Obrigado
Neste trabalho, você irá utilizar técnicas para construção de projetos com mais de um arquivo. É importante seguir as instruções, utilizando um arquivo makefile apropriado.
O trabalho consiste em criar um programa que sorteia um número inteiro, e depois pede ao usuário que tente adivinhá-lo, com uma quantidade limitada de tentativas. A cada tentativa, o programa informa se o número sorteado é menor ou maior que o fornecido pelo usuário.
É importante seguir a estrutura de projeto apresentada a seguir.
Arquivos do projeto, e seu conteúdo:
• principal.cpp : contém a função main;
• util.h e util.cpp : funções utilitárias para sorteio de números e crítica de entrada de dados;
• jogo.h e jogo.cpp : constantes associadas ao jogo, e função que simula as jogadas, até um determinado número de tentativas.
• makefile : descrição do projeto - deve ser executado pelo programa make.
O código do arquivo principal.cpp deve ser o apresentado abaixo:
...
#include "util.h"
#include "jogo.h"
int main() {
inicSorteio();
cout << "Sorteio de um numero entre 1 e " << MAXNUM << endl;
int num = sorteiaInteiro (1, MAXNUM);
cout << "Tente descobrir o numero com no maximo "
<< MAXTENT << " tentativas." << endl;
int t = jogoIntervalo (num);
if (t <= MAXTENT)
cout << "Parabens! Acertou o número sorteado, usando "
<< t << " tentativas!" << endl;
else
cout << "Ultrapassou o número máximo de tentativas!" << endl;
return 0;
}
Observe que são usadas as funções inicSorteio e sorteiaInteiro, definidas no arquivo util.h, e a função jogoIntervalo, definida no arquivo jogo.h.
Em seguida, são apresentados os códigos dos arquivos util.h e jogo.h.
Código do arquivo util.h:
#ifndef __util_h
#define __util_h
void inicSorteio();
// Inicializa a seqüência de números aleatórios
// (usa uma semente diferente a cada execução)
int sorteiaInteiro (int inf, int sup);
// Dados 2 números inteiros inf e sup, onde inf <= sup,
// sorteia um número entre inf e sup, incluindo esses limites.
void leValorIntervalo (int inf, int sup, int &resp);
// Enquanto o usuário não fornecer um valor entre inf e sup,
// imprime mensagens de erro apropriadas e solicita nova entrada
// de dados. O resultado deve ser colocado na variável resp.
#endif
Código do arquivo jogo.h:
#ifndef __jogo_h
#define __jogo_h
const int MAXNUM = 1000;
// Valor máximo a ser sorteado
const int MAXTENT = 10;
// Número máximo de tentativas
int jogoIntervalo (int n);
// Dado um número n inteiro, esta função solicita que o usuário
// faça no máximo MAXTENT tentativas para adivinhá-lo. Se o valor
// for adivinhado em um número de tentativas menor ou igual a MAXTENT,
// esse número de tentativas é retornado pela função. Caso contrário,
// a função retorna MAXTENT+1.
#endif
Atenção: a entrada de valores para tentar adivinhar o número sorteado (dentro da função jogoIntervalo) deve ser criticada. Apenas os valores entre 1 e MAXNUM podem ser considerados. Para essa crítica, deve ser usada a função leValorIntervalo, definida no arquivo util.h.
Sandman
Membro Senior
Registrado
476 Mensagens
0 Curtidas
Alguém poderia resolver este problema de C++?
#1 Por Sandman
05/11/2003 - 13:50