Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Помогите пожалуйста Добавлено: 16.11.10 21:14  

Автор вопроса:  Мария
нужен программный код к такому заданию.
Ввести одномерный массив b = {7.35, 0.12, -7, 3.12, 2.87, -4.12, 5.32, 0, 6.5}. Определить и вывести максимальный элемент массива и его номер. Сформировать новый массив из элементов одного знака, число которых больше

Ответить

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

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



ICQ: 419841508 

Вопросов: 9
Ответов: 100
 Web-сайт: www.helpim.ru
 Профиль | | #1
Добавлено: 16.11.10 22:23
http://www.cyberforum.ru/visual-basic/thread69829.html тут про сортировку написано , насчет 2й части "из элементов одного знака, число которых больше" я че т не понял : D

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 16.11.10 22:29
  1. Sub main()
  2.     Dim b()
  3.     b = Array(7.35, 0.12, -7, 3.12, 2.87, -4.12, 5.32, 0, 6.5)
  4.     Dim i As Integer
  5.     Dim j As Integer
  6.     Dim maxInd As Integer
  7.     Dim maxEl As Double
  8.     Dim countMinus As Integer
  9.     Dim countPlus As Integer
  10.     maxEl = b(0)
  11.     maxInd = 0
  12.     For i = 0 To UBound(b)
  13.         If b(i) > maxEl Then
  14.             maxEl = b(i)
  15.             maxInd = i
  16.         End If
  17.         If b(i) > 0 Then
  18.             countPlus = countPlus + 1
  19.         ElseIf b(i) < 0 Then
  20.             countMinus = countMinus + 1
  21.         End If
  22.     Next
  23.     MsgBox "&#204;&#224;&#234;&#241;&#232;&#236;&#224;&#235;&#252;&#237;&#251;&#233; &#253;&#235;&#229;&#236;&#229;&#237;&#242;: " + CStr(maxEl) + " &#241; &#237;&#238;&#236;&#229;&#240;&#238;&#236; " + CStr(maxInd) + " (&#237;&#243;&#236;&#229;&#240;&#224;&#246;&#232;&#255; &#241; 0)"
  24.     Dim str As String
  25.     Dim newb() As Double
  26.     ReDim newb(UBound(b))
  27.     For i = 0 To UBound(b)
  28.         If countPlus > countMinus Then
  29.             If b(i) > 0 Then
  30.                 newb(j) = b(i)
  31.                 j = j + 1
  32.                 str = str + CStr(b(i)) + " "
  33.             End If
  34.         Else
  35.             If b(i) < 0 Then
  36.                 newb(j) = b(i)
  37.                 j = j + 1
  38.                 str = str + CStr(b(i)) + " "
  39.             End If
  40.         End If
  41.     Next
  42.     MsgBox "&#205;&#238;&#226;&#251;&#233; &#236;&#224;&#241;&#241;&#232;&#226; = { " + str + "}"
  43. End Sub

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 16.11.10 22:30
кодировочка сбилась, там написано:
  1.  
  2. MsgBox "Максимальный элемент: " + CStr(maxEl) + " с номером " + CStr(maxInd) + " (нумерация с 0)"
  3. ........
  4. MsgBox "Новый массив = { " + str + "}"

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 16.11.10 23:21
попробуй писать на .NET

там максимальный элемент массива можно получить так
  1. b.Max()


а новый массив, значения которых, скажем, больше сотни, вот так
  1. b.Where(Function(T) T > 100).ToArray()

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 17.11.10 09:30
AgentFire пишет:
там максимальный элемент массива можно получить так
b.Max()

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

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 17.11.10 09:55
  1. b.IndexOf(b.Max)

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 17.11.10 10:50
Это и есть 2 цикла. Есть желание провести бенчмарк?

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #8
Добавлено: 17.11.10 11:29
я думаю те, кто проходит vba, а это явно не программисты значить, пишут на чем скажут, а не на чем мона))

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 17.11.10 11:34
AgentFire пишет:
b.IndexOf(b.Max)

Кстати, у Array есть только статический IndexOf, поэтому пример надо переписать

Ответить

Номер ответа: 10
Автор ответа:
 Мария



Вопросов: 1
Ответов: 1
 Профиль | | #10 Добавлено: 17.11.10 21:49
спасибо большое =)))

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 18.11.10 09:48
можно добавить .Cast(Of Int32) между b и IndexOf(b.Max)

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 18.11.10 10:26
Я продолжаю настаивать на бенчмарке

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 18.11.10 11:41
AgentFire пишет:
можно добавить .Cast(Of Int32) между b и IndexOf

Кстати, у IEnumerable нет ни обычного, ни extension метода IndexOf. Поэтому пример надо переписать

Ответить

Страница: 1 |

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



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