Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами - QBasic
Формулировка задачи:
Задан двумерный массив А целых чисел из М строк и К столбцов. Составить новый двумерный массив У из тех строк массива А, которые не упорядочены по возрастанию. Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами.
Решение задачи: «Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами»
textual
Листинг программы
CLS
RANDOMIZE TIMER
m = 6
k = 8
DIM A(1 TO m, 1 TO k) AS INTEGER
DIM B(1 TO m) AS INTEGER
FOR i = 1 TO m
FOR j = 1 TO k
A(i, j) = 80 * RND - 40
NEXT j, i
FOR i = 1 TO k
A(1, i) = 5 * i - 1
A(3, i) = 3 * i + 1
A(6, i) = 4 * i - 3
NEXT i
FOR i = 1 TO m
FOR j = 1 TO k
PRINT USING "####"; A(i, j);
NEXT j: PRINT
NEXT i: PRINT
FOR i = 1 TO m
FOR j = 1 TO k - 1
FOR j2 = j + 1 TO k
IF A(i, j) > A(i, j2) THEN B(i) = 1
NEXT j2, j, i
m2 = 0
FOR i = 1 TO m
m2 = m2 + B(i)
NEXT i
DIM Y(1 TO m2, 1 TO k) AS INTEGER
i = 1
i2 = 1
DO
IF B(i) = 1 THEN
FOR j = 1 TO k
Y(i2, j) = A(i, j)
NEXT j
i2 = i2 + 1
END IF
i = i + 1
LOOP UNTIL i > m
FOR i = 1 TO m2
FOR j = 1 TO k
PRINT USING "####"; Y(i, j);
NEXT j: PRINT
NEXT i: PRINT
max1 = A(1, 1)
max2 = Y(1, 1)
im1 = 1
jm1 = 1
im2 = 1
jm2 = 1
FOR i = 1 TO m
FOR j = 1 TO k
IF max1 < A(i, j) THEN
max1 = A(i, j)
im1 = i
jm1 = j
END IF
NEXT j, i
FOR i = 1 TO m2
FOR j = 1 TO k
IF max2 < Y(i, j) THEN
max2 = Y(i, j)
im2 = i
jm2 = j
END IF
NEXT j, i
PRINT "MAX A("; im1; jm1; ") ="; max1
PRINT "MAX Y("; im2; jm2; ") ="; max2
PRINT
IF max1 <> max2 THEN SWAP A(im1, jm1), Y(im2, jm2)
END