Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Не понимаю как решить задачку.

Всем доброго вечера. У меня есть задача, в которой требуется отсортировать данные, с помощью enum. Вот задача:
Описать структуру с именем ZNAK, содержащую следующие поля:

• фамилия, имя;

• знак Зодиака;

• дата рождения (массив из трех чисел).

Написать программу, выполняющую следующие действия:

1) ввести с клавиатуры данные в массив, состоящий из восьми элементов типа ZNAK;

2) упорядочить записи по знакам Зодиака (для знаков зодиака использовать перечисления (enum), начните со знака зодиака овен);

3) вывести на экран информацию о людях, родившихся в месяц, значение которого введено с клавиатуры. Если таких нет, выдать пользователю соответствующее сообщение.
Задача довольно простая, но я не могу понять одного: каким образом я могу упорядочить запись с помощью enum? Подскажите пожалуйста

По дате
По рейтингу
Аватар пользователя
Новичок

Завязывайте, вы, с астрологией. К добру это не приведёт.
Ваш код: https://pastebin.com/fdH2MU3Y

Аватар пользователя
Профи

Для упорядочивания записей по знакам Зодиака с помощью `enum` в Java, вы можете сделать следующее:

1. Определите перечисление `enum` для знаков Зодиака, где каждому знаку будет соответствовать определенное значение (обычно это порядковый номер).

2. В вашей структуре `ZNAK` используйте это перечисление для поля знака Зодиака.

3. При сортировке массива элементов `ZNAK`, используйте метод `compareTo` перечисления, который автоматически сравнивает порядковые номера знаков Зодиака.

Вот пример кода на Java:

```java
// Перечисление для знаков Зодиака
enum Zodiac {
ARIES, // Овен
TAURUS, // Телец
GEMINI, // Близнецы
// ... добавьте остальные знаки
}

// Класс для хранения данных
class ZNAK {
String name; // Фамилия и имя
Zodiac zodiac; // Знак Зодиака
int[] birthDate; // Дата рождения

// Конструктор
public ZNAK(String name, Zodiac zodiac, int[] birthDate) {
this.name = name;
this.zodiac = zodiac;
this.birthDate = birthDate;
}
}

// Ваша программа
public class ZodiacSorter {
public static void main(String[] args) {
// Создайте массив из восьми элементов типа ZNAK
ZNAK[] znaks = new ZNAK[8];
// ... заполните массив данными

// Сортировка массива по знаку Зодиака
Arrays.sort(znaks, new Comparator<ZNAK>() {
@Override
public int compare(ZNAK z1, ZNAK z2) {
return z1.zodiac.compareTo(z2.zodiac);
}
});

// Вывод информации о людях, родившихся в определенном месяце
Scanner scanner = new Scanner( System.in );
System.out.println("Введите номер месяца:");
int month = scanner.nextInt();
boolean found = false;
for (ZNAK znak : znaks) {
if (znak.birthDate[1] == month) { // Предполагая, что месяц - это второй элемент массива birthDate
System.out.println( znak.name + " " + znak.zodiac);
found = true;
}
}
if (!found) {
System.out.println("Нет людей, родившихся в этом месяце.");
}
}
}
```

Этот код создает массив объектов `ZNAK`, сортирует их по знаку Зодиака и выводит информацию о людях, родившихся в заданном месяце. Убедитесь, что вы добавили все знаки Зодиака в перечисление `Zodiac` и корректно заполнили массив `znaks`.

Удачной ночи!