Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

QBasic

Войти
Регистрация
Восстановить пароль
 
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 175
#1

Заполнить двумерный массив номерами мест, подсчитать количество мест у окон и вывести на экран схему мест - QBasic

22.11.2016, 16:21. Просмотров 265. Ответов 6
Метки нет (Все метки)

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


QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PRINT “                          Автобус”
DIM A$(8, 4)
DATA2,1,3,4,6,5,7,8,10,9DATA11,12,14,13,15,16,18,17DATA19,20,22,21,23,24,26,25DATA27,28,30  (1-й ряд),29 (2-й ряд)DATA31 (3-й ряд),32 (4-й ряд)”
    FOR I = 1 TO  8
    FOR j = 1 TO 4
        READ A$(i, j)
        LOCATE j * 2, I * 4
        PRINT A$(I, j)
REM … Напечатать 2 – й  ряд …
            LOCATE  j * 2,  50
             PRINT A$(j , 2)
NEXT j, i
QBasic/QuickBASIC
1
2
3
4
   2   6   10   14    18   22   26   30 (1-й ряд)          1
   1   5   9      13   17   21   25   29 (2-й ряд)          5
   3   7   11    15   19   23   27   31 (3-й ряд)          9
   4   8   12    16   20   24   28   32 (4-й ряд)          13
Как напечатать, например, второй ряд таблицы и определить количество мест (8 мест)
в этом ряду. У меня он напечатался только наполовину, да и то по вертикали (символ ; -
после PRINT ничего не меняет).
И ещё: как бы весь блок мест автобуса сместить на пробел от строки «Автобус», но не
меняя пробелы ( j * 2 ) между строками.
И ещё такой же вопрос, что и в одномерных массивах:
Зачем в подобных двумерных массивах строка массива «DIM A$(8, 4)»? Без этой
строки всё получается также как и с этой строкой.
Вот такие три проблемы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2016, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить двумерный массив номерами мест, подсчитать количество мест у окон и вывести на экран схему мест (QBasic):

Заполнить двумерный массив номерами мест и напечатать схему заполнения зрительного зала - QBasic
: В кинотеатре 7 рядов по 5 мест в каждом и заняты только нечётные места. Заполнить двумерный массив номерами мест и напечатать схему...

Определить общее число свободных мест в зрительном зале - QBasic
В зрительном зале 23 ряда в каждом из которых 40 мест((кресел) Информация о проданных билетах хранится в двумерном массиве , номера строк...

Заполнить литерный массив заглавными английскими буквами и подсчитать количество букв - QBasic
#1 Дан литерный массив 4х5. Заполнить его заглавными английскими буквами и подсчитать количество букв, которые по алфавиту находятся...

Вычислить суммарное количество мест и количество мест в гостинице - C++
Написать программу работы с массивом из 10 объектов Объекты - номера в отеле. Требуется вычислить суммарное количество мест и...

БД Турфирма: сравнение доступних мест с количееством заказаних мест - MS Access
К посту я додал частинку моей схеми БД Помогите мне решить проблему: в табл Тури вносится максимальное количество мест на тур в...

Подсчитать количество занятых мест - Delphi
Как подсчитать количество занятых мест? Имеется dbEdit1 в котором указана вместимость. dbEdit2 количество свободных мест. И dbEdit3 в...

6
echs
893 / 1089 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
22.11.2016, 17:29 #2
А так лучше? Или нет?

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CLS
DIM A(8, 4)
 
PRINT "   AUTOBUS"
PRINT
A(0, 1) = -2
A(0, 2) = -3
A(0, 3) = -1
A(0, 4) = 0
 
FOR i = 1 TO 8
FOR j = 1 TO 4
   A(i, j) = A(0, j) + 4 * i
   PRINT USING "###"; A(i, j);
NEXT j: PRINT
NEXT i: PRINT
END
0
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 175
25.12.2016, 11:55  [ТС] #3
Вы предложили свою программу. Да, она компактная (прямо таки нана технолгии, но уж очень она заумная. Откуда такое решение то взялось),
пока не очень понятное. К этой программе хотелось бы добавить пробелы
по вертикали и по горизонтали.
А вот по приведённой программе вы ничего не ответили.
А хотелось получить решения на три вопроса!
В автобусе 6 рядов кресел по 4 места в каждом ряду. Чётные номера находятся у окон.
Необходимо заполнить двумерный массив номерами мест, подсчитать количество мест
у окон и вывести на экран схему расположения кресел в салоне.

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PRINT “                          Автобус”
DIM A$(8, 4)
DATA2,1,3,4,6,5,7,8,10,9DATA11,12,14,13,15,16,18,17DATA19,20,22,21,23,24,26,25DATA27,28,30  (1-й ряд),29 (2-й ряд)DATA31 (3-й ряд),32 (4-й ряд)”
    FOR I = 1 TO  8
    FOR j = 1 TO 4
        READ A$(i, j)
        LOCATE j * 2, I * 4
        PRINT A$(I, j)
REM … Напечатать 2 – й  ряд …
            LOCATE  j * 2,  50
             PRINT A$(j , 2)
NEXT j, i
QBasic/QuickBASIC
1
2
3
4
   2   6   10   14    18   22   26   30 (1-й ряд)          1
   1   5   9      13   17   21   25   29 (2-й ряд)          5
   3   7   11    15   19   23   27   31 (3-й ряд)          9
   4   8   12    16   20   24   28   32 (4-й ряд)          13
1. Как напечатать, например, второй ряд таблицы. У меня он напечатался только наполовину,
да и то по вертикали (символ ; -после PRINT ничего не меняет).
2. Определить количество мест (8 мест) во втором ряду программой.
3. И ещё: как бы весь блок мест автобуса сместить на пробел от строки «Автобус», но не
меняя пробелы ( j * 2 ) между строками. Строка «Автобус» не печатается. А её надо напечатать.
Вот такие три проблемы!
0
echs
893 / 1089 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
25.12.2016, 14:06 #4
А так?

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLS
DIM A(8, 4)
 
PRINT "         AUTOBUS"
PRINT
 
A(0, 1) = -2
A(0, 2) = -3
A(0, 3) = -1
A(0, 4) = 0
 
FOR i = 1 TO 8
FOR j = 1 TO 4
   A(i, j) = A(0, j) + 4 * i
   PRINT USING "  ###"; A(i, j);
NEXT: PRINT : PRINT
NEXT
END
...
А это код ваш (переделанный). В нем три ответа на три ваших вопроса.
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(8, 4)
 
DATA  2,  1,  3,  4
DATA  6,  5,  7,  8
DATA 10,  9, 11, 12
DATA 14, 13, 15, 16
DATA 18, 17, 19, 20
DATA 22, 21, 23, 24
DATA 26, 25, 27, 28
DATA 30, 29, 31, 32
 
PRINT "       AUTOBUS"
 
FOR i = 1 TO 8
FOR j = 1 TO 4
   READ A(i, j)
   LOCATE 2 * i + 2, 4 * j
   PRINT A(i, j)
NEXT j, i
END
0
Petro29
6 / 6 / 0
Регистрация: 30.04.2016
Сообщений: 175
11.01.2017, 17:55  [ТС] #5
Ваше решение переделано на горизонтальную схему мест в автобусе (как в кассах по продажи
билетов). Ну и восемь строк данных заменены на три удлинённые строки. (С оператором LO-
CATE что – то уже понимается).
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CLS
PRINT “                          А В Т О Б У С”
DIM A (8, 4)
DATA  2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, 12
DATA 14, 13, 15, 16, 18, 17, 19, 20, 22, 21
DATA 23, 24, 26, 25, 27, 28, 30, 29, 31, 32
    FOR i = 1 TO  8
    FOR j = 1 TO 4
        READ A (i, j)
        LOCATE j * 2 + 1, I * 4
        PRINT A (I, j)
NEXT j, i 
   PRINT
PRINT “      Кол. мест в автобусе: “; I * j
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
       А В Т О Б У С
2   6   10   14   18   22   26   30
 
1   5    9    13   17   21   25   29
 
3   7   11   15   19   23   27   31
 
4   8    12   16    20   24   28   32
 
Кол. мест в автобусе:   45

А вот вопросы оставались без ответа:
1 вопрос: Почему количество мест в автобусе 45, а не 32?
2 вопрос: Как напечатать отдельно любой ряд или любой столбец (у меня 2-й ряд печатался
наполовину, да и то по вертикали).
3 вопрос: Как определить количество мест в горизонтальном или в вертикальном ряду.
4 вопрос: Как определить сумму значений элементов массива в горизонтальном или в верти-
кальном ряду (ведь может быть любой двумерный массив со своими значениями).
5 вопрос: Как определить сумму значений всех элементов массива.

Добавлено через 33 секунды
И ещё: сделана программа с указанием рядов по горизонтали (можно и по вертикали).
Два нижних ряда выполнены с дополнительными двумя циклами.

………………………………………….
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     LOCATE j * 2 + 1, I * 5
     PRINT A(I, j)
NEXT j, i
  DIM B$(8)
  DATA1-й”,2-й”,3-й”,4-й”,5-й”,6-й”,7-й”,8-й”
     FOR k = 1 TO 5
        READ B$(k)
     LOCATE 11, k * 5
     PRINT “  “;  B$(k)
     NEXT k
          FOR p = 1 TO 8
          LOCATE 12, p * 5
          PRINT “  ряд “
          NEXT p
……………………………………
QBasic/QuickBASIC
1
2
3
4
    4      8     12    16   20    24    28    32   
 
    1-й  2-й  3-й  4-й  5-й   6-й   7-й  8-й
    ряд  ряд  ряд  ряд  ряд  ряд  ряд  ряд
А если выполнять эти два нижних ряда с одним дополнительным циклом, то получается, что второй ряд дублируется, причём слишком низко от двух нижних рядов.
А почему так – не понятно. Вот как это выглядит у меня (фрагменты низа программы):

……………………………………………..
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
     LOCATE j * 2 + 1, I * 5
     PRINT A(i, j)
NEXT j, i
   DIM B$(8, 2)
   DATA1-й”,”ряд”,2-й”,”ряд”,3-й”,”ряд”,4-й”,”ряд”
   DATA5-й”,”ряд”,6-й”,”ряд”,7-й”,”ряд”,8-й”,”ряд”
       FOR k = 1 TO 8
       FOR p = 1 TO 2
           READ B$(k, p)
        LOCATE p * 11, k * 5
        PRINT “  “
Добавлено через 52 секунды
QBasic/QuickBASIC
1
2
3
4
5
      ………………………………………………
     4     8     12     16     20     24     28     32
 
      1-й   2-й   3-й   4-й   5-й   6-й   7-й   8-й
      ряд  ряд  ряд  ряд  ряд  ряд   ряд  ряд



ряд ряд ряд ряд ряд ряд ряд ряд














А если в конце программы поставить END, то выход такой:

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
  ………………………………………………
     4     8     12     16     20     24     28     32
 
      1-й   2-й   3-й   4-й   5-й   6-й   7-й   8-й
      
 
 
     ряд  ряд  ряд  ряд  ряд  ряд  ряд  ряд
То же не понятно.
0
echs
893 / 1089 / 348
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
11.01.2017, 18:47 #6
Petro29
Отвечаю на первый ваш вопрос. Почему 45, а не 32?
1. Вы печатаете произведение i*j
i изменяется до 8
j изменяется до 4
Чтобы произошел выход из цикла параметр должен
быть на единицу (шаг равен 1) больше его максимального
значения. То есть i = 9, a j = 5. Умножаем 9 на 5 = 45
Вывод: считать надо (i - 1)*(j - 1)
...
Как печатать?
Одно из двух
1. Либо вы меняете местами параметры циклов
2. Либо это делаете в операторе LOCATE.
Именно это и не дает вам все распечатать
(я уже привел вам пример)
...
Вопрос 3 прост. Вы сами задаёте количество мест.
...
Вопрос 4. Определение суммы элементов в строке
(допустим в первой строке). То есть надо произвести
сложение A(1, 1) + A(1, 2) + A(1, 3) + ... + A(1, n)
...
Вопрос 5. Сумма всех элементов
QBasic/QuickBASIC
1
2
3
4
5
FOR i = 1 TO 8
FOR j = 1 TO 4
   SUMMA = SUMMA + A(i, j)
NEXT
NEXT
0
кот Бегемот
Платежеспособный зверь
8039 / 3760 / 678
Регистрация: 28.10.2009
Сообщений: 9,560
11.01.2017, 21:11 #7
Цитата Сообщение от Petro29 Посмотреть сообщение
В автобусе 6 рядов кресел по 4 места в каждом ряду
Цитата Сообщение от Petro29 Посмотреть сообщение
Почему количество мест в автобусе 45, а не 32?
Потому что 6 умножить на 4=24
0
11.01.2017, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 21:11
Привет! Вот еще темы с ответами:

В зрительном зале X рядов, а мест в каждом ряду на 6 больше. Сколько в зрительном зале посадочных мест? - C++
Составьте выражение по условию задачи: "В зрительном зале х рядов, а мест в каждом ряду на 6 больше. Сколько в зрительном зале посадочных...

Структура: вывести на экран информацию о результатах прыжков в длину, отсортированную в порядке возрастания мест - C++
В одном файле хранятся сведения об участниках соревнований: номер участника, ФИО, страна, во 2 файле сведения об итогах соревнований: номер...

Подсчитать сумму мест, на которых в словах текста стоит заданная буква - C (СИ)
Написать программу для подсчета суммы мест, на которых в словах текста стоит заданная буква. #include<stdio.h> #include<math.h> ...

Подсчитать сумму мест, на которых в словах текста стоит заданная буква - C++ Builder
Тема файловый ввод и вывод , прога нужна для Borland c++. Написать программу для подсчета суммы мест, на которых в словах текста стоит...


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

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

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