powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разработка макросов в MS Excel
8 сообщений из 8, страница 1 из 1
Разработка макросов в MS Excel
    #36903278
Амосенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста написать следующую программу: Взять одномерный массив из L элементов. Определить количество различных элементов и поместить их в начале массива. Вывести результирующий массив под исходным. L=20.
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36903291
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результат надо получить в дополнительном массиве? в том же массиве (можно ли в таком случае использовать промежуточный)?
Исходные данные брать откуда (с листа Excel, вводить руками, генерировать)?
"Вывести результирующий массив под исходным" - куда вывести (в ячейки, в окно)?
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36903973
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Collection и Dictionary Вы уже проходили?
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36904230
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да даже если и "проходили", что огород городить?
Задача ведь просто на сортировку. N достаточно мало, так что с Шеллом или Квик-сорт заморачиваться даже не стОит.
Простая реализация выборкой (Массив - первый столбец листа, Результат - второй столбец):
Код: plaintext
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.
Sub Example01()
 Const L =  20 
 Dim i, j, Counter As Byte
 ' Заполняем исходный массив A()
 ReDim A(L)
 For i =  1  To L
  A(i) = Cells(i,  1 ).Value
 Next i
 ' Формируем результат - массив B()
 ReDim B(L)
 Counter =  0 
 For i =  1  To L
  j =  1 
  Do While j <= Counter
   If B(j) = A(i) Then Exit Do
   j = j +  1 
  Loop
  ' Числа из A() нет в B() - добавляем его
  If j > Counter Then
   Counter = Counter +  1 
   B(Counter) = A(i)
  End If
 Next i
 ' Выводим результат на лист
 Columns( 2 ).Rows("1:" & L).ClearContents
 For i =  1  To Counter
  Cells(i,  2 ).Value = B(i)
 Next i
 MsgBox "Количество различных элементов = " & Counter
End Sub
Не забудьте (если данные берете с листа), что любая ячейка - это 0, и тоже будет учтена...
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36904232
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM... что любая ячейка - это 0, и тоже будет учтена...
Что любая пустая ячейка в исходном массиве - это 0
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36910473
Амосенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Большое спасибо за программку!!! Всё работает)))
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36980673
shahrukh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторAndreTM

А вот скажите, нафига вы помогаете студенту-лентяю?
...
Рейтинг: 0 / 0
Разработка макросов в MS Excel
    #36980685
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shahrukhавторAndreTM

А вот скажите, нафига вы помогаете студенту-лентяю?
О-о...
Это надо быть в теме.
Амосенька у нас не только лентяй(ка), но и интересуется иногда и другим - http://sql.ru/forum/actualthread.aspx?tid=805470
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разработка макросов в MS Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]