Массив: Произвести между матрицами обмен числами так, чтобы max первой матрицы не превышало min второй09.08.2016, 09:15. Показов 1090. Ответов 4
Метки нет (Все метки)
Условие
Даны две квадратные матрицы А() и В() размером 5×5 Он заполнены случайными числами Требуется произвести между матрицами обмен числами так, чтобы максимальное число первой матрицы не превышало минимального числа второй матрицы. Решение Вариант 1 Можно ввести еще один линейный массив и сбросить на него все элементы обоих матриц. Отсортировать этот массив и просто поделить его элементы между двумя матрицами. Примечание Не подходит из-за сортировки. Сортировки нет в условии. Вариант 2 Надо найти средний элемент. То есть такой, где число элементов больших данного было бы равно числу элементов меньших данного Вопрос. Но как найти такой элемент? Вариант 3 Тотальное сравнение элементов обоих матриц и обмен этими элементами Вопрос. Сколько должно быть сравнений? Где гарантия, что задача будет решена? Задача пока не решена. Ищется подходящий алгоритм Кто может что-нибудь подсказать?
0
|
|
| 09.08.2016, 09:15 | |
|
Ответы с готовыми решениями:
4
Массив: Получить новую матрицу следующим способом: умножением Min каждой строки первой матрицы на Max соответствующего столбца второй
Упорядочить массив по убыванию элементов второй строки и напечатать max и min элементы матрицы |
| 09.08.2016, 16:03 | ||||||
Сообщение было отмечено echs как решение
Решение
Алгоритм по 3му варианту:
Находим максимальное число в первой матрице, находим минимальное число во второй матрице, запоминаем их индексы. Если max1 >min2, то меняем числа. Повторять до тех пор, пока max1>min2 Т.к. матрицы небольшого размера, то и сравнений будет немного. Максимально возможное кол-во сравнений 5*5*2*25 = 1250 По второму варианту: Находим медиану двух массивов, в зависимости от чисел используем сортировку или если используются целые числа вспомогательный массив. Далее используем медиану для обмена между массивами. Сложность может возникнуть с ситуацией, когда несколько чисел равны медиане, то нужно правильно составить алгоритм разделения чисел между матрицами. Если используется пузырьковая сортировка для поиска медианы, то это уже 50*49/2 = 1225 итераций, плюс доп. алгоритм по обмену числами. Если используются целые числа (например от 1 до 100), то количество итераций при поиске медианы может быть существенно меньше. Скорее всего, задачу нужно решить так, чтобы было как можно меньше обменов чисел между матрицами, поэтому вариант 1 не подходит. Самый простой вариант - 3й, через поиск мин и макс элементы матриц. Добавлено через 8 минут пример (писал на vba, но должен работать в QBasic) Вывод массивов сделайте самостоятельно
0
|
||||||
| 09.08.2016, 17:26 [ТС] | ||||||
|
m-ch
Вы правы. Ваше предложение самое наилучшее Назовем его Вариант 4. Ибо в третьем варианте я планировал просто обмен значениями без поиска минимальных и максимальных значений. Отсюда и возникала неопределенность. Добавлено через 1 час 8 минут Вариант программы, решающей эту задачу
0
|
||||||
| 10.08.2016, 07:21 | |
Сообщение было отмечено echs как решение
Решение
geh, чем не устроил мой код?
в Вашем коде в строке 27 цикл по обмену выполняется 25 раз Но возможно и не нужно столько раз выполнять обмены, это может привести к ситуации, когда будет произведен не нужный обмен и максимальный элемент первой матрицы будет больше минимального элемента второй матрицы. Проверка Вашего кода показывает, что может получится не правильная работа макроса. Просто протестируйте, первую матрицу заполните единицами, вторую двойками и посмотрите результат. Другие вопросы: Зачем randomize выводить в отдельную процедуру? Почему массивы начинаются с нулевого элемента, а не с первого? Почему используете вещественные переменные, а не целые?
1
|
|
| 10.08.2016, 07:47 [ТС] | |
|
m-ch
У Вас классный код! Много лучше моего! Но. 1. Я предпочитаю вводить в программу процедуры. Мне так больше нравится. Процедура RAND - это конечно перегиб. 2. Теперь серьезно Вы указали на мою большую ошибку. При обмене элементами я не поставил условие проверки, надеясь на то, что максимум будет больше минимума. А этого, КАК ВЫ ВЕРНО ПОДМЕТИЛИ, может и не быть! 3. Вещественные числа? Ну это для программы особой роли не играет 4. Определение матрицы с нуля? Я это просмотрел. А потом матрицы маленькие. Тут на них не сэкономишь. Но вы все-равно правы. Я Вам очень благодарен за Ваш интерес к этой теме. Спасибо!
0
|
|
| 10.08.2016, 07:47 | |
|
Помогаю со студенческими работами здесь
5
Массив заполнить случайными числами и вывести max и min. Выводится только max
Переписать простые числа из матрицы A в массив B, из массива удалить числа между max и min элементами Найти max и min, если min левее max, то среднее арифметическое между ними Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|