@Milton812

Как создать метод, чтобы он задавал объекту случайные свойства?

Есть программа, в которой есть класс, в котором есть метод, который должен устанавливать объекту класса случайные параметры, но при применении этого метода к двум разным объектам класса результат получается один и тот же. Как изменить программу так, чтобы при каждом применении этого метода к объекту получался разный результат?
spoiler
#include <iostream>
#include <ctime>

using namespace std;

enum Level {easy=1, hard, medium};

class alpha
{
private:
	Level level;
	int number;
public:
	alpha() : level(easy), number(5)
	{}

	void gen()
	{
		srand(time(NULL));
		number = rand() % 10 + 1;
		int levelgen = rand() % 3 + 1;
		switch (levelgen)
		{
		case 1:
			level = easy;
			break;
		case 2:
			level = medium;
		case 3:
			level = hard;
		default:
			break;
		}
	}
	void disp()
	{
		if (level == hard)
			cout << "level - ???? " << endl;
		else
		{
			cout << "level = ";
			switch (level)
			{
			case easy:
				cout << "easy" << endl;
				break;
			case medium:
				cout << "medium" << endl;
				break;
			default:
				break;
			}
		}
		cout << "number = " << number << endl;
	}
};

int main()
{
	srand(time(NULL));
	alpha obj1;
	obj1.gen();
	obj1.disp();
	alpha obj2;
	obj2.gen();
	obj1.disp();
	system("pause");
}
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
srand(time(NULL));
Должен быть в начале программы, хотя лучше использовать нормальный ГПСЧ. А проблема в том, что вы выводите данные одного и того же объекта:
alpha obj1;
  obj1.gen();
  obj1.disp();
  alpha obj2;
  obj2.gen();
  obj1.disp();

Посмотрите внимательнее на код
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы