Страницы

Поиск по вопросам

понедельник, 18 февраля 2019 г.

Вывод на экран 15 случайных примеров из таблицы умножения

Для проверки остаточных знаний учеников после летних каникул, учитель младших классов решил начинать каждый урок с того, чтобы задавать каждому ученику пример из таблицы умножения, но в классе 15 человек, а примеры среди них не должны повторяться. В помощь учителю напишите программу, которая будет выводить на экран 15 случайных примеров из таблицы умножения (от 2*2 до 9*9, потому что задания по умножению на 1 и на 10 — слишком просты). При этом среди 15 примеров не должно быть повторяющихся (примеры 2*3 и 3*2 и им подобные пары считать повторяющимися).
Что мне нужно добавить, чтобы доделать задачу? Как я думаю, осталось вывести уже отобранные задания на экран, но не знаю как это сделать.
public class Main { public static void main(String[] args) { int[][] Mas = new int[15][3]; for (int i = 0; i < Mas.length; i++) { for (int h = 0; h < Mas[i].length; h++) { Mas[i][h] = (int) (Math.random() * 8) + 2; if (h == Mas[i].length - 1) { Mas[i][h] = Mas[i][h - 2] * Mas[i][h - 1]; for (int q = 0; q < i; q++) { if (Mas[i][h] == Mas[q][h] && i > 0) { if (Mas[i][h - 1] == Mas[q][h - 1] || Mas[i][h - 2] == Mas[q][h - 2]) --i; } } } } } } }


Ответ

Что, например, можно сделать для решения задачи:
сгенерировать массив/список из всех возможных комбинаций пар чисел случайно перемешать этот массив/список взять из него первые 15 элементов.
С использованием списка ArrayList и метода Collections.shuffle это выглядит так:
private static class Pair { public int first; public int second;
public Pair(int first, int second) { this.first = first; this.second = second; } }
public static void main(String[] args) { List allPairs = new ArrayList<>(); for (int first = 2; first <= 9; first++) { for (int second = first; second <= 9; second++) { allPairs.add(new Pair(first, second)); } } Collections.shuffle(allPairs); List chosenPairs = allPairs.subList(0, 15); }

Для вывода на экран переопределяем метод toString в классе Pair
public String toString() { return first + "*" + second; }
После чего в основном методе просто выводим результирующий список на экран:
System.out.println(chosenPairs);
Пример вывода:
[2*3, 4*6, 8*9, 6*6, 4*4, 2*7, 7*9, 3*9, 3*8, 3*3, 2*2, 9*9, 7*8, 4*8, 5*5]

Комментариев нет:

Отправить комментарий