Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д