Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2011, 10:53   #1
dreik92
Новичок
Джуниор
 
Регистрация: 13.04.2011
Сообщений: 3
Восклицание Замена максимального элемента минимальным и наоборот в динамическом двумерном массиве

Замена максимального элемента минимальным и наоборот в динамическом двумерном массиве размера N x N... Помогите пожалуйста, буду очень благодарен)) По возможности это ещё реализовать для Excel и Word...
Вот то, что пока сделал, части не хватает, а может есть и неправильные моменты, помогите, кто может, срочно!! Спросил у друга по алгоритму, он порекомендовал запомнить индексы минимума и максимума, а потом через дополнительную переменную поменять их местами(френд в VBA самом не шарит)..



Public Function Zamena(A) As Variant
Dim I As Integer, J As Integer 'объявление пременных, необходимых для индексации элкментов матрицы В
Dim B() As Double 'объявления выходной матрицы
Dim Min As Double 'объявление переменной, необходимой для определения минимального элемента матрицы А
Dim Max As Double 'объявление переменной, необходимой для определения максимального элемента матрицы В
Dim p As Double
Dim l As Double
ReDim B(1 To A.Rows.Count, 1 To A.Columns.Count) 'определение размерности выходной матрицы
Min = A(1, 1) 'присваивание первому элементу матрицы А минимального значения
For I = 1 To A.Rows.Count
For J = 1 To A.Columns.Count
If A(I, J) < Min Then Min = A(I, J) 'поиск минимального элемента матрицы А
Next J
Next I
Max = A(1, 1)
For I = 1 To A.Rows.Count
For J = 1 To A.Columns.Count
If A(I, J) > Max Then Max = A(I, J) 'поиск максимального элемента матрицы А
Next J
Next I
For I = 1 To A.Rows.Count
For J = 1 To A.Columns.Count

Next J
Next I
Zamena = B 'вывод матрицы
End Function


Заранее благодарен вам...
dreik92 вне форума Ответить с цитированием
Старый 13.04.2011, 11:18   #2
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

если нужно поменять все минимумы на максимумы и наоборот то последний цикл можно записать так:
Код:
For I = 1 To A.Rows.Count
    For J = 1 To A.Columns.Count
        Select Case A(I, J)
            Case Min: B(I, J) = Max
            Case Max: B(I, J) = Min
            Case Else: B(I, J) = A(I, J)
        End Select
Next J, I
MCH вне форума Ответить с цитированием
Старый 13.04.2011, 12:04   #3
dreik92
Новичок
Джуниор
 
Регистрация: 13.04.2011
Сообщений: 3
По умолчанию

Пипец, спасибо тебе большое чувак, я уже 2 недели не мог сделать это задание, а ты мне так помог...

А и ещё, можешь помочь этот код для Word'a интерпретировать?

Последний раз редактировалось dreik92; 13.04.2011 в 12:16.
dreik92 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3. Вывести номер строки наименьшего элемента в двумерном массиве zebatic Помощь студентам 1 11.06.2010 00:14
Поиск минимального и максимального элемента в двухмерном массиве. Dem6 Общие вопросы Delphi 10 30.11.2009 20:22
Поиск максимального отрицательного элемента в массиве Tomoa Microsoft Office Excel 6 27.11.2009 15:10
Поиск максимального элемента в массиве Alexus999 Помощь студентам 8 08.06.2009 19:47
Написать подпрограмму-процедуру поиска максимального элемента в массиве Noxil Паскаль, Turbo Pascal, PascalABC.NET 3 27.11.2008 21:39