Страницы

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

четверг, 9 января 2020 г.

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

#java



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

    


Ответы

Ответ 1



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

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

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