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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2017, 13:10   #1
Rasta12345
Новичок
Джуниор
 
Регистрация: 01.01.2017
Сообщений: 4
Вопрос находить наибольший член этой строки( можно ряда или столбца) (Visual Basic)

Дорогие обитатели форума. Очень долго не могу написать простейшую программу. Она должна брать из уже готовой матрицы в Exel или генерировать свою(не суть важно), строку и находить наибольший член этой строки( можно ряда или столбца). Прошу помочь в написании. Поскольку я недавно столкнулся с подобным и в игре human resurce mashine ответ за одно прошу объяснить на пальцах. Заранее спасибо!
Rasta12345 вне форума Ответить с цитированием
Старый 01.01.2017, 14:26   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

А что написал уже? Чтение строки екселя есть?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.01.2017, 15:02   #3
Rasta12345
Новичок
Джуниор
 
Регистрация: 01.01.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
А что написал уже? Чтение строки екселя есть?
Я не написал пока ровным счетом ничего, поскольку написание этой программы будет осуществляться мною в аудитории перед преподом и в заданных им же конфигурациях( я лишь в общих чертах знаю что возможно будет). Чтение строки, столбца, диагонали я устроить смогу, а вот алгоритм который будет в этой строке находить наибольший, наименьший член, я не представляю как буду делать и соответственно прошу привиести примеры подобных программ или объяснить на пальцах.
Rasta12345 вне форума Ответить с цитированием
Старый 01.01.2017, 17:37   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Sub ksibir()
    Dim colNumber As Long
    Dim rowsCount As Long, colsCount As Long
    Dim colSum As Long, colProizv As Long, colMax, colMin
    Dim rowSum As Long, rowProizv As Long, rowMax, rowMin
    Dim r As Long
    On Error GoTo erLabel
    colNumber = ActiveCell.Column
    colProizv = 1
    colMax = Application.WorksheetFunction.Max(Columns(colNumber))
    colMin = Application.WorksheetFunction.Min(Columns(colNumber))
    colSum = Application.WorksheetFunction.Sum(Columns(colNumber))
    rowsCount = Cells(Rows.Count, colNumber).End(xlUp).Row
    For r = 1 To rowsCount
        If (Cells(r, colNumber) <> "") And _
        IsNumeric(Cells(r, colNumber)) Then
            colProizv = colProizv * Cells(r, colNumber)
        End If
    Next
    rowProizv = 1
    rowMax = Application.WorksheetFunction.Max(Rows(colNumber))
    rowMin = Application.WorksheetFunction.Min(Rows(colNumber))
    rowSum = Application.WorksheetFunction.Sum(Rows(colNumber))
    colsCount = Cells(colNumber, Columns.Count).End(xlToLeft).Column
    For r = 1 To colsCount
        If (Cells(colNumber, r) <> "") And _
        IsNumeric(Cells(colNumber, r)) Then
            rowProizv = rowProizv * Cells(colNumber, r)
        End If
    Next
    MsgBox "СТОЛБЕЦ № " & CStr(colNumber) & vbNewLine & _
    "сумма" & vbTab & vbTab & ": " & CStr(colSum) & vbNewLine & _
    "произведение" & vbTab & ": " & CStr(colProizv) & vbNewLine & _
    "максимальное" & vbTab & ": " & CStr(colMax) & vbNewLine & _
    "минимальное" & vbTab & ": " & CStr(colMin) & vbNewLine & vbNewLine & _
    "СТРОКА № " & CStr(colNumber) & vbNewLine & _
    "сумма" & vbTab & vbTab & ": " & CStr(rowSum) & vbNewLine & _
    "произведение" & vbTab & ": " & CStr(rowProizv) & vbNewLine & _
    "максимальное" & vbTab & ": " & CStr(rowMax) & vbNewLine & _
    "минимальное" & vbTab & ": " & CStr(rowMin)
    Exit Sub
    
erLabel:
    MsgBox "ОШИБКА В ДАННЫХ" & vbNewLine & "Error: " & Err.Description
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.01.2017, 02:26   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Подготовка к выступлению

Да уж… В таком контексте я ещё не выступал.

Начну с простого (тема cuba_35): Массивы.

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Код:
'ОТ АВТОРА: «программистская» фишка здесь в том, что в условии не оговорено, что в массиве A'
'наибольшее и наименьшее значения представлены только одним элементом. Значит, их м. б. много!'
Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Ещё 4 ч — и мы у цели! (Помнится, в институте на ТАКОЕ месяца два убивалось...)
По идее, комментарии призваны обнажить «подводные камни» защиты, а как на самом деле?
Цитата:
Сообщение от Rasta12345 Посмотреть сообщение
…вас не понял
Я об этом:
Цитата:
Сообщение от Rasta12345 Посмотреть сообщение
прошу объяснить на пальцах.
И о доходчивости моих комментариев (ссылки на которые выше, в цитатах) для обычного человека.
Вложения
Тип файла: xls Кошки.xls (69.5 Кб, 20 просмотров)

Последний раз редактировалось Sasha_Smirnov; 02.01.2017 в 23:30.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 02.01.2017, 12:42   #6
Rasta12345
Новичок
Джуниор
 
Регистрация: 01.01.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Код:
Sub ksibir()
    Dim colNumber As Long
    Dim rowsCount As Long, colsCount As Long
    Dim colSum As Long, colProizv As Long, colMax, colMin
    Dim rowSum As Long, rowProizv As Long, rowMax, rowMin
    Dim r As Long
    On Error GoTo erLabel
    colNumber = ActiveCell.Column
    colProizv = 1
    colMax = Application.WorksheetFunction.Max(Columns(colNumber))
    colMin = Application.WorksheetFunction.Min(Columns(colNumber))
    colSum = Application.WorksheetFunction.Sum(Columns(colNumber))
    rowsCount = Cells(Rows.Count, colNumber).End(xlUp).Row
    For r = 1 To rowsCount
        If (Cells(r, colNumber) <> "") And _
        IsNumeric(Cells(r, colNumber)) Then
            colProizv = colProizv * Cells(r, colNumber)
        End If
    Next
    rowProizv = 1
    rowMax = Application.WorksheetFunction.Max(Rows(colNumber))
    rowMin = Application.WorksheetFunction.Min(Rows(colNumber))
    rowSum = Application.WorksheetFunction.Sum(Rows(colNumber))
    colsCount = Cells(colNumber, Columns.Count).End(xlToLeft).Column
    For r = 1 To colsCount
        If (Cells(colNumber, r) <> "") And _
        IsNumeric(Cells(colNumber, r)) Then
            rowProizv = rowProizv * Cells(colNumber, r)
        End If
    Next
    MsgBox "СТОЛБЕЦ № " & CStr(colNumber) & vbNewLine & _
    "сумма" & vbTab & vbTab & ": " & CStr(colSum) & vbNewLine & _
    "произведение" & vbTab & ": " & CStr(colProizv) & vbNewLine & _
    "максимальное" & vbTab & ": " & CStr(colMax) & vbNewLine & _
    "минимальное" & vbTab & ": " & CStr(colMin) & vbNewLine & vbNewLine & _
    "СТРОКА № " & CStr(colNumber) & vbNewLine & _
    "сумма" & vbTab & vbTab & ": " & CStr(rowSum) & vbNewLine & _
    "произведение" & vbTab & ": " & CStr(rowProizv) & vbNewLine & _
    "максимальное" & vbTab & ": " & CStr(rowMax) & vbNewLine & _
    "минимальное" & vbTab & ": " & CStr(rowMin)
    Exit Sub
    
erLabel:
    MsgBox "ОШИБКА В ДАННЫХ" & vbNewLine & "Error: " & Err.Description
End Sub
Вот это дело. Спасибо. Однако осталось несколько вопросов:
1)Для нахождения максисального члена просто есть функция?(Application.WorksheetFunct ion.Max(Rows(colNumber)))
2)ни разу не видел такого обозначения( Dim colNumber As Long)
3) А существует ли иной способ найти минимальный и максимальный член (столбца, строки и т.д.)
Rasta12345 вне форума Ответить с цитированием
Старый 02.01.2017, 12:44   #7
Rasta12345
Новичок
Джуниор
 
Регистрация: 01.01.2017
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Да уж… В таком контексте я ещё не выступал.

Начну с простого (тема cuba_35): Массивы.

По идее, комментарии призваны обнажить «подводные камни» защиты, а как на самом деле?
Простите, но я как то вас не понял
Rasta12345 вне форума Ответить с цитированием
Старый 02.01.2017, 13:02   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Rasta12345 Посмотреть сообщение
1)Для нахождения максисального члена просто есть функция?(Application.WorksheetFunct ion.Max(Rows(colNumber)))
для нахождения максимального в строке на листе Excel.
Цитата:
Сообщение от Rasta12345 Посмотреть сообщение
2)ни разу не видел такого обозначения( Dim colNumber As Long)
значит тему Типы данных прогуливал.
Цитата:
Сообщение от Rasta12345 Посмотреть сообщение
3) А существует ли иной способ найти минимальный и максимальный член (столбца, строки и т.д.)
Да. в общих словах
Код:
For i = 1 To ПоследняяЯчеейка
tmp = cells(3,i)
If mx <= tmp Then mx = tmp
If mn >= tmp Then mn = tmp
Next
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица A(N, M). Найти ее наибольший элемент и номера строки и столбца, на пересечении которых он находится. GalaiAnton Общие вопросы Delphi 13 06.04.2015 16:40
поменять местами наибольший член и член с номером m Zhasik Паскаль, Turbo Pascal, PascalABC.NET 1 27.12.2010 08:39
Выбор из столбца по критерию и копировать ячейку из этой строки на другой лист Тетя Мотя Microsoft Office Excel 1 17.09.2009 16:46
Вводится строка. Находить наибольший символ в строке Stud13 Общие вопросы C/C++ 4 13.06.2009 14:39
Найти сумму ряда с точностью e, если дан общий член этого ряда JiLiYa Общие вопросы C/C++ 2 18.02.2009 11:11