Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.01.2015
Сообщений: 5
1

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

18.01.2015, 17:34. Показов 1199. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти строку в матрице А(5,6), где больше всего положительных элементов и нарисовать блок-схему
Пожалуйста помогите
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2015, 17:34
Ответы с готовыми решениями:

Найти в матрице число, в двоичном представлении которого больше всего единиц
Условие. Размерности массивов вводить с клавиатуры. Исходные данные и результаты выводить на экран...

Найти каких элементов больше в массиве: отрицательных или положительных
Заданный массив В (n). Выяснить, каких элементов в этом массиве больше: отрицательных или...

Найти строку в матрице А(5,6), где больше всего положительных элементов
Найти строку в матрице А(5,6), где больше всего положительных элементов.

Найти в матрице строку в которой больше всего нулей
дан двумерный массив.найти в матрице строку в которой больше всего нулей!!!Надо написать только...

12
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
19.01.2015, 21:14 2
Почему у похожих тем судьба незавидная: Дана последовательность из М чисел. Подсчитать, сколько в ней отрицательных, положительных и нулевых элементов (и даже не из-за блок-схем, которые мало кто вообще любит)!

Возможно, помощью будет вот такой код: Найти каких элементов больше в массиве: отрицательных или положительных (Казанский).

Добавлено через 22 минуты
Что-то можно почерпнуть из темы Найти произведение всех отрицательных чисел над побочной диагональю (генерацию матрицы, например).
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
20.01.2015, 08:34 3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Despirion()
    Const n& = 5 'количество строк
    Const m& = 6 'количество столбцов
    Dim i&, j&, maxRow&, kPol&, maxPol&
    ReDim a&(1 To n, 1 To m)
    Randomize
    For i = 1 To n 'генерация матрицы
        For j = 1 To m
            a(i, j) = Int(Rnd * 21 - 10) 'генерируем элемент матрицы
            Cells(i, j) = a(i, j) 'выводим его на лист
    Next j, i
    For i = 1 To n 'нахождение строки
        kPol = 0
        For j = 1 To m
            If a(i, j) > 0 Then kPol = kPol + 1
        Next j
        If kPol > maxPol Or i = 1 Then maxRow = i: maxPol = kPol
    Next i
    MsgBox "Больше всего положительных элементов в строке " & maxRow & " - " & maxPol
End Sub
генерацию матрицы и подсчет можно объединить в один цикл
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
20.01.2015, 18:49 4
Catstail и SoftIce небось рукоплещут, а Sasha_Smirnov против:
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
упущен случай нескольких максимумов
Как в теме Дан массив действительных чисел. Поменять местами наибольший и наименьший элементы заданного массива и всех таких же.

Мы же тут не по параболе летим, но, найдя экстремум, срочно объявляем, что ответ найден.

Казус в том, что ответ действительно найден! Но "безупречная" формулировка такова:
Visual Basic
1
2
MsgBox "Больше всего положительных элементов " & " (" & maxPol & ") в строке " & maxRow & _
", а также в тех нижележащих строках, где тоже " & maxPol & " положительных элементов."
Как-то неубедительно, правда? Но правда.

Добавлено через 3 часа 33 минуты
Только смешно получится, если их там нет.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37331 / 20763 / 4275
Регистрация: 12.02.2012
Сообщений: 34,168
Записей в блоге: 14
20.01.2015, 20:24 5
Эта задача вызвала такой "резонанс", что я не смог пройти мимо:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Task(A() as integer)
Dim R() As integer
      n%=UBound(A,1)
      m%=UBound(A,2)
      Redim R(1 to n%) as integer
      For i%=1 to n%
           For j%=1 to m%
                If A(i%,j%)>0 then R(i%)=R(i%)+1
           Next j%
      Next i%
      ma%=R(i%)
      For i%=2 to n%
           if R(i%)>ma% then ma%=R(i%)
      Next i%
      Debug.print "Список номеров строк с максимальным числом положительных элементов:"
      For i%=1 to n%
           if R(i%)=ma% then Debug.Print i%;" ";
      Next i%
      Debug.Print
End Sub
1
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
20.01.2015, 20:56 6
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Но "безупречная" формулировка такова:
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Только смешно получится, если их там нет.
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
Sub Despirion()
    Const n& = 5 'количество строк
    Const m& = 6 'количество столбцов
    Dim i&, j&, maxRow&, kPol&, maxPol&, txt$
    ReDim a&(1 To n, 1 To m)
    Randomize
    For i = 1 To n 'генерация матрицы
        For j = 1 To m
            a(i, j) = Int(Rnd * 21 - 10) 'генерируем элемент матрицы
            Cells(i, j) = a(i, j) 'выводим его на лист
    Next j, i
    For i = 1 To n 'нахождение строки
        kPol = 0
        For j = 1 To m
            If a(i, j) > 0 Then kPol = kPol + 1
        Next j
        If kPol > maxPol Or i = 1 Then
            maxRow = i
            maxPol = kPol
            txt = ""
        ElseIf kPol = maxPol Then
            txt = IIf(Len(txt), txt & ", ", "") & i
        End If
    Next i
    If kPol Then
        MsgBox "Больше всего положительных элементов " & " (" & maxPol & ") в строке " & maxRow & _
            IIf(Len(txt), ", " & vbLf & "а также в строк" & IIf(InStr(txt, ","), "ах ", "е ") & _
            txt & ", где тоже " & maxPol & " положительны" & IIf(maxPol \ 10 Mod 10 = 1 Or (maxPol + 9) Mod 10 >= 4 _
            , "х элементов.", IIf(maxPol Mod 10 = 1, "й элемент.", "x элемента.")), ".")
    Else
        MsgBox "В матрице нет положительных элементов"
    End If
End Sub
1
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
20.01.2015, 22:19 7
Ваш проект, Catstail, потребовал (в моём исполнении) ещё 40 минут работы (до запуска).

Зато работает:
Вложения
Тип файла: xls Книга1.xls (24.5 Кб, 11 просмотров)
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
20.01.2015, 22:44 8
В этом проекте обрабатывается квадрат таблицы Excel 10×10, причём числа пока не обязательно вводить.

Не по теме:


О-го-го: за 25 минут аж 4 просмотра — воистину небывалый интерес к VBA в ветке VBA!

(Видимо, вузовцы и втузовцы временно отошли от дел :friends: (а дети малые — спят)

0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
20.01.2015, 22:58 9
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
причём числа пока не обязательно вводить.
В 100 пустых ячейках находится 10 строк с одинаковым количеством положительных элементов (ровным нулю)
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
21.01.2015, 04:29 10
Всё так. А теперь повводите туда числа (у меня дома нет офиса, так что продолжение следует… завтра!).

Надеюсь, теперь прояснилось отличие темы Despirion от той, которую мигом исчерпал Catstail: Дана последовательность из М чисел. Подсчитать, сколько в ней отрицательных, положительных и нулевых элементов (в принципе решения, а не в блок-схеме (которая этот принцип только бы затуманила))
0
6172 / 937 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
21.01.2015, 08:23 11
в 6 посте в 25 строчке, вмесо
Visual Basic
1
If kPol Then
должно быть
Visual Basic
1
If maxPol Then
прошу модераторов поправить
1
Catstail
21.01.2015, 09:41
  #12

Не по теме:

Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Ваш проект, Catstail, потребовал (в моём исполнении) ещё 40 минут работы (до запуска).
- это благодарность или жалоба?

0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
21.01.2015, 19:17 13
Это пример того, как ваша разработка внедряется в практику автоматизации на рабочем месте.

А вот интересно, сколько бы потратил на это условный ТС (например, тот же Despirion)? В проект он пока так и не заглянул (или сделал это без авторизации на форуме, что вряд ли).
0
21.01.2015, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2015, 19:17
Помогаю со студенческими работами здесь

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

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

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

Найти в матрице последний столбец, в котором положительных элементов больше чем отрицательных
прошу помощи=) нужно найти в матрице mxn последний столбец в котором положительных элементов...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru