Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
1

Заполнить двумерный массив номерами мест и напечатать схему заполнения зрительного зала

29.04.2017, 20:53. Показов 575. Ответов 4
Метки нет (Все метки)

: В кинотеатре 7 рядов по 5 мест в каждом и заняты только
нечётные места. Заполнить двумерный массив номерами мест и напечатать схему заполнения
зрительного зала.
Код этой программы:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLS
DIM A(7, 5)
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA 16,17,18,19,20,21,22,23,24,25,26,27
DATA 28,29,30,31,32,33,34,35
PRINT “ Заняты нечётные места (нулики)”
   FOR j = 1 TO 7
FOR i = 1 TO 5
   READ A(j, i)
   LOCATE i * 2, j * 4
   PRINT A(j, i)
NEXT I, j
FOR j = 1 TO 7
FOR I = 1 TO 5
  IF A(j, i) MOD 2 <> 0 THEN A(j, i) = 0
     LOCATE i * 2, j * 4
        PRINT A(j, i)
NEXT I, j
На выходе:
QBasic/QuickBASIC
1
2
3
4
5
6
Заняты нечётные места (нулики)
0    6    0    16    0    26    0
2    0    12    0    22    0    32
0    8    0    18    0    28    0
4    0    14    0    24    0    34
0    10    0    20    0    30    0
Почему не печатается исходный массив. Как я не старался, ничего не получилось.
И заменить нулик крестиком тоже не получилось (хотя ко всем массивам добавлял
знак символа доллар ( $).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2017, 20:53
Ответы с готовыми решениями:

Заполнить двумерный массив номерами мест, подсчитать количество мест у окон и вывести на экран схему мест
В автобусе 6 рядов кресел по 4 места в каждом ряду. Чётные номера находятся у окон.Необходимо...

Заполнить двумерный массив номерами мест
В автобусе 4 ряда кресел по 8 мест в каждом ряду. Чётные номера находятся у окон. Необходимо ...

Реализация зрительного зала
Пишу курсовую. Тема:АРМ кассира кинотеатра. Не могу понять каким образом реализовать продажу...

В ряду зрительного зала 15 кресел. Сколькими способами можно разместить на них 15 человек?
В ряду зрительного зала 15 кресел. Сколькими способами можно разместить на них 15 человек?

__________________
4
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
30.04.2017, 06:37 2
Petro29
Вы не только поменяли местами переменные i и j,
введя самого себя в заблуждение, но и обнулили все
нечетные значения массива. Посмотрите вашу строку 15 (!!)
...
И что вы после этого хотите?
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
21.05.2017, 11:00  [ТС] 3
В кинотеатре 7 рядов по 5 мест в каждом и заняты только
нечётные места. Заполнить двумерный массив номерами мест и напечатать схему заполнения
зрительного зала.
Код этой программы:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLS
DIM A(7, 5)
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA 16,17,18,19,20,21,22,23,24,25,26,27
DATA 28,29,30,31,32,33,34,35
PRINT “ Заняты нечётные места (нулики)”
   FOR j = 1 TO 7
FOR i = 1 TO 5
   READ A(j, i)
   LOCATE i * 2, j * 4
   PRINT A(j, i)
NEXT I, j
FOR j = 1 TO 7
FOR I = 1 TO 5
  IF A(j, i) MOD 2 <> 0 THEN A(j, i) = 0
     LOCATE i * 2, j * 4
        PRINT A(j, i)
NEXT I, j
На выходе:
Код
Заняты нечётные места (нулики)
0    6    0    16    0    26    0
2    0    12    0    22    0    32
0    8    0    18    0    28    0
4    0    14    0    24    0    34
0    10    0    20    0    30    0
Почему не печатается исходный массив. Как я не старался, ничего не получилось.
И заменить нулик крестиком тоже не получилось (хотя ко всем массивам добавлял
знак символа доллар ( $).

Ваш ответ: Вы не только поменяли местами переменные i и j, введя самого себя в заблуждение, но и обнулили все нечётные значения массива. Посмотрите вашу строку 15 (!!)

И что вы после этого хотите?

А хотел я ответа на вопрос – «Почему не печатается исходный массив».
Вы не ответили. Да и про крестики – нулики тоже молчок. А то, что у меня условие оказалось для чётных мест, а не для нечётных, так это не принципиально.
Поменял условие – и результат поменялся
А чтобы напечатался исходный массив кинотеатра, я всё-таки сделал эту
программу сам и она мне понравилась.
Вот эта программа:

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CLS
DIM A(7, 5)
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA 16,17,18,19,20,21,22,23,24,25,26,27
DATA 28,29,30,31,32,33,34,35
     LOCATE 1, 6
       PRINT “ План мест кинотеатра”
   FOR j = 1 TO 7
   FOR i = 1 TO 5
      READ A(j, i)
   LOCATE i + 2, j * 4
   PRINT A(j, i)
NEXT i, j
 
   LOCATE 9, 6
      PRINT “ЗАНЯТЫ НЕЧЁТНЫЕ МЕСТА”
FOR j = 1 TO 7
FOR I = 1 TO 5
  IF A(j, i) MOD 2 = 0 THEN A(j, i) = 0
     LOCATE i +10, j * 4
        PRINT A(j, i)
NEXT i, j
На выходе:

План мест кинотеатра
Код
1     6      11     16     21     26     31
2     7      12     17     22     27     32
3     8      13     18     23     28     33
4     9      14     19     24     29     34
5     10    15     20     25     30     35
Заняты нечётные места

Код
1      0     11      0      21      0      31
0      7       0      17      0      27      0
3      0     13       0      23      0      33
0      9       0      19       0      29      0
5      0      15       0      25      0      35
А если во второй части программы в LOCATE поставить такие значения:
QBasic/QuickBASIC
1
2
   LOCATE 1, (6 + 32)
 LOCATE i + 2, 32 + (j * 4)
на выходе получим массивы не в столбик, а рядом.
И ещё: что насчёт крестиков – нуликов: с ними может что-нибуть
получиться или нет.
0
Платежеспособный зверь
8737 / 4159 / 1604
Регистрация: 28.10.2009
Сообщений: 11,263
21.05.2017, 11:31 4
Цитата Сообщение от Petro29 Посмотреть сообщение
А хотел я ответа на вопрос – «Почему не печатается исходный массив».
Потому что второй массив Вы печатаете на месте первого. Поставьте между 12 и 13 командой Вашей исходной программы
SLEEP 5 и Вы всё увидите: и исходный, и второй. А лучше сменить LOCATE для второго массива
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
18.06.2017, 10:43  [ТС] 5
Код этой программы:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CLS
DIM A(7, 5)
DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
DATA 16,17,18,19,20,21,22,23,24,25,26,27
DATA 28,29,30,31,32,33,34,35
     LOCATE 1, 6
       PRINT “ План мест кинотеатра”
   FOR j = 1 TO 7
   FOR i = 1 TO 5
      READ A(j, i)
   LOCATE i + 2, j * 4
   PRINT A(j, i)
NEXT i, j
                  LOCATE 9, 6
      PRINT “ЗАНЯТЫ НЕЧЁТНЫЕ МЕСТА”
FOR j = 1 TO 7
FOR I = 1 TO 5
  IF A(j, i) MOD 2 = 0 THEN A(j, i) = 0
     LOCATE i +10, j * 4
        PRINT A(j, i)
NEXT i, j
План мест кинотеатра
QBasic/QuickBASIC
1
2
3
4
5
          1     6      11     16     21     26     31
2     7      12     17     22     27     32
3     8      13     18     23     28     33
4     9      14     19     24     29     34
5     10    15     20     25     30     35
Заняты нечётные места
QBasic/QuickBASIC
1
2
3
4
5
1      0     11      0      21      0      31
0      7       0      17      0      27      0
3      0     13       0      23      0      33
0      9       0      19       0      29      0
5      0      15       0      25      0      35
Был вопрос «Почему не печатается исходный массив». На этот вопрос ответа
не получил. Ладно. Это я уже наловчился делать.
А ответ на этот вопрос дали такой:
«Потому что второй массив Вы печатаете на месте первого.
Поставьте между 12 и 13 командой Вашей исходной программы SLEEP 5 и Вы
всё увидите: и исходный, и второй. А лучше сменить LOCATE для второго
массива».
Попробовал вставить его в программу (на которую был дан ответ) –результат такой: задержка проявилась (5, 3 или 1 сек, сколько задал), а вот с массивами не получилось – вышел исходный массив, а вместо второго массива вышли числа с задержкой в верти- кальной строке. То есть не получилось как надо. Почему?
И вообще то в ответе про пустой цикл оператор SLEEP рекомендован как оператор
задержки . А годится ли он для замены оператора LOCATE ?


И ещё: в ответе про пустой цикл рекомендовалось оператор SLEEP использовать для
задержки цикла. Да, задержку он обеспечивает, а как же с заменой LOCATE на SLEEP?
Для примера вот такая программка:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
CLS
FOR i = 2 TO 12 STEP
  LOCATE 2, I * 22
      PRINT i;
     k = k + 3;
  LOCATE 4, i * 22
      PRINT k;
NEXT i
На выходе:
QBasic/QuickBASIC
1
2
2   4   8   10   12   12
                      5   7   9   11   13   15
После замены LOCATE на SLEEP такая программа (с задержкой в 3 сек):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
CLS
FOR i = 2 TO 12 STEP
  SLEEP 3
    PRINT i;
     k = k + 3
  SLEEP 3
    PRINT k;
NEXT i
На выходе:
QBasic/QuickBASIC
1
 2   5  4   7   6   9   8   11   10   13   12   15
Циклы перемешались.
А если для 1-го цикла поставить LOCATE, а для 2-го SLEEP, то печатается исходный
цикл с задержкой в 3 сек и в конце этого цикла печатается только последнее значение
2 – го цикла -15.
Вот и вопрос:: Годится ли оператор SLEEP для перевода
строк или нет?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2017, 10:43

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Заполнить двумерный массив порядковыми номерами элементов
Заполнить двумерный массив порядковыми номерами элементов. Добавлено через 3 часа 19 минут...

Двумерный массив. Заполнить и вывести двумерный массив БЕЗ использования цикла FOR
Заполнить ивывести двумерный массив БЕЗ использования цикла FOR очень срочно!!!

Двумерный массив с фамилиями и номерами
Дан двумерный массив, содержащий фамилии учащихся и номера их телефонов. По фамилии учащегося...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.