Для проверки остаточных знаний учеников после летних каникул, учитель младших классов решил начинать каждый урок с того, чтобы задавать каждому ученику пример из таблицы умножения, но в классе 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
Для вывода на экран переопределяем метод 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]
Комментариев нет:
Отправить комментарий