Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185

Две матрицы изменяются до тех пор, пока не совпадут

03.07.2014, 15:39. Показов 521. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны две матрицы размером 7*7. Они заполнены случайными
целыми числами от 0 до 9. Далее из первой матрицы случайно
выбирается элемент и помещается во вторую матрицу на то же
место (те же координаты), которое у него было в первой матрице.
Далее этот элемент заменяет рядом стоящие элементы на самого
себя (пример, если это число 7, то вокруг будут раполагаться
семерки). Далее аналогичным образом поступают со 2-ой
матрицей. Ее элемент помещается в первую матрицу, который
там "наводит тот же порядок" и все повторяется до тех пор, пока
матрицы не станут равными (из одних и тех же элементов)
Определить на каком шаге это произойдет.
Эта программа решает данную задачу.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
DECLARE FUNCTION Aus% (a%())
DECLARE SUB Auf (i1%, j1%, a1%, a%(), c%())
DEFINT A-D, I-K
OPTION BASE 1
RANDOMIZE TIMER
CLS
DIM a(7, 7)
DIM b(7, 7)
DIM c(0 TO 8, 0 TO 8)
 
FOR i = 1 TO 7
   FOR j = 1 TO 7
      a(i, j) = 10 * RND - .5
      LOCATE i, 3 * j
      PRINT a(i, j)
      b(i, j) = 10 * RND - .5
      LOCATE i, 3 * j + 30
      PRINT b(i, j)
   NEXT j
NEXT i
 
FOR k = 1 TO 2000
   i1 = 7 * RND + .5
   j1 = 7 * RND + .5
   a1 = a(i1, j1)
   CALL Auf(i1, j1, a1, b(), c())
  
   i1 = 7 * RND + .5
   j1 = 7 * RND + .5
   b1 = b(i1, j1)
   CALL Auf(i1, j1, b1, a(), c())
   IF Aus(a()) * Aus(b()) THEN EXIT FOR
NEXT k
 
FOR i = 1 TO 7
   FOR j = 1 TO 7
      LOCATE i + 8, 3 * j
      PRINT a(i, j)
      LOCATE i + 8, 3 * j + 30
      PRINT b(i, j)
   NEXT j
NEXT i
LOCATE 17, 24
PRINT "K = "; k
END
 
SUB Auf (i1, j1, a1, a(), c())
   FOR i = 1 TO 7
      FOR j = 1 TO 7
         c(i, j) = a(i, j)
      NEXT j
   NEXT i
 
   c(i1, j1) = a1
   c(i1, j1 - 1) = a1
   c(i1, j1 + 1) = a1
   c(i1 - 1, j1) = a1
   c(i1 - 1, j1 - 1) = a1
   c(i1 - 1, j1 + 1) = a1
   c(i1 + 1, j1) = a1
   c(i1 + 1, j1 - 1) = a1
   c(i1 + 1, j1 + 1) = a1
 
   FOR i = 1 TO 7
      FOR j = 1 TO 7
         a(i, j) = c(i, j)
      NEXT j
   NEXT i
END SUB
 
DEFINT D, K
FUNCTION Aus (a())
Aus = 1
d = a(1, 1)
FOR i = 1 TO 7
   FOR j = 1 TO 7
      IF a(i, j) <> d THEN
         Aus = 0
         GOTO 200
      END IF
   NEXT j
NEXT i
200
END FUNCTION
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2014, 15:39
Ответы с готовыми решениями:

Переставлять строки и столбцы матрицы до тех пор, пока наибольший элемент не окажется в верхнем левом углу
Помогите пожалуйста. Сам не смог. Условие: дана матрица размером NxM , добиться того, чтобы наибольший элемент матрицы стоял в верхнем...

Элементы заданной матрицы A(N, N) переписывайте построчно в одномерный массив до тех пор, пока не встретится нулевой элемент.(Матрица задается динами)
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main() { int i,j,k,t,mas,mass,N,M; cout&lt;&lt;&quot;Enter n&quot;; ...

вычислять до тех пор, пока не нажмешь '?'
Ребят, помогите дополнить программу. Нужно продолжать вычисления, пока не нажмешь '?' #include &quot;stdafx.h&quot; #include...

4
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
04.07.2014, 16:33  [ТС]
вот ещё задача.
дана квадратная матрица А. построить В ей зеркальную.
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
DIM i AS INTEGER
DIM j AS INTEGER
DEFINT A-B
OPTION BASE 1
CLS
INPUT "N=?"; n
DIM a(n, n)
DIM b(n, n)
 
LOCATE 3, 2 * n + 2
PRINT "A"
FOR i = 1 TO n
   FOR j = 1 TO n
      a(i, j) = 10 * RND
      LOCATE 4 + i, 4 * j - 3
      PRINT USING "####"; a(i, j);
   NEXT j
NEXT i
 
LOCATE 3, 6 * n + 5
PRINT "B"
FOR i = 1 TO n
   FOR j = 1 TO n
      b(i, j) = a(i, n + 1 - j)
      LOCATE i + 4, 4 * n + 4 * j
      PRINT USING "####"; b(i, j);
   NEXT j
NEXT i
END
0
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
05.07.2014, 17:07  [ТС]
дана матрица А, построить матрицу В, которая
получена из матрицы А перемещением элементов
ее периметра на один шаг по часовой стрелке.
пример:
1 2 3 4
2 7 7 5
1 7 7 6
0 9 8 7
а В выглядит так:
2 1 2 3
1 7 7 4
0 7 7 5
9 8 7 6
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
DEFINT A-B, I-K
OPTION BASE 1
RANDOMIZE TIMER
CLS
INPUT "N=?"; n
DIM a(n, n)
DIM b(n, n)
 
FOR i = 1 TO n
   FOR j = 1 TO n
      a(i, j) = 20 * RND - 10
      PRINT USING "####"; a(i, j);
   NEXT j
   PRINT
NEXT i
 
FOR i = 1 TO n
   FOR j = 1 TO n
      IF i = 1 AND j < n THEN
         b(i, j + 1) = a(i, j)
      ELSEIF i < n AND j = n THEN
         b(i + 1, n) = a(i, n)
      ELSEIF i = n AND j > 1 THEN
         b(n, j - 1) = a(n, j)
      ELSEIF i > 1 AND j = 1 THEN
         b(i - 1, 1) = a(i, 1)
      END IF
   NEXT j
NEXT i
 
FOR i = 2 TO n - 1
   FOR j = 2 TO n - 1
      b(i, j) = a(i, j)
   NEXT j
NEXT i
 
PRINT
FOR i = 1 TO n
   FOR j = 1 TO n
      PRINT USING "####"; b(i, j);
   NEXT j
   PRINT
NEXT i
END
0
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
06.07.2014, 17:49  [ТС]
эта программа обобщение предыдущей.
здесь как бы вся матрица поворачивается на один шаг по часовой стрелке.
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
DEFINT A-B, I-N
OPTION BASE 1
RANDOMIZE TIMER
CLS
INPUT "N=?"; n
DIM a(n, n)
DIM b(n, n)
 
FOR i = 1 TO n
   FOR j = 1 TO n
      a(i, j) = 20 * RND - 10
      PRINT USING "####"; a(i, j);
   NEXT j
   PRINT
NEXT i
 
m = FIX(n / 2)
l = m + 1
n1 = n + 1
 
FOR k = 1 TO m
   FOR i = k TO n1 - k
      FOR j = k TO n1 - k
         IF i = k AND j < n1 - k THEN
            b(i, j + 1) = a(i, j)
         ELSEIF i < n1 - k AND j = n1 - k THEN
            b(i + 1, n1 - k) = a(i, n1 - k)
         ELSEIF i = n1 - k AND j > k THEN
            b(n1 - k, j - 1) = a(n1 - k, j)
         ELSEIF i > k AND j = k THEN
            b(i - 1, k) = a(i, k)
         END IF
      NEXT j
   NEXT i
NEXT k
IF n MOD 2 = 1 THEN b(l, l) = a(l, l)
 
PRINT
FOR i = 1 TO n
   FOR j = 1 TO n
      PRINT USING "####"; b(i, j);
   NEXT j
   PRINT
NEXT i
END
0
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
09.07.2014, 07:42  [ТС]
дана квадратная матрица порядка N.
надо преобразовать эту матрицу по следующему правилу,
каждая строка этой матрицы сдвигается на k шагов вправо,
элементы, которые "выходят" из матрицы переходят в начало
следующей строки, а конец матрицы переходит в ее начало.
Чтобы лучше понять посмотрите простой пример
Дано:
1234
5678
9012
3456
Имеем (сдвиг на два шага)
5612
3456
7890
1234
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
DEFINT A-B, I-N
OPTION BASE 1
RANDOMIZE TIMER
CLS
INPUT "N = ?"; n
INPUT "STEP="; k
DIM a(n, n)
DIM b(n * n)
 
FOR i = 1 TO n
   FOR j = 1 TO n
      a(i, j) = n * (i - 1) + j
      PRINT USING "####"; a(i, j);
   NEXT j
   PRINT
NEXT i
 
FOR i = 1 TO n
   FOR j = 1 TO n
      b(n * (i - 1) + j) = a(i, j)
   NEXT j
NEXT i
 
FOR j = 1 TO k
   FOR i = n * n TO 2 STEP -1
      SWAP b(i), b(i - 1)
   NEXT i
NEXT j
 
FOR l = 1 TO n * n
   i = (l - 1) \ n + 1
   j = (l - 1) MOD n + 1
   a(i, j) = b(l)
NEXT l
 
PRINT
FOR i = 1 TO n
   FOR j = 1 TO n
      PRINT USING "####"; a(i, j);
   NEXT j
   PRINT
NEXT i
END
Добавлено через 22 часа 57 минут
еще более сложная программа, все элементы матрицы
смещаются сверху вниз "змейкой", а конец идёт на верх.
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
54
55
56
57
DEFINT A-B, I-N
OPTION BASE 1
CLS
INPUT "N = ?"; n
INPUT "STEP="; k
DIM a(n, n)
DIM b(n * n)
 
FOR i = 1 TO n
   FOR j = 1 TO n
      IF i MOD 2 = 1 THEN
         a(i, j) = n * (i - 1) + j
         PRINT USING "####"; a(i, j);
      ELSE
         a(i, j) = n * i - (j - 1)
         PRINT USING "####"; a(i, j);
      END IF
   NEXT j
   PRINT
NEXT i
 
FOR i = 1 TO n
   FOR j = 1 TO n
      IF i MOD 2 = 1 THEN
         b(n * (i - 1) + j) = a(i, j)
      ELSE
         b(n * (i - 1) + j) = a(i, n - (j - 1))
      END IF
   NEXT j
NEXT i
 
FOR j = 1 TO k
   FOR i = n * n TO 2 STEP -1
      SWAP b(i), b(i - 1)
   NEXT i
NEXT j
 
FOR l = 1 TO n * n
   i = (l - 1) \ n + 1
   j = (l - 1) MOD n + 1
   a(i, j) = b(l)
NEXT l
 
FOR i = 2 TO n STEP 2
   FOR j = 1 TO n \ 2
      SWAP a(i, j), a(i, n - (j - 1))
   NEXT j
NEXT i
 
PRINT
FOR i = 1 TO n
   FOR j = 1 TO n
      PRINT USING "####"; a(i, j);
   NEXT j
   PRINT
NEXT i
END
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2014, 07:42
Помогаю со студенческими работами здесь

Сделать Button неактивным до тех-пор пока . . .
Как можно сделать неактивным Button, пока хотя-бы 1 символ не введен в Edit ? Заранее спасибо за ответ !

Скрытие доступа к папкам до тех пор пока
Всем привет! Столкнулся с такой ситуацией: на свой сайт добавляю много лендингов, то есть выглядит как то так http://site.com/land1/ и...

Заполнять массив до тех пор пока не ввели k
Заполнять массив до тех пор пока не ввели k. После чего вывести элементы массива до введения k. Помогите пожалуйста!

Просматривать массив до тех пор, пока не встретится 0
Дан массив случайных чисел. Просматривать массив до тех пор, пока не встретится 0, и все четные числа записывать во второй массив. Если в...

Суммировать числа до тех пор, пока не останется 1 число
Почему не работает, и не говорите что 12 строчка. Pascal пишет что там ошибка но ; я поставил program p1; var st,st1:string; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru