0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 9
1

Для каждого столбца матрицы найти наименьший элемент

06.09.2012, 12:20. Показов 6311. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В соответствии с вариантом задания составить программу в редакторе VB MS Excel, с помощью которой осуществляется:
ввод элементов матрицы размерности (3x4), осуществляемый с помощью генератора случайных чисел (значения элементов матрицы должны быть вещественными числами, не превышающими по абсолютной величине 5), и их вывод в ячейки рабочего листа (с точностью до 2 знаков после запятой);

Для каждого столбца матрицы найти наименьший элемент, а также количество неотри-цательных элементов всей матрицы.

Пожалуйста помогите!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2012, 12:20
Ответы с готовыми решениями:

Для каждого столбца квадратной матрицы определить минимальный элемент
Для каждого столбца квадратной матрицы определить минимальный элемент.

Найти наименьший элемент матрицы. Указать его номер строки и столбца и заменить его значением -9999
дана матрица -0.25 11 4.5 5 0 21.4 1 6.3 14.8 2 3.5 -2 11 2.36 0.48 4.13 1)задание ,...

Найти наибольший и наименьший элемент каждого столбца матрицы и вывести
Необходимо найти наибольший и наименьший элемент каждого столбца и вывести. Дополнительно...

Для каждого столбца массива найти наименьший элемент
Дан массив X(N,M). Для каждого столбца массива найти наименьший элемент. Из полученных значений...

9
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
06.09.2012, 13:46 2
Перед запуском кода откройте чистый лист Excel.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Sub Procedure_1()
 
    'Создание матрицы. Матрица - это одна или несколько переменных,
    'имеющих одинаковое имя. Чтобы проще писать код, мысленно
    'матрицу можно сравнить с обычной таблицей, которая состоит из строк и столбцов.
    
    '1 To - используется, чтобы порядковый номер первого элемента матрицы
    'был один. По умолчанию порядковый номер первого элемента матрицы ноль,
    'что неудобно для написания кода.
    
    'Матрица, состоящая из 3-х строк и 4-х столбцов.
    
    'Double - означает, что в матрице могут быть только числа, при чём целые и дробные
    '(есть ещё текст).
    Dim Матрица(1 To 3, 1 To 4) As Double
 
    'Создаём различные переменные, которые понадобятся для выполнения задания.
    
    'Long - означает, что в переменной может быть только целое число
    '(есть ещё дробные числа).
    Dim i As Long, j As Long
    Dim СлЧисло As Double
    Dim min As Double
    Dim Счётчик As Long
    
    'For ... To ... Step ... Next - называется циклом и используется
    'для выполнения одного и того же действия заданное количество раз.
    
    'Заполняем матрицу вещественными числами.
    For i = 1 To 3 Step 1
        For j = 1 To 4 Step 1
            'Генерируем числа от -5 и меньше 5.
            
            'Пояснение:
            '(5 - (-5)) даёт 10.
            'Rnd генерирует число от 0 до 0,9.
            'В итоге будет получаться число от 0 (10*0) до 9 (10*0,9).
            'Будет получаться число: 9; 9,1; 9,2 и до 9,9. Числа 10 не будет получено.
            'Затем от полученого числа будет отниматься число 5.
            'В итоге будет получаться заданный диапазон чисел.
            
            СлЧисло = (5 - (-5)) * Rnd + (-5)
            
            'Откругляем число до двух знаков после запятой.
            'Скорее всего вам надо будет использовать другое средство
            'для округления, но я воспользуюсь этим.
            Матрица(i, j) = Format(СлЧисло, "0.00")
        Next j
    Next i
    
    'Для наглядности выводим полученную матрицу в Excel на активный лист.
    For i = 1 To 3 Step 1
        For j = 1 To 4 Step 1
            Cells(i, j).Value = Матрица(i, j)
        Next j
    Next i
    
 
'------------------------------------------------------------------------------------------------
    'Поиск наименьших элементов в каждом столбце.
    For i = 1 To 4 Step 1
        'Сначала за минимальный элемент берём самый первый элемент в столбце.
        'А затем остальные сравниваем с ним.
        min = Матрица(1, i)
        For j = 2 To 3 Step 1
            'If ... Then ... End If - используется для выбора действия.
        
            'Если текущий элемент в столбце меньше числа в переменной min,
            'то в переменную min помещаем это число.
            If Матрица(j, i) < min Then
                min = Матрица(j, i)
            End If
        Next j
        'Выводим результат по текущему столбцу в Excel.
        Cells(5, i).Value = min
    Next i
    
 
'------------------------------------------------------------------------------------------------
    'Поиск неотрицательных элементов в матрице.
    'Неотрицательные элементы - это нули и положительные числа.
    For i = 1 To 3 Step 1
        For j = 1 To 4 Step 1
            If Матрица(i, j) >= 0 Then
                Счётчик = Счётчик + 1
            End If
        Next j
    Next i
 
    'С помощью MsgBox выводим сообщение, в котором укажем результат.
    'Символ "&" используется для соединения нескольких фрагментов в одну строку.
    MsgBox "Неотрицательных элементов: " & Счётчик
    
End Sub
1
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 9
06.09.2012, 13:54  [ТС] 3
Busine2012, Огромное спасибо! Всё понятно
0
761 / 268 / 57
Регистрация: 13.12.2009
Сообщений: 1,073
06.09.2012, 14:57 4
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
Private Sub CommandButton1_Click()
Dim s As Single, min(4) As Single, r As Integer
Cells.Clear
 
For j = 1 To 4
min(j) = 10
For i = 1 To 3
 
s = Rnd * 10 - 5
Cells(i + 1, j + 1) = Round(s, 2)
If min(j) > s Then
min(j) = s
End If
If s >= 0 Then
r = r + 1
End If
Next
Cells(i + 4, j + 1) = Round(min(j), 2)
Next
Cells(i + 3, 1) = "Наименьший элемент в столбце"
Cells(i + 3, j + 3) = "Количество неотрицательных элементов"
Cells(i + 4, j + 3) = r
End Sub
Такой вариант ?
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
06.09.2012, 15:19 5
all_angarsk, нужно учитывать, что функция Round округляет по бухгалтерскому правилу.
0
761 / 268 / 57
Регистрация: 13.12.2009
Сообщений: 1,073
06.09.2012, 17:47 6
Замечание о Round справедливо, а format наверно не округляет?
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
06.09.2012, 17:48 7
all_angarsk, функция Format округляет по математическим принципам.

Примечание: функция Round появилась недавно (в MS Office 1997 года ещё не было её) и раньше округляли какими-то сложными математическими действиями, а функцию Format почему-то не применяли (в MS Office 1997 года функция Format есть).
0
761 / 268 / 57
Регистрация: 13.12.2009
Сообщений: 1,073
06.09.2012, 17:52 8
понятно
0
6170 / 935 / 309
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
06.09.2012, 23:38 9
Цитата Сообщение от Busine2012 Посмотреть сообщение
нужно учитывать, что функция Round округляет по бухгалтерскому правилу.
Думаю, что в данной ситуации это не имеет значения, т.к Round(...,2) будет показывать разницу в округлении только если округляемое число имеет три знака после запятой, и при этом последний знак равен 5, и то только в половине случаях

Проверил кодом, на 1 млн ни одного различия:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub www()
    Dim i&, cnt&, rand#
    Randomize
    For i = 1 To 1000000
        rand = Rnd
        If Round(rand * 10 - 5, 2) <> CDbl(Format(rand * 10 - 5, "0.00")) Then cnt = cnt + 1
    Next i
    Debug.Print cnt
End Sub
а вот с предложенной генерацией в виде Round(Rnd * 10 - 5, 2) или Format(Rnd * 10 - 5, "0.00") есть другой подвох, вероятность генерации крайних точек (-5 и 5) вдвое ниже чем остальных

поэтому я бы рекомендовал генерацию сделать следующим образом:
Int(Rnd * 1001 - 500) / 100
в данном случае вероятность получения всех значений одинакова

Добавлено через 6 минут
PS: проверил код на 10 млн - 2 различия

Добавлено через 20 минут
генерируем и сразу считаем:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub www()
    Dim i&, j&, arr#(1 To 3, 1 To 4), minArr(1 To 1, 1 To 4), cnt&
    Randomize
    For j = 1 To 4
        For i = 1 To 3
            arr(i, j) = Int(Rnd * 1001 - 500) / 100
            If i = 1 Or minArr(1, j) > arr(i, j) Then minArr(1, j) = arr(i, j)
            If arr(i, j) >= 0 Then cnt = cnt + 1
    Next i, j
    Cells(1, 1).Resize(3, 4) = arr
    Cells(4, 1) = "Наименьший элемент в столбце:"
    Cells(5, 1).Resize(1, 4) = minArr
    Cells(6, 1) = "Кол-во неотрицательных элементов:"
    Cells(7, 1) = cnt
End Sub
2
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
07.09.2012, 06:38 10
Алгоритм генерирования случайных вещественных чисел в заданном диапазоне.
Пример генерирования случайных вещественных чисел для диапазона от -5 до 5 с двумя знаками после запятой:
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
Sub Procedure_1()
 
    Dim СлЧисло As Double
    Dim min As Double, max As Double
    Dim КолЗнаков As Long
    
    'Указываем данные, которые нужно получить.
    min = -5
    max = 5
    КолЗнаков = 2
    
    'Преобразуем данные.
    min = min * 10 ^ КолЗнаков
    max = max * 10 ^ КолЗнаков
    
    'Получение случайного числа.
    'Формулу генерации случайных целых чисел в заданном диапазоне можно посмотреть
    'в справке. Для этого нужно поставить курсор на Rnd и нажать клавишу F1.
    СлЧисло = (max - min + 1) * Rnd + min
    
    'Отбрасывание дробной части.
    СлЧисло = Int(СлЧисло)
    
    'Установка нужного количества знаков после запятой.
    СлЧисло = СлЧисло / 10 ^ КолЗнаков
 
End Sub
Примечание: под вещественными числами понимаются дробные числа (есть ещё целые числа).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2012, 06:38
Помогаю со студенческими работами здесь

Найти для каждого столбца матрицы число элементов, кратных пяти, и наименьший из полученных результатов
Прошу помогите! C Для целочисленной матрицы найти для каждого столбца число элементов, кратных...

Дана квадратная матрица порядка Т. Для каждого столбца найти наименьший элемент. Вывести произведение найденных элементов
Пожалуйста.

Дана квадратная матрица порядка Т. Для каждого столбца найти наименьший элемент. Вывести произведение найденных элементов
Дана квадратная матрица порядка Т. Для каждого столбца найти наименьший элемент. Вывести...

Найти наименьший элемент каждого столбца
Обработать матрицу, элементами которой являются случайные значения функции F(X). Вывести на экран...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru