Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 9

Строки + массив

07.06.2014, 00:21. Показов 1335. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки.
2. Отсортировать массив по возрастанию.
3. Организовать поиск в отсортированном массиве.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2014, 00:21
Ответы с готовыми решениями:

Дан двумерный массив, содержащий 3 строки и 4 столбца. Упорядочить массив по убыванию элементов 3-ей строки
у меня какая-то чушь выходит всё время. кто-нибудь может помочь, пожалуйста ?

Дан массив строк. Преобразовать строки с четной длиной по правилу: удалить все цифры из второй половины строки; а строки
pascalABC.net

Дан массив строк. Преобразовать строки с четной длиной по правилу: удалить все цифры из второй половины строки; а строки
Дан массив строк. Преобразовать строки с четной длиной по правилу: удалить все цифры из второй половины строки; а строки с нечетной...

13
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
07.06.2014, 12:59
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
34
35
36
37
38
39
40
41
42
43
Option Explicit
'
'   © Антихакер32™
'
'1. Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки.
'2. Отсортировать массив по возрастанию.
'3. Организовать поиск в отсортированном массиве.
Dim j$()
 
Private Sub Form_Activate()
    Dim s$, f&, u&
    'Для примера берём какой-либо текст
    s = "Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки."
    j = Split(LCase(s)): u = UBound(j) 'Разбиваем на слова
    qSort 0, u: Cls 'Быстро сотрируем и выводим отсортированный список
    For f = 0 To u: Print f & " " & j(f): Next
    Print
    Print "Ищем слово одномерный"
    f = Find("одномерный")
    Print "Находим " & f & " позицию в списке = [" & j(f) & "]"
End Sub
Public Function Find&(Elm$)
    Dim max&, f&
    max = UBound(j)
    For f = 0 To Log(max - 1) / Log(2) + 1
        Find = (Find + max) \ 2
        If Elm > j(Find) Then
            Find = Find + 1
        ElseIf Elm < j(Find) Then max = Find - 1
        Else: Exit Function
        End If
    Next
    Find = -1
End Function
Private Sub qSort(ByVal low As Long, ByVal high As Long)
    Dim I As Long, L As Long, M As String, wsp As String
    I = low: L = high: M = j((I + L) \ 2)
    Do Until I > L: Do While j(I) < M: I = I + 1: Loop: Do While j(L) > M: L = L - 1: Loop
        If (I <= L) Then wsp = j(I): j(I) = j(L): j(L) = wsp: I = I + 1: L = L - 1
    Loop
    If low < L Then qSort low, L
    If I < high Then qSort I, high
End Sub




Цитата Сообщение от Антихакер32 Посмотреть сообщение
Организовать поиск в отсортированном массиве.

Не по теме:

..как это обычно и бывает, врят-ли кто заметит мое решение,
и оссобенно как, на этот раз я организовал поиск :)

0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
07.06.2014, 13:08
Цитата Сообщение от Антихакер32 Посмотреть сообщение
..как это обычно и бывает, врят-ли кто заметит мое решение,
и оссобенно как, на этот раз я организовал поиск
Я заметил, обычный QuickSort, который я неоднократно выкладывал вот, вот, вот.
2
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
07.06.2014, 13:14
а, ну да, этот кусок кода придумал The Trick, спасибо

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub qSort(ByVal low As Long, ByVal high As Long)
    Dim I As Long, L As Long, M As String, wsp As String
    I = low: L = high: M = j((I + L) \ 2)
    Do Until I > L: Do While j(I) < M: I = I + 1: Loop: Do While j(L) > M: L = L - 1: Loop
        If (I <= L) Then wsp = j(I): j(I) = j(L): j(L) = wsp: I = I + 1: L = L - 1
    Loop
    If low < L Then qSort low, L
    If I < high Then qSort I, high
End Sub
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
07.06.2014, 20:39
Лучший ответ Сообщение было отмечено The trick как решение

Решение

И я заметил... большое число орфографических ошибок:

Цитата Сообщение от Антихакер32 Посмотреть сообщение
врят-ли кто заметит
Цитата Сообщение от Антихакер32 Посмотреть сообщение
и оссобенно как
Теперь о поиске. Зачем нужно аж два вызова функции Log при поиске в отсортированном массиве?? Двоичный поиск в этом, по-моему, совсем не нуждается:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
Sub BinSearch(Arr() As String, Word As String, pos As Integer)
    A% = 1
    B% = UBound(Arr, 1)
    If Arr(A%) = Word Then
       pos = A%
       Exit Sub
    End If
    If Arr(B%) = Word Then
       pos = B%
       Exit Sub
    End If
    Do
       If Abs(A% - B%) <= 1 Then
          pos = -1
          Exit Sub
       End If
       C% = (A% + B%) / 2
       If Arr(C%) = Word Then
          pos = C%
          Exit Sub
       End If
       If Arr(C%) > Word Then
          B% = C%
       Else
          A% = C%
       End If
    Loop
End Sub
 
Sub Test_Search()
Dim X(1 To 10) As String
    X(1) = "aa"
    X(2) = "ab"
    X(3) = "ac"
    X(4) = "ad"
    X(5) = "ba"
    X(6) = "bb"
    X(7) = "bc"
    X(8) = "ca"
    X(9) = "cx"
    X(10) = "cy"
    BinSearch X, "bb", k%
    Debug.Print k%
    BinSearch X, "qq", k%
    Debug.Print k%
End Sub
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
07.06.2014, 21:15
Цитата Сообщение от Catstail Посмотреть сообщение
Двоичный поиск в этом, по-моему, совсем не нуждается:
..как-бы не так, всё продуманно, краткость, сестра таланта
если список будет состоять к примеру из 256 слов, то будет ровно 8 (или меньше) шагов в цикле,
потому-что та формула, которую я выложил Log(..)/Log(2) возвращает число разрядов
краткость в том, что не придеться ставить дополнительные условия
для выхода из цикла, а каждое условие это квант времени
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
07.06.2014, 21:18
Цитата Сообщение от Антихакер32 Посмотреть сообщение
а каждое условие это квант времени
- каждый вызов логарифма+преобразование double->integer - это несколько квантов. Кроме того, и у меня будет 8 шагов при размере 256... Вообще двоичный поиск гарантированно завершается за log2n+1 шагов. Но сам логарифм вычислять не требуется
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
07.06.2014, 21:47
так дело в том, что если организовать именно как у меня, for f = 0 to <формула> ..
то саму формулу не придеться пересчитывать повторно, через for ..
промежуточные данные содержаться в памяти до конца цикла
ссумируется только F

и проверяется не вышло ли F, за это мнимое число ...

Добавлено через 3 минуты
Вот бы, нашолся бы какой-нибудь доброволец, замерил-бы скорость..
я бы и сам замерил, просто сейчас у меня завал дел

Добавлено через 2 минуты
и кстати, там цикл надо с еденицы начинать, о то будет один шаг лишний
For f = 1 To Log(max - 1) / Log(2) + 1
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.06.2014, 00:42
Антихакер32, вообще-то quickSort придумал Чарльз Хоару.
Я уже предлагал кому-нибудь придумать модификацию. Но пока желающих не было

Вот, вспомнил, что хотел перевести ее на консольный язык (как раз страждущие в моем разделе появились).

Добавлено через 1 час 7 минут

Не по теме:

Хе. Таки получилось. А думал, что вылезу за пределы стэка из-за рекурсии.

1
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 9
08.06.2014, 23:11  [ТС]
Private Sub qSort(ByVal low As Long, ByVal high As Long)
Dim I As Long, L As Long, M As String, wsp As String
I = low: L = high: M = j ((I + L) \ 2)

почему-то тут выбивает ошибку..
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
08.06.2014, 23:26
Цитата Сообщение от Violina_Lu Посмотреть сообщение
выбивает
- это слово свидетельствует о страхе перед компьютером.

Добавлено через 1 минуту
Violina_Lu, посмотри на строку 8 исходного кода. У автора там описана переменная уровня проекта j.

Добавлено через 1 минуту
Цитата Сообщение от Антихакер32 Посмотреть сообщение
Вот бы, нашолся
- нашЁлся
Цитата Сообщение от Антихакер32 Посмотреть сообщение
и кстати, там цикл надо с еденицы
- едИницы

Антихакер32, вообще-то правила форума предполагают элементарную грамотность...
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
09.06.2014, 04:05
Это скорее опечатки в тексте
.. заранее извиняюсь, за безгамотность

постараюсь больше так не делать
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
09.06.2014, 08:32
Ну, и славно.
0
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 9
09.06.2014, 20:53  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
это слово свидетельствует о страхе перед компьютером.
Это страх перед Visual Basic))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2014, 20:53
Помогаю со студенческими работами здесь

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки,...

Создать массив указателей на строки. Распечатать строки,начинающиеся на заданную букву
Помогите пожалуйста!! Задание такое: Дан текст.Создать массив указателей на строки.Распечатать строки,начинающиеся на заданную...

Функция разделения строки в массив отдельных частей этой строки
Помогите написать функцию, которая на вход принимает строку типа String и возвращает уже массив String содержащий отдельные части этой...

Массив. Заменить элементы первой строки элементами седьмой строки
дан массив A. заменить элементы первой строки элементами седьмой строки.

массив ссылок.процедуру Add(T,i,j), добавляющую после i-й строки текста Т копию j-й строки
Одно из возможных представлений &quot;длинного&quot; текста - это разделить его на строки и создать массив ссылок на эти строки Const N =...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru