Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433

Заготовки для FAQ (массивы, матрицы)

29.01.2015, 14:09. Показов 983. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Взято отсюда Стандартные операции с массивами (матрицами)
и переписано (MS DOS Qbasic ver. 1).

"Переворот" массива

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DIM a(100) AS INTEGER
DIM i AS INTEGER
DIM n AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
FOR i = 1 TO n
    INPUT a(i)
NEXT i
 
FOR i = 1 TO n \ 2
    SWAP a(i), a(n - i + 1)
NEXT i
 
FOR i = 1 TO n
    PRINT a(i);
NEXT i
SLEEP
Сдвиг массива на k элементов влево

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
DIM a(1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM n AS INTEGER
DIM j AS INTEGER
DIM r AS INTEGER
DIM k AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
FOR i = 1 TO n
    INPUT a(i)
NEXT i
 
PRINT "Enter shift of array": INPUT k
 
PRINT "Old array"
FOR i = 1 TO n
    PRINT a(i);
NEXT i
 
FOR j = 1 TO k
 FOR i = 1 TO n
  IF i = 1 THEN r = a(i) ELSE a(i - 1) = a(i)
 NEXT
 a(n) = r
NEXT
 
PRINT
PRINT "New array"
FOR i = 1 TO n
    PRINT a(i);
NEXT i
SLEEP
Сдвиг массива на k элементов вправо
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
DIM a(1 TO 5) AS INTEGER
DIM i AS INTEGER
DIM n AS INTEGER
DIM j AS INTEGER
DIM r AS INTEGER
DIM k AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
FOR i = 1 TO n
    INPUT a(i)
NEXT i
 
PRINT "Enter shift of array": INPUT k
 
PRINT "Old array"
FOR i = 1 TO n
    PRINT a(i);
NEXT i
 
FOR j = 1 TO k
 FOR i = n TO 1 STEP -1
  IF i = n THEN r = a(i) ELSE a(i + 1) = a(i)
 NEXT
 a(1) = r
NEXT
 
PRINT
PRINT "New array"
FOR i = 1 TO n
    PRINT a(i);
NEXT i
SLEEP
Поиск минимума/максимума и их индексов:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
DIM a(1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM N AS INTEGER
DIM max AS INTEGER
DIM min AS INTEGER
 
PRINT "Enter dimension of array": INPUT N
FOR i = 1 TO N
    INPUT a(i)
NEXT i
 
PRINT "Array"
FOR i = 1 TO N
    PRINT a(i);
NEXT i
 
max = 1
min = 1
FOR i = 1 TO N
    IF a(i) > a(max) THEN
        max = i
    ELSE
        IF a(i) < a(min) THEN
            min = i
        END IF
    END IF
NEXT
 
PRINT
PRINT "MAX = A("; max; ") = "; a(max)
PRINT "MIN = A("; min; ") = "; a(min)
 
SLEEP
Поиск минимума/максимума и их индексов в двумерном массиве (матрице):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM N AS INTEGER
DIM M AS INTEGER
 
PRINT "Enter dimensions of array": INPUT N:       INPUT M
FOR i = 1 TO N
    FOR j = 1 TO M
        INPUT a(i, j)
    NEXT j
NEXT i
 
PRINT "Array"
FOR i = 1 TO N
    FOR j = 1 TO M
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
mini = 1
minj = 1
maxi = 1
maxj = 1
FOR i = 1 TO N
    FOR j = 1 TO M
        IF a(i, j) > a(maxi, maxj) THEN
            maxi = i
        maxj = j
    ELSE
        IF a(i, j) < a(mini, minj) THEN
            mini = i
            minj = j
        END IF
        END IF
    NEXT j
NEXT i
 
PRINT
PRINT "MAX = A("; maxi; ","; maxj; ") = "; a(maxi, maxj)
PRINT "MIN = A("; mini; ","; minj; ") = "; a(mini, minj)
 
SLEEP
Добавлено через 2 часа 7 минут
Главная диагональ:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
REM the main diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM n AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
 
PRINT "Array"
FOR i = 1 TO n
    FOR j = 1 TO n
        IF i = j THEN
            a(i, j) = RND * n + 1
        ELSE
            a(i, j) = 0
        END IF
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
REM the amount AND the multiplication of the elements ON the main diagonal of the matrix
p = 1
sum = 0
FOR i = 1 TO n
    sum = sum + a(i, i)
    p = p * a(i, i)
NEXT
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Побочная диагональ:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
REM the side diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM N AS INTEGER
 
PRINT "Enter dimension of array": INPUT N
 
PRINT "Array"
FOR i = 1 TO N
    FOR j = 1 TO N
        IF i = N - j + 1 THEN
            a(i, j) = RND * N + 1
        ELSE
            a(i, j) = 0
        END IF
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
REM the amount AND the multiplication of the elements ON the side diagonal of the matrix
p = 1
sum = 0
FOR i = 1 TO N
    sum = sum + a(i, N - i + 1)
    p = p * a(i, N - i + 1)
NEXT
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Выше главной диагонали (не включая):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
REM up main diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM N AS INTEGER
 
PRINT "Enter dimension of array": INPUT N
 
PRINT "Array"
FOR i = 1 TO N
  FOR j = 1 TO N
      IF i < j THEN
        a(i, j) = RND * N + 1
    ELSE
         a(i, j) = 0
    END IF
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
REM the amount AND the multiplication of the elements up the main diagonal of the matrix
p = 1
sum = 0
FOR i = 1 TO N - 1
 FOR j = i + 1 TO N
    sum = sum + a(i, j)
    p = p * a(i, j)
 NEXT
NEXT
 
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Ниже главной диагонали (не включая):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
REM down main diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM N AS INTEGER
 
PRINT "Enter dimension of array": INPUT N
 
PRINT "Array"
FOR i = 1 TO N
  FOR j = 1 TO N
        IF i > j THEN
        a(i, j) = RND * N + 1
    ELSE
        a(i, j) = 0
        END IF
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
REM the amount AND the multiplication of the elements down the main diagonal of the matrix
p = 1
sum = 0
FOR i = 2 TO N
 FOR j = 1 TO i - 1
    sum = sum + a(i, j)
    p = p * a(i, j)
 NEXT
NEXT
 
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Выше побочной диагонали (не включая):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
REM up side diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM n AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
 
p = 1
sum = 0
PRINT "Array"
FOR i = 1 TO n
  FOR j = 1 TO n
    IF i + j < n + 1 THEN
        a(i, j) = RND * n + 1
        sum = sum + a(i, j)
            p = p * a(i, j)
    ELSE
        a(i, j) = 0
    END IF
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
REM the amount AND the multiplication of the elements up the side diagonal of the matrix
 
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Ниже побочной диагонали (не включая):
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
REM down side diagonal
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM n AS INTEGER
 
PRINT "Enter dimension of array": INPUT n
 
PRINT "Array"
p = 1
sum = 0
FOR i = 1 TO n
  FOR j = 1 TO n
    IF i + j > n + 1 THEN
        a(i, j) = RND * n + 1
        sum = sum + a(i, j)
            p = p * a(i, j)
    ELSE
        a(i, j) = 0
    END IF
        PRINT a(i, j);
  NEXT
    PRINT
NEXT
 
REM the amount AND the multiplication of the elements down the side diagonal of the matrix
 
PRINT "SUM = ", sum
PRINT "MULT = ", p
SLEEP
Добавлено через 25 минут
Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
DIM a(1 TO 100, 1 TO 100) AS INTEGER
DIM i AS INTEGER
DIM j AS INTEGER
DIM N AS INTEGER
 
PRINT "Enter dimension of array": INPUT N
PRINT "Array"
FOR i = 1 TO N
  FOR j = 1 TO N
        a(i, j) = RND * N + 1
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
Rem The rotation matrix clockwise
PRINT "The rotation matrix clockwise:"
p = n \ 2
FOR i=1 TO p
    FOR j=i TO n-i 
     x = a(i,j)
     a(i,j) = a(n-j+1,i)
     a(n-j+1,i) = a(n-i+1,n-j+1)
     a(n-i+1,n-j+1) = a(j,n-i+1)
     a(j,n-i+1) = x
    NEXT
NEXT    
 
FOR i = 1 TO N
  FOR j = 1 TO N
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
 
Rem The rotation matrix counterclockwise
PRINT "The rotation matrix counterclockwise"
FOR i=1 TO p 
    FOR j=i TO n-i
    x=a(i,j)
    a(i,j)=a(j,n-i+1)
    a(j,n-i+1)=a(n-i+1,n-j+1)
    a(n-i+1,n-j+1) = a(n-j+1,i)
    a(n-j+1,i)=x
    NEXT
NEXT
FOR i = 1 TO N
  FOR j = 1 TO N
        PRINT a(i, j);
    NEXT j
    PRINT
NEXT i
SLEEP
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.01.2015, 14:09
Ответы с готовыми решениями:

готовые девайсы \ заготовки для проектов на STM8
(кстати, могу выслать STM8s103f3p6 по 20р. конвертом,конверт 17-20р. стоит) Очередная заготовка для проектов на базе STM8 Проц:...

Существует способ сделать заготовки для экземпляра класса?
Добрый вечер ) Собственно, вопрос в теме: есть ли способ создать пресеты для экземпляров класса? Поясню: есть игра, предигровые экраны...

Распределить заготовки между станками для минимизации времени их обработки
Подскажите как реализовать задачу полным перебором. n заготовок необходимо обработать на двух одинаковых станках. Известно время Cj,...

4
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
01.02.2015, 01:02
ZX Spectrum-128, новичкам полезно будет, плюсую, только SLEEP убрать везде, т.к. не на
FB пишем, по SLEEP, кстати, в QBasic имхо лучше использовать замену WHILE INKEY$ = "": WEND.
Алгоритмы не проверял, надеюсь на вашу бдительность. Стиль кода, оформление, всё очень хорошо.
Ещё рекомендую CLS-ить вначале прог, уберёт мусор с экрана, которого валом обычно.
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.02.2015, 07:10
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ещё рекомендую CLS-ить вначале прог, уберёт мусор с экрана, которого валом обычно.
Откуда? Что, сейчас кто то работает с MS DOS? Максимум, запускают эмулятор для запуска подобного кода, там мусора нет.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,433
02.02.2015, 14:39  [ТС]
Удаление элемента в одномерном массиве

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Rem Удаление элемента в одномерном массиве
Rem Пусть нужно удалить все нулевые элементы из введенного пользователем массива. 
DIM i AS INTEGER
DIM m AS INTEGER
DIM n AS INTEGER
   
RANDOMIZE TIMER
PRINT "Enter dimension of array: ": INPUT n
 
REDIM a(1 TO n)  AS INTEGER
PRINT "Old array"
FOR i = 1 TO n
  a(i) = RND * n - n \ 2
  PRINT a(i);
NEXT i
 
PRINT
PRINT "New array"
m = 0
FOR i = 1 TO n
  IF a(i) = 0 THEN m = m + 1 ELSE a(i - m) = a(i)
NEXT i
 
n = n - m
FOR i = 1 TO n
  PRINT a(i);
NEXT i
 
WHILE INKEY$ = "": WEND
Вставка элемента в одномерный массив
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
REM Вставка элемента в одномерный массив
 
DIM i AS INTEGER
DIM m AS INTEGER
DIM n AS INTEGER
   
RANDOMIZE TIMER
PRINT "Enter dimension of array: ": INPUT n
 
REDIM a(1 TO n + 1) AS INTEGER
PRINT "Old array"
FOR i = 1 TO n
  a(i) = RND * n - n \ 2
  PRINT a(i);
NEXT i
 
PRINT
PRINT "Enter new element of array: ": INPUT x
PRINT
PRINT "Enter index of new element of array: ": INPUT nom
PRINT
 
FOR i = n + 1 TO nom + 1 STEP -1
    REM сдвигаем все элементы вправо
  a(i) = a(i - 1)
NEXT i
REM вставляем число 
a(nom) = x
 
PRINT "New array"
FOR i = 1 TO n + 1
  PRINT a(i);
NEXT i
 
WHILE INKEY$ = "": WEND
0
03.02.2015, 23:15

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Откуда? Что, сейчас кто то работает с MS DOS? Максимум, запускают эмулятор для запуска подобного кода, там мусора нет.
Дело не в том, что кто-то работает, но если хотите - я работаю, легко и непринуждённо на 3-х виртуалках.
Просто после запуска любой DOS проги, работающей с текстовым буфером, как правило, мусор остаётся.
Даже в DOSBox у меня экран полностью забит текстом после запуска, несмотря на то, что загружен один
KEYRUS, в других виртуалках загружаются ещё резидентники и драйверы: сидюка, EMS\XMS памяти, мышки,
саунд бластера, принтера и т.д. и т.п.. Но это не самое паршивое, самое паршивое, когда выводятся числа
и при последующем запуске программы(даже этой же программы) они начинают выводиться в место, где
остался курсор в итоге мы имеем полное непонимание, какие данные относятся к текущему выводу.
Ткнуть три буквы на клавиатуре мне не сложно, сложно ли вам - мне не известно. Но очевидно, что плюсов
больше чем минусов. И абсолютно не понятно, почему каждый раз возникает спор по поводу такой очевидной
и простой вещи.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2015, 23:15
Помогаю со студенческими работами здесь

Чем определяется одинаковость урлов /page?FAQ и /page.php?FAQ
Подскажите, пожалуйста, какая опция php или настройка сервера позволяет не указывать .php в урлах? Просто раньше у меня на сайте работал...

Не работает пример из FAQ для раздела – “C# для начинающих”
Фак здесь - https://www.cyberforum.ru/csharp-beginners/thread163620.html первый же пример не работает. что делаю не так. using...

FAQ для чайников
Если такой есть, то дайте пожалуйста ссылку. Сюда будут помещатся соотв. вопросы: 1) организация redirect 2) определение языка...

Java FAQ: для начинающих
Привет всем форумчанам,в этом Java FAQ,е постараюсь собрать все самое нужное о Java) Для начала давайте разберемся,что такое Java?Как...

JDBC FAQ для начинающих
обновил, добавил удаление и батч инсерт, исправил ошибку по mysql драйверу, добавил вывод в JTable, добавил хранимки package faq.jdbc; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru