Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Значение макс. масивов Добавлено: 28.02.09 14:26  

Автор вопроса:  Incognito
Дан массив действительных значений. Среди них есть равные максимальному значению. Расчитать кол-вотаких элементов.
В стобе А, 10 цифр всего.
Вот функция максимума:
For i = 1 To N
A(i) = Cells(i + 1, 1).Value
Next i
Max = A(1)
For i = 1 To N
If A(i) > Max Then Max = A(i)
Next i[

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #1 Добавлено: 28.02.09 17:32
Function GetCntMax(MyRange As Range) As Long 'можешь передать сюда Range(Cells(1, 1), Cells(10, 1)) = 1, а по сути любой Range, в котором хочешь найти к-во ячеек с MaxValue
Dim I As Long, MaxValue As Double, CntMax As Long
MaxValue = -1.79769313486231E+308
For I = 1 To MyRange.Count
  If MyRange(I) > MaxValue Then
    MaxValue = MyRange(I)
    CntMax = 1
  ElseIf MyRange(I) = MaxValue Then
    CntMax = CntMax + 1
  End If
Next I
GetCntMax = CntMax
End Function

Ответить

Номер ответа: 2
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #2 Добавлено: 28.02.09 18:36
  1. Function GetCntMax(MyRange As Range) As Long 'можешь передать сюда Range(Cells(2, 1), Cells(11, 1)), а по сути любой Range, в котором хочешь найти к-во ячеек с MaxValue
  2. Dim I As Long, MaxValue As Double, CntMax As Long
  3. MaxValue = -1.79769313486231E+308
  4. For I = 1 To MyRange.Count
  5.   If MyRange(I) > MaxValue Then
  6.     MaxValue = MyRange(I)
  7.     CntMax = 1
  8.   ElseIf MyRange(I) = MaxValue Then
  9.     CntMax = CntMax + 1
  10.   End If
  11. Next I
  12. GetCntMax = CntMax
  13. End Function

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 28.02.09 20:09
  1. v.Count(x => x == v.Max())

count(v.begin(), v.end(), *max_element(v.begin(), v.end()))

Домашнее задание: почему второй код лучше?

Ответить

Номер ответа: 4
Автор ответа:
 mai



Вопросов: 0
Ответов: 24
 Профиль | | #4 Добавлено: 01.03.09 00:17
Совсем домашнее задание: почему не пользуетесь функциями рабочего листа?
  1.  
  2. Function MaxCount(MyRange As Range) As Long
  3.     With WorksheetFunction
  4.        MaxCount = .CountIf(Range("A1:A10"), .Max(Range("A1:A10")))
  5.     End With
  6. End Function

Ответить

Номер ответа: 5
Автор ответа:
 mai



Вопросов: 0
Ответов: 24
 Профиль | | #5 Добавлено: 01.03.09 00:26
Извините не то скопировал
  1. Function MaxCount(MyRange As Range) As Long
  2.     With WorksheetFunction
  3.        MaxCount = .CountIf(MyRange, .Max(MyRange))
  4.     End With
  5. End Function
  6.  

Ответить

Номер ответа: 6
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #6 Добавлено: 01.03.09 20:37
fAndOrIn, тут явно всё проще намного...
У меня в столбце А 10 цифр. Я должен найти максимум (функцию я выше скинул) а потом я должен ещё найти числа равные этому максимуму, я так понимаю...

Ответить

Номер ответа: 7
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #7 Добавлено: 01.03.09 21:18
Incognito, если считаешь, что решить поставленную задачу за три цикла (слава богу еще не вложенных) "проще намного...", чем за один - это твое право! Я на твоем месте присмотрелся бы к ответу #5!

Ответить

Номер ответа: 8
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #8 Добавлено: 03.03.09 21:09
у меня есть условия к которым надо прислушаться и там этого ничего нету :)
Public Function Megomax(N As Integer)
Dim A(10) As single
.
.
функция которая должна быть
.
.
MegoMax = Max
End Function

то что выше я не могу понять, если вам не сложно всунте сюда, кто знает СРОЧНО ОЧЕНЬ НАДО, ПОжалуйста

Ответить

Номер ответа: 9
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 03.03.09 21:46
Написали еще в четвертом ответе, а тебе все непонятно. Так хоть понятней будет?
  1. Max = WorksheetFunction.CountIf(Range("A1:A10"), WorksheetFunction.Max(Range("A1:A10")))


P.S. Тупые студенты сегодня - залог востребованности нас как специалистов в будущем! :)

Ответить

Номер ответа: 10
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #10 Добавлено: 03.03.09 22:00
Public Function Megomax(N As Integer)
Dim A(10) As Single, Max As Single
Max = WorksheetFunction.CountIf(Range("A1:A10";), WorksheetFunction.Max(Range("A1:A10";)))
Megomax = Max
End Function

Вот функция, как я понял должна быть.
У меня ответ получился 1

Вот числа которые я просматриваю
2
3
4
1
-2
5
-3
2
-1
4

Что-то с ответом мне кажется не лады...

Ответить

Номер ответа: 11
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #11
Добавлено: 03.03.09 22:33
Ответ ПРАВИЛЬНЫЙ. В этом списке, я заметил только одну пятерку. Вам она не светит )))

Ответить

Номер ответа: 12
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #12 Добавлено: 03.03.09 23:04
WorksheetFunction - что это значит?
CountIf - что это значит?

Ответить

Номер ответа: 13
Автор ответа:
 mai



Вопросов: 0
Ответов: 24
 Профиль | | #13 Добавлено: 03.03.09 23:27
WorksheetFunction - функции рабочего листа Excel
CountIf - функция СчетЕсли, выдает количество в диапазоне при соблюдении каких-то условий
Max - функция Максимум, находит максимальное значение в диапазоне
Т.е. в диапазоне ячеек находим максимальное значение, а потом подсчитываем количество таких (максимальных) значений в этом же диапазоне.

Ответить

Номер ответа: 14
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #14 Добавлено: 03.03.09 23:28
ууу..я не обратил внимание там надо чтобы числа были ДЕЙСВИТЕЛЬНЫМИ, а это какие? Может кто-то 10 дейсвительных чисел кинутЬ?:)

Ответить

Номер ответа: 15
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #15 Добавлено: 03.03.09 23:29
Май, спасибо!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам