Sub ()Dim A(1 To 4, 1 To 4) As IntegerDim B(1 To 3, 1 To 3) As IntegerRandomizeFor i = 1 To 4 For j = 1 To 4 A(i, j) = Int((10 * Rnd) + 1) Cells(i, j) = A(i, j) Next jNext iFor i = 1 To 3 For j = 1 To 3 B(i, j) = Int((10 * Rnd) + 1) Cells(i + 5, j) = B(i, j) Next jNext iCall ObrabotkaA(A)Call ObrabotkaB(B)Call Result(A, B)End SubSub ObrabotkaA(A)CollumnMax = 0CollumnMin = 0SummMax = 0SummMin = 999For j = 1 To 4Summ = 0 For i = 1 To 4 Summ = Summ + A(i, j) Next i If Summ > SummMax Then SummMax = Summ CollumnMax = j End If If Summ < SummMin Then SummMin = Summ CollumnMin = j End IfNext jFor i = 1 To 4 Temp = A(i, CollumnMax) A(i, CollumnMax) = A(i, CollumnMin) A(i, CollumnMin) = TempNext iEnd SubSub ObrabotkaB(B)CollumnMax = 0CollumnMin = 0SummMax = 0SummMin = 999For j = 1 To 3Summ = 0 For i = 1 To 3 Summ = Summ + B(i, j) Next i If Summ > SummMax Then SummMax = Summ CollumnMax = j End If If Summ < SummMin Then SummMin = Summ CollumnMin = j End IfNext jFor i = 1 To 3 Temp = B(i, CollumnMax) B(i, CollumnMax) = B(i, CollumnMin) B(i, CollumnMin) = TempNext iEnd SubSub Result(A, B)For i = 1 To 4 For j = 1 To 4 Cells(i, j + 5) = A(i, j) Next jNext iFor i = 1 To 3 For j = 1 To 3 Cells(i + 5, j + 5) = B(i, j) Next jNext iEnd Sub
Прикладываю исходник и скрин в приложении к ответу.
Несколько замечаний:
1. Большое количество комментариев внесено в код исключительно в учебных целях. В реальную программу переносить не рекомендуется - признак нехорошего тона.
2. У вас допущены синтаксические ошибки в двух последних циклах, а точнее - в операторах If, в которых стоит три условия (объединённых and), но нет ключевого слова "then" и последующих инструкций. Исправил.
3. Так же, автор вашей программы построил на мой взгляд нелогичную структуру алгоритма. Переменные min, min2 и min3, как я догадался, должны хранить три минимальных значения массива. А вот что происходит в вашей конструкции: первый цикл безошибочно находит наименьший элемент и записывает его в min, а последующие два цикла записывают в min2 и min3 первые попавшиеся(начиная с первого) элементы, если они больше min. Таким образом, нет никакой закономерности в том, что попадёт в эти переменные и сложно представить, для какой задачи потребовались бы такие случайности.
Одним из вариантов решения предлагаю изначально записывать в эти три переменные не значение первого элемента массива, а какое-то большое число, которое в массиве нам не встретится (например 100). Тогда цикл будет искать значения меньше 100 и перезаписывать им соответствующую переменную, пока не найдёт самое маленькое значение. В таком случае не очень стабильная переменная j нам так же не нужна, я её вычеркнул.
Вам отсылаю уже с учётом поправок, однако если вам требовалась именно первоначальная версия несмотря на её минусы, просто поправьте синтаксис в последних циклах (41 и 34 строчка на скрине) и пользуйтесь ей.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку