Массив: Произвести между матрицами обмен числами так, чтобы max первой матрицы не превышало min второй - QBasic

Узнай цену своей работы

Формулировка задачи:

Условие Даны две квадратные матрицы А() и В() размером 5×5 Он заполнены случайными числами Требуется произвести между матрицами обмен числами так, чтобы максимальное число первой матрицы не превышало минимального числа второй матрицы. Решение Вариант 1 Можно ввести еще один линейный массив и сбросить на него все элементы обоих матриц. Отсортировать этот массив и просто поделить его элементы между двумя матрицами. Примечание Не подходит из-за сортировки. Сортировки нет в условии. Вариант 2 Надо найти средний элемент. То есть такой, где число элементов больших данного было бы равно числу элементов меньших данного Вопрос. Но как найти такой элемент? Вариант 3 Тотальное сравнение элементов обоих матриц и обмен этими элементами Вопрос. Сколько должно быть сравнений? Где гарантия, что задача будет решена? Задача пока не решена. Ищется подходящий алгоритм Кто может что-нибудь подсказать?

Решение задачи: «Массив: Произвести между матрицами обмен числами так, чтобы max первой матрицы не превышало min второй»

textual
Листинг программы
  1. DECLARE SUB RAND ()
  2. DECLARE SUB minn (x!(), min!, im!, jm!)
  3. DECLARE SUB maxx (x!(), max!, im!, jm!)
  4. CLS
  5. RAND
  6. DIM SHARED n
  7.  
  8. n = 5
  9. DIM A(n, n)
  10. DIM B(n, n)
  11.  
  12. FOR i = 1 TO n
  13. FOR j = 1 TO n
  14.    A(i, j) = FIX(40 * RND) - 20
  15.    LOCATE i, 5 * j - 2
  16.    PRINT A(i, j);
  17. NEXT j, i
  18.  
  19. FOR i = 1 TO n
  20. FOR j = 1 TO n
  21.    B(i, j) = FIX(40 * RND) - 20
  22.    LOCATE i, 5 * j + 30
  23.    PRINT B(i, j);
  24. NEXT j, i
  25. PRINT : PRINT
  26.  
  27. FOR k = 1 TO n * n
  28.    CALL maxx(A(), max, i1, j1)
  29.    CALL minn(B(), min, i2, j2)
  30.    SWAP A(i1, j1), B(i2, j2)
  31. NEXT
  32.  
  33. FOR i = 1 TO n
  34. FOR j = 1 TO n
  35.    LOCATE i + 6, 5 * j - 2
  36.    PRINT A(i, j);
  37. NEXT j, i
  38.  
  39. FOR i = 1 TO n
  40. FOR j = 1 TO n
  41.    LOCATE i + 6, 5 * j + 30
  42.    PRINT B(i, j);
  43. NEXT j, i
  44. END
  45.  
  46. SUB maxx (x(), max, im, jm)
  47.    max = x(1, 1)
  48.    im = 1
  49.    jm = 1
  50.  
  51.    FOR i = 1 TO n
  52.    FOR j = 1 TO n
  53.       IF max < x(i, j) THEN
  54.          max = x(i, j)
  55.          im = i
  56.          jm = j
  57.       END IF
  58.    NEXT j, i
  59. END SUB
  60.  
  61. SUB minn (x(), min, im, jm)
  62.    mix = x(1, 1)
  63.    im = 1
  64.    jm = 1
  65.  
  66.    FOR i = 1 TO n
  67.    FOR j = 1 TO n
  68.       IF mix > x(i, j) THEN
  69.          mix = x(i, j)
  70.          im = i
  71.          jm = j
  72.       END IF
  73.    NEXT j, i
  74. END SUB
  75.  
  76. SUB RAND
  77.    RANDOMIZE TIMER
  78. END SUB

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


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

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

10   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы