Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами - 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
- IF max1 <> max2 THEN SWAP A(im1, jm1), Y(im2, jm2)
- END
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д