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

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

29.01.2015, 14:09. Показов 964. Ответов 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,434
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru