powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Экзаменационная задача.
9 сообщений из 9, страница 1 из 1
Экзаменационная задача.
    #38764538
Ujin_k8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. В университете была поставлена задач:

Создать программу, которая будет последовательно предлагать пользователю десять случайных примеров, проверяющих знание таблицы умножения (каждый из сомножителей от 2 до 9 включительно), запрашивать ввод ответа с клавиатуры и проверять, какие примеры из предложенных решены правильно. Каждый пример выводится в формате: «5*8=». Пользователь вводит ответ с клавиатуры, после чего выводится следующий пример. Когда получены ответы на все 10 примеров, программа сообщает количество ошибок и номера примеров, в которых пользователь ошибся. Примеры не должны повторяться. Примеры, полученные перестановкой сомножителей, такие как «5*8=» и «8*5=», считать тождественными (т. е. если был предложен первый из них, то ни он сам, ни второй — повторно предлагаться не должны).


Проблема заключается в том, что я никак не могу реализовать второю подзадачу, т.е. вывод НЕПОВТОРЯЮЩИХСЯ примеров. В цикле while (см. ниже) пытался решать эту задачу и через простой массив (программа ругалась на выход за пределы области массива), потом пробовал через arrayList:
(Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.set(Unknown Source)
at excersise5.main(excersise5.java:82),
но все впустую. Прошу помочь с этим затыком)))

Исходный код программы (пока реализованы примеры для 2 и 3):


import java.util.*;
class excample{
String a; int b;
excample (String x, int y)
{a=x;b=y;}}


public class excersise5 {

public static void main(String[] args) {

excample a21 = new excample("2 * 1 = ", 2);
excample a22 = new excample("2 * 2 = ", 4);
excample a23 = new excample("2 * 3 = ", 6);
excample a24 = new excample("2 * 4 = ", 8);
excample a25 = new excample("2 * 5 = ", 10);
excample a26 = new excample("2 * 6 = ", 12);
excample a27 = new excample("2 * 7 = ", 14);
excample a28 = new excample("2 * 8 = ", 16);
excample a29 = new excample("2 * 9 = ", 18);
excample a20 = new excample("2 * 10 = ", 20);

excample a31 = new excample("3 * 1 = ", 3);
excample a32 = new excample("3 * 2 = ", 6);
excample a33 = new excample("3 * 3 = ", 9);
excample a34 = new excample("3 * 4 = ", 12);
excample a35 = new excample("3 * 5 = ", 15);
excample a36 = new excample("3 * 6 = ", 18);
excample a37 = new excample("3 * 7 = ", 21);
excample a38 = new excample("3 * 8 = ", 24);
excample a39 = new excample("3 * 9 = ", 27);
excample a30 = new excample("3 * 10 = ", 30);

excample [] exc = new excample [20];
exc[0]=a21;
exc[1]=a22;
exc[2]=a23;
exc[3]=a24;
exc[4]=a25;
exc[5]=a26;
exc[6]=a27;
exc[7]=a28;
exc[8]=a29;
exc[9]=a20;
exc[10]=a31;
exc[11]=a32;
exc[12]=a33;
exc[13]=a34;
exc[14]=a35;
exc[15]=a36;
exc[16]=a37;
exc[17]=a38;
exc[18]=a39;
exc[19]=a30;

Random rand = new Random();
int x =0, res =0;
ArrayList<Integer> arg =new ArrayList<Integer>();


while(x<=9) {

int z =rand.nextInt(20);
boolean ff=false;


for(int i:arg)
{if( arg.get(i)==exc[z].b) {ff=true;} else {ff=false;}
ff&=ff;
System.out.println(ff);}

System.out.println("--------------------");
System.out.println(ff);

Scanner u = new Scanner(System.in);
System.out.println(exc[z].a);
int b = u.nextInt();


if(!ff)
{
arg.set(x, exc[z].b); x++;
}

if (b==exc[z].b)
{res++;}
}


System.out.println("Правильных ответов:" + res);}}
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764596
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ujin_k8,

так а не пробывали заполнить примерами массив, потом хаотично их выбирать для пользователя и после этогот удалять из массива, чтоб повторно не выбрать.

?

структура данных может быть другая.
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764693
Ujin_k8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не пробовал, но спасибо за идею)
вы считаете это должен быть Массив или Arraylist? должен состоять из объектов? если это просто массив как можно организовать удаление(или это должна быть замена)?
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764794
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ujin_k8,

Вам же нужно ещё ответы хранить с мапиные на примеры.

Я бы стал делать через map, притом так как 5*8=» и «8*5= - одно и тоже, то оба варианта нужно хранить для одного ключа.

Где ключ - равен от 0 до количество примеров.
Значение - объект, содержащий массив примеров 5*8=» и «8*5 , и ответ.

Потом когда генериться рандомное число, выбирается из мапы этот пример, дальше генериться ещё одно рандомное число для выбора уже примера из двух конкретных - число 0 или 1, для выбора или 5*8=» или 8*5.

После этого пользователь отвечает, вы сравниваете с ответом и заносите в отдельную структуру данных ошибку если есть.

После этого удаляете пример из мапы по ключу.
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764821
Ujin_k8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mr_virtus,
вы очень помогли. Премного благодарен.
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764882
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем что-то удалять?

Делаем Делаем класс ключ у которого hashCode=a+b, а isEqual - min(a,b)==min(o.a,o.b).
Забиваем мапу ключами на основе случайных чисел, пока количество ключей в ней не станет равной нужному.

Потом пробегаемся по ней же и заносим ответы.
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764883
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

и максимум тоже
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38764907
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ujin_k8, можно булеву матрицу создать. И отмечать уже проверенные вопросы.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
 2 3 4 5 6 7 8 9
2
3
4
5
6
7
8
9
...
Рейтинг: 0 / 0
Экзаменационная задача.
    #38765569
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще создать List со списком всех возможных примеров, а потом Collections.shuffle() и взять первые 10
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Экзаменационная задача.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]