Найти в обоих массивах по наибольшему элементу и если они различны, то поменять их местами - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы