|
|
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. В университете была поставлена задач: Создать программу, которая будет последовательно предлагать пользователю десять случайных примеров, проверяющих знание таблицы умножения (каждый из сомножителей от 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);}} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 11:51 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Ujin_k8, так а не пробывали заполнить примерами массив, потом хаотично их выбирать для пользователя и после этогот удалять из массива, чтоб повторно не выбрать. ? структура данных может быть другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 12:15 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Не пробовал, но спасибо за идею) вы считаете это должен быть Массив или Arraylist? должен состоять из объектов? если это просто массив как можно организовать удаление(или это должна быть замена)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 13:00 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Ujin_k8, Вам же нужно ещё ответы хранить с мапиные на примеры. Я бы стал делать через map, притом так как 5*8=» и «8*5= - одно и тоже, то оба варианта нужно хранить для одного ключа. Где ключ - равен от 0 до количество примеров. Значение - объект, содержащий массив примеров 5*8=» и «8*5 , и ответ. Потом когда генериться рандомное число, выбирается из мапы этот пример, дальше генериться ещё одно рандомное число для выбора уже примера из двух конкретных - число 0 или 1, для выбора или 5*8=» или 8*5. После этого пользователь отвечает, вы сравниваете с ответом и заносите в отдельную структуру данных ошибку если есть. После этого удаляете пример из мапы по ключу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 13:52 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
mr_virtus, вы очень помогли. Премного благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 14:02 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Зачем что-то удалять? Делаем Делаем класс ключ у которого hashCode=a+b, а isEqual - min(a,b)==min(o.a,o.b). Забиваем мапу ключами на основе случайных чисел, пока количество ключей в ней не станет равной нужному. Потом пробегаемся по ней же и заносим ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 14:28 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, и максимум тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 14:30 |
|
||
|
Экзаменационная задача.
|
|||
|---|---|---|---|
|
#18+
Ujin_k8, можно булеву матрицу создать. И отмечать уже проверенные вопросы. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2014, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=158&tid=2126517]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 355ms |

| 0 / 0 |
