Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 02.06.2011
Сообщений: 22

Макс и мин значения диагоналей матрицы. Вистраивание значений строк в порядке возростания

07.06.2011, 00:16. Показов 2634. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти максимальное и минимальное значения главной и побочной диагоналей и сравнить их.
Найти среднее значение по строкам и разместить их в порядке возростания.

Добавлено через 36 минут
Помогите пожалуйста...

Добавлено через 17 минут
HELP...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2011, 00:16
Ответы с готовыми решениями:

Дописать к программе нахождение среднего арифметического значения и вывода мин и макс значений
добрый день, решал задачу на подобную тему и возникли трудности с нахождением здесь среднего арифметического значения и вывода мин и макс...

В массиве переставить вперед положительные и равные нулю елементы в порядке убивания их значения, а затем отрицательные в порядке возростания.
массив M состоящий из 30 елементов, переоформить так, чтобы вначале стояли все положительные и равные нулю елементы в порядке убивания их...

Сортировка значений трех переменых а,б,с в порядке возростания
Составить програму из з использованиэм функции, сортировки значений трех переменых а,б,с в порядке возростания

10
2 / 2 / 1
Регистрация: 07.06.2011
Сообщений: 95
07.06.2011, 09:37
Public Sub SortirovkaSub()
Dim val As String 'для временного хранения значения масива
Dim val_i, j, i, x As Integer 'где i и x начало (мин значение индекса массива),j конец

For x = 0 To j - 1 ' цикл для сортировки массива
val = Mas(x) ' первый элемент помещаем в переменную
val_i = x 'индекс массива
For i = x + 1 To j 'цикл начинаем со второго значения, иби его надо сравнивать с первым
'ищем мин или мах (в зависимости от знака не равенства) в строчке массива
If Mas(i) < val Then
val = FioMas(i) 'если условие выполнено то заменяем значение val
val_i = i 'запоминаем индекс мин (мах) значения
End If
Next

Mas(val_i) = Mas(x) ' из 1-е значение массива переносим туда где нашли мин (мах)
Mas(x) = val ' а мин (мах) в первое, т.е. сортируем,
'под первым значением имеется в виду элемент массива с которого начинается перебор значений
Next
End Sub
по диагонали вместо одномерного массива используем двумерный, mas (i,i) поиск как в примере только одновременно меняется еще и строка
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
07.06.2011, 09:52
ara_gorn,
выложите рабочий код, чтобы можно было его протестировать. И какой способ сортировки вы используете?
Цитата Сообщение от Muzhick Посмотреть сообщение
и разместить их в порядке возростания.
кого разместить в порядке возрастания?
0
0 / 0 / 0
Регистрация: 02.06.2011
Сообщений: 22
07.06.2011, 10:15  [ТС]
У меня нету робочего кода...есть только задание, я его написал выше...
Попробую сформулировать его немножко по другому...
1)Значит матрица нам не дана, тоесть нам нужно самим её создать. Далее находим макс и мин значения её диагоналей и сравниваем их между собой (ну чтото вродь как в какой диагонали значение будет большим, а вкакой меньшим).
2)Для каждой строки находим среднее значение (наверное ити значения можно записать в одномерний масив)
3)Создаем из первой матрицы вторую так, чтобы в рядках числа были выстроины в порядкевозростания, а не хаотично, как в первой нашей матрице.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
07.06.2011, 11:38
ara_gorn,
что с кодом (где рабочий код)?

Muzhick,
по первому заданию:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Sub P1()
Dim Массив(1 To 5, 1 To 5) As Integer
Dim i As Integer, j As Integer
Dim minГл As Integer, maxГл As Integer
Dim minПоб As Integer, maxПоб As Integer
Cells.Clear
Randomize
For i = 1 To 5 Step 1
    For j = 1 To 5 Step 1
        Массив(i, j) = Int((100 - (-100) + 1) * Rnd + (-100))
        Cells(i, j).Value = Массив(i, j)
    Next j
Next i
minГл = Массив(1, 1)
maxГл = Массив(1, 1)
For i = 2 To UBound(Массив, 1) Step 1
    If Массив(i, i) < minГл Then
        minГл = Массив(i, i)
    ElseIf Массив(i, i) > maxГл Then
        maxГл = Массив(i, i)
    End If
Next i
minПоб = Массив(1, UBound(Массив, 2))
maxПоб = Массив(1, UBound(Массив, 2))
j = UBound(Массив, 2) - 1
For i = 2 To UBound(Массив, 1) Step 1
    If Массив(i, j) < minПоб Then
        minПоб = Массив(i, j)
    ElseIf Массив(i, j) > maxПоб Then
        maxПоб = Массив(i, j)
    End If
    j = j - 1
Next i
If minГл > minПоб Then
    MsgBox "Минимальное значение главной диагонали больше минимального значения побочной диагонали"
Else
    MsgBox "Минимальное значение главной диагонали меньше минимального значения побочной диагонали"
End If
If maxГл > maxПоб Then
    MsgBox "Максимальное значение главной диагонали больше максимального значения побочной диагонали"
Else
    MsgBox "Минимальное значение главной диагонали меньше максимального значения побочной диагонали"
End If
End Sub
0
2 / 2 / 1
Регистрация: 07.06.2011
Сообщений: 95
07.06.2011, 11:55
Busine2009
я уже написал вполне рабочий код выше, сортировка одномерного массива у меня работает или нужно еще написать код создания масива двухмерного и выуживания из него диагонали в одномерный??
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
07.06.2011, 11:57
ara_gorn,
ну чтобы ваш код можно было скопировать в VBA и, нажимая клавишу F8, смотреть, что и как.

Ещё укажите способ сортировки, который вы используете (их несколько видов есть).
0
2 / 2 / 1
Регистрация: 07.06.2011
Сообщений: 95
07.06.2011, 12:17
вот так выглядит у меня, без исправлений (код указанный в сообщении до этого тоже рабочий, копируй и вставляй, перед всеми коментами есть знак ' )

это вставляем на форму или исче куда
Private Sub CommandButton1_Click()

Call SortirovkaSub
End Sub

это в модуль
Public AdresMas(50), FioMas(50), Str As String
Public col_vo As Integer 'пенременные участвующие в циклах (счетчики)

Public Sub SortirovkaSub()
Dim val As String 'для временного хранения значения масива
Dim val_i, j, i, x As Integer
j = col_vo - 1 ' макс индекс масива = количество совершенных проходов при считывании файла минус один
For x = 0 To j - 1
val = FioMas(x)
val_i = x
For i = x + 1 To j
If FioMas(i) < val Then
val = FioMas(i)
val_i = i
End If
Next

FioMas(val_i) = FioMas(x)
FioMas(x) = val
val = AdresMas(val_i)
AdresMas(val_i) = AdresMas(x)
AdresMas(x) = val
Next
End Sub

на счет метода, не знаю, сам выдумывал, берешь первый элемент массива сравниваешь с последующими, самый маленький (большой) переносишь в первый элемент массива, первый переносишь на место самого маленького (большого), затем тоже самое, исключая первый элемент, и начиная сравнивать со второго
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
07.06.2011, 12:34
Вторая часть задания:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Option Explicit
Sub Main()
Dim Матрица(1 To 3, 1 To 5) As Integer
'Заполняем матрицу числами (ну чтобы было с чем работать)
'и для наглядности выводим в Excel.
Call P1(Матрица)
'Подпрограмма нахождения средних значений в строках матрицы.
'Средние значения будем выводить в Excel справа от матрицы.
Call P2(Матрица)
'Сортировка элементов методом Пузырёк в каждой строке матрицы по возрастанию.
'И вывод полученной матрицы в Excel снизу от первоначальной.
Call P3(Матрица)
End Sub
Sub P1(ByRef Матрица)
Dim i As Integer, j As Integer
Cells.Clear
For i = 1 To UBound(Матрица, 1) Step 1
    For j = 1 To UBound(Матрица, 2) Step 1
        Матрица(i, j) = Int((100 - (-100) + 1) * Rnd + (-100))
        Cells(i, j).Value = Матрица(i, j)
    Next j
Next i
End Sub
Sub P2(Матрица() As Integer)
Dim i As Integer, j As Integer
Dim Сумма As Integer
For i = 1 To UBound(Матрица, 1) Step 1
    For j = 1 To UBound(Матрица, 2) Step 1
        Сумма = Сумма + Матрица(i, j)
    Next j
    Cells(i, UBound(Матрица, 2) + 2).Value = Сумма / UBound(Матрица, 2)
    Сумма = 0
Next i
End Sub
Sub P3(ByRef Матрица)
Dim i As Integer, j As Integer, k As Integer
Dim Стол As Integer
For i = 1 To UBound(Матрица, 1) Step 1
    For j = 2 To UBound(Матрица, 2) Step 1
        For k = UBound(Матрица, 2) To j Step -1
            If Матрица(i, k) < Матрица(i, k - 1) Then
               Стол = Матрица(i, k)
               Матрица(i, k) = Матрица(i, k - 1)
               Матрица(i, k - 1) = Стол
            End If
        Next k
    Next j
Next i
For i = 1 To UBound(Матрица, 1) Step 1
    For j = 1 To UBound(Матрица, 2) Step 1
        Cells(i + UBound(Матрица, 1) + 2, j).Value = Матрица(i, j)
    Next j
Next i
End Sub


А это как понять?
Цитата Сообщение от ara_gorn Посмотреть сообщение
j = col_vo - 1
И массивы AdresMas(50), FioMas(50) не заполнены.
0
2 / 2 / 1
Регистрация: 07.06.2011
Сообщений: 95
07.06.2011, 13:11
а не как не понимать, у меня переменная col_vo содержит количество проходов цикла из другой процедуры, определяющая сколько элементов массива всего, т.е. например col_vo=5, значит всего элементов массиве 5, но при этом последний индекс массива будет равен 4, так как отсчет в VBA в массивах ведется с нуля
можно было бы написать так
j=0 'первый индекс массива
for i=1 to col_vo ' кол-во проходов равно col_vo
Mas(j) = "некое значение"
j = j +1
Next

насчет массивов
Public AdresMas(50), FioMas(50), Str As String
нету смысла делать динамический массив если нет в этом необходимости, у меня предпологается что значение массива будет не больше 50
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
07.06.2011, 13:29
ara_gorn,
желательно выкладывать рабочие и протестированные коды, чтобы не вводить в заблуждения. То, что вы выложили вообще полный бред.

Или указывать принципы выполнения кода: например, нужно использовать то-то, то-то, такие-то средства.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2011, 13:29
Помогаю со студенческими работами здесь

Упорядочить массив в порядке возростания АБСОЛЮТНЫХ значений
Написать функцию, упорядочивает элементы настоящего массива в порядке возрастания их абсолютных значений. Я хз, как это сделать, рил....

Вывод среднего арифметического и макс. и мин. значений
Всех приветствую! Выполняя лабораторную работу по PHP столкнулся с проблемой выведения среднего арифметического и вывода максимального и...

Rand(); рамки мин/макс значения
Не могу разобраться, в учебники да и на сайте идёт такой пример // автоматическая рандомизация srand(time(0)); // числа в...

Макс и мин значения в двумерном массиве.
Дан массив 10*15. Надо найти максимальное и минимальное значение каждого столбца и строки. Помогите,пожалуйста.Очень срочно!

Чтение из файла,поиск макс и мин значения
Помогите доделать программу, файл заполняется случайными числами от 1 до 100, кол-во указывает пользователь, это я сделал. Нужно так же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru