Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/43: Рейтинг темы: голосов - 43, средняя оценка - 4.79
Елена 91

Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в сокращенном виде Фамилию И. О.

02.12.2011, 17:32. Показов 8893. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание 7. Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в сокращенном виде Фамилию И. О.

Задание 8. Создайте функцию пользователя, которая бы возвращала число гласных в строковой переменной

Задание 9. Создайте функцию пользователя для проверки, есть ли в строковой переменой заданный символ. Функция должна запросить у пользователя строковую переменную и символ и вернуть True в случае если символ присутствует в строке и в противном случае False.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2011, 17:32
Ответы с готовыми решениями:

Запросить у пользователя Фамилию Имя Отчество и выдать в сокращенном виде Фамилию И.О.
Visual basic Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку(в Textbox) и выдать в сокращенном виде Фамилию И. О.

Запросить фамилию, имя и отчество пользователя, и вывести его фамилию и инициалы
Вот задание:Написать программу, которая запрашивает фамилию, имя и отчество, а выводит фамилию и инициалы!!!

Дана строка: Ваши фамилия, имя и отчество записаны через один пробел. Записать одну фамилию в виде И...в.
Помогите пожалуйста. Дана строка: Ваши фамилия, имя и отчество записаны через один пробел. Записать одну фамилию в виде И...в. ...

21
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
02.12.2011, 17:45
Задание 9.
Visual Basic
1
2
3
4
5
6
7
Function функцию_пользователя(s$, c$) As Boolean
  функцию_пользователя = InStr(1, s, c) > 0
End Function
 
Sub Как_функцию_пользователя_Использовать()
  MsgBox функцию_пользователя("Иванов", "ё")
End Sub
Куда мы катимся
0
Елена 91
02.12.2011, 18:09
никуда)) а можешь подробно рассказать что происходит после каждой строки??
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
02.12.2011, 18:13
Visual Basic
1
2
3
txt = "Фамилия Имя Отчество"
arr = Split(txt)
Инициал_имя_Инициал_отчество_Фамилия = Mid$(arr(1), 1, 1) & "." & Mid$(arr(2), 1, 1) & "." & arr(0)
0
02.12.2011, 19:01

Не по теме:

Цитата Сообщение от Елена 91 Посмотреть сообщение
никуда))
В никуда, если подобные задания будут лепить по VB отдельные экзаменаторы!
Так им и передай при случае!

1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
02.12.2011, 19:08
Цитата Сообщение от Елена 91 Посмотреть сообщение
Задание 7. Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в сокращенном виде Фамилию И. О.
Есть готовая форма запроса: Макрос. Автозаполнение анкеты в Word. Нужна помощь

Там, в результате опытов над людьми, выяснилось, что запрашивать лучше по отдельности.

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

Вот и сам, испытывая, напоролся на "мину": «Теперь вышевведённая фамилия появится при щелчке в текстбоксе формы». Как бы не так! — сначала надо Ok нажать. Ну уж не буду переделывать. Может, и так пригодится.
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
02.12.2011, 19:14
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Там, в результате опытов над людьми
громко сказано, указываем
"разработчик программы установил правило для написания фамилии, имени и отчества - это:
Словосочетание из трёх слов, заканчивающееся на -ич, для лиц мужского пола или заканчивающееся на -на, для лиц женского пола"
иначе кидаем кнопку пропустить
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
02.12.2011, 19:17
Кидаем не кнопку, а такого разработчика. Не люди для кнопок — а кнопки для людей.

Больше полезных кнопок!
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
02.12.2011, 19:19
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
кнопки для людей
и что не так? кнопка чтобы пропустило если не по правилам
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
02.12.2011, 20:29
Цитата Сообщение от Елена 91 Посмотреть сообщение
Задание 9. Создайте функцию пользователя для проверки, есть ли в строковой переменой заданный символ. Функция должна запросить у пользователя строковую переменную и символ и вернуть True в случае если символ присутствует в строке и в противном случае False.
Visual Basic
1
2
3
4
Function функция_пользователя() As Boolean
  функция_пользователя = InStr(1, InputBox("Введите строковую переменную"), InputBox("Введите символ")) > 0
  MsgBox "На всякий случай скажу заранее - функция_пользователя = " & функция_пользователя
End Function
Добавлено через 1 час 1 минуту
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Есть готовая форма запроса: Макрос. Автозаполнение анкеты в Word. Нужна помощь
Во! Обязательно пролистаю!
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
02.12.2011, 23:52
Цитата Сообщение от Елена 91 Посмотреть сообщение
Задание 8. Создайте функцию пользователя, которая бы возвращала число гласных в строковой переменной
Создал. Пирожок с полки не возьму: их там 2 — а можно только средний.
Миниатюры
Запросить у пользователя Фамилию Имя Отчество через пробел в одну строку и выдать в сокращенном виде Фамилию И. О.  
Вложения
Тип файла: doc Tank.doc (35.5 Кб, 22 просмотров)
1
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
03.12.2011, 01:13
Автор Aent , за что ему отдельное спасибо.
покажите преподавателю этот код, пусть порадуется

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Option Compare Text
Public Function Инициалы(s As String, Optional Cлева As Boolean = False)
 
    Dim sv As Variant
    DimAs String
    DimAs String
    DimAs String
    Dim i As Long
    Dim k As Long
    Application.Volatile True
    
    If InStr(s, ".") > 0 Or Len(Trim$(s)) = 0 Then
        Инициалы = s 'Инициалы заданы явно или пустая строка
        Exit Function
    End If
    'Нормализация входной строки
    s = Replace(Application.Trim(s), Chr(30), "-")
    s = Replace(Replace(s, " -", "-"), "- ", "-")
    s = Replace(Replace(s, "' ", "'"), " '", "'") ' О 'Генри Александр; О' Генри Александр; Н' Гомо; Д' Тревиль
    sv = Split(s)
    
    sИ = vbNullString
    sО = vbNullString
    sФ = vbNullString
    
    i = UBound(sv)
    If i < 1 Then
        Инициалы = s
        Exit Function
    End If
    Select Case sv(i)
        Case "оглы", "кызы", "заде" 'бей, бек, заде, зуль, ибн, кызы, оглы, оль, паша, уль, хан, шах, эд, эль
            i = i - 1
            sО = UCase(Left$(sv(i), 1)) & "."
            i = i - 1
        Case "паша", "хан", "шах", "шейх"
            i = i - 1
        Case Else
            Select Case Right$(sv(i), 3)
                Case "вич", "вна"
                    If i >= 2 Then 'Стандартное окончание русских отчеств
                        sО = СropWord(sv(i))
                    Else           'Имя типа Босан Славич
                        sИ = СropWord(sv(i))
                        sФ = sv(0)
                    End If
                    i = i - 1
                Case Else
                    k = InStr(sv(i), "-")
                    If k > 0 Then
                        Select Case Mid$(sv(i), k + 1)
                            Case "оглы", "кызы", "заде", "угли", "уулы", "оол" 'Вариант насаба «-оглы» и «-заде»  типа Махмуд-оглы
                                sО = UCase(Left$(sv(i), 1)) & "."
                                i = i - 1
                                If i = 0 Then
                                   sИ = sО
                                   sО = vbNullString
                                End If
                        End Select
                    ElseIf i > 2 Then
                        Select Case sv(i - 1)
                            Case "ибн", "бен", "бин"
                                sО = UCase(Left$(sv(i), 1)) & "." ' Усерталь Алишер бен Сулейман
                                i = i - 2
                        End Select
                    Else ' Бен Эдуард
                        sИ = UCase(Left$(sv(i), 1))
                        If Len(sv(i)) > 1 Then sИ = sИ & "."
                        i = i - 1
                    End If
            End Select
    End Select
         
    Select Case sv(0)
        Case "де", "дел", "дос", "cент", "ван", "фон", "цу"
            If i >= 2 Then
                sФ = sv(0) & " " & StrConv(sv(1), vbProperCase)
                sИ = СropWord(sv(2))
            Else   'Де Николай
                If Len(sИ) > 0 Then
                    sФ = sv(0) & " " & StrConv(sv(1), vbProperCase)
                Else
                    sФ = StrConv(sv(0), vbProperCase)
                    sИ = СropWord(sv(1))
                End If
            End If
       Case Else
            If Len(sФ) = 0 Then 'Ещё не определили фамилию
                sФ = StrConv(sv(0), vbProperCase)
                If Len(sИ) = 0 Then
                   sИ = СropWord(sv(1))
                End If
            End If
    End Select
    If Слева Then
        Инициалы = sИ & sО & " " & sФ
    Else
        Инициалы = sФ & " " & sИ & sО
    End If
 
End Function
Public Function СropWord(s As Variant) As String
    Dim ss As String
    If Len(s) = 1 Then
        СropWord = s
    Else
        ss = UCase(Left$(s, 1)) & "."
        k = InStr(s, "-")
        If k > 0 Then
            ss = ss & "-" & Mid$(s, k + 1, 1) & "."
        End If
        СropWord = ss
    End If
End Function
Function CropFIO(ByVal FIO As String) As String
    ' получает в качестве параметра текстовую строку с виде "Фамилия имя отчество"
    ' обрезает имя и отчество, оставляя лишь инициалы - в виде "Фамилия И. О."
    Application.Volatile True
    CropFIO = Application.Trim(FIO): arr = Split(Replace(CropFIO, "-", " - "), " ")
 
    For i = UBound(arr) - 1 To UBound(arr)
        If Len(arr(i)) > 1 Then arr(i) = UCase(Left(arr(i), 1)) & "."
    Next i
    CropFIO = Replace(Replace(Join(arr, " "), " - ", "-"), ". ", ".")
End Function
Visual Basic
1
2
3
4
Sub tttest()
MsgBox Инициалы("Курамбек сулейман ибн хатаб")
MsgBox CropFIO("Курамбек сулейман ибн хатаб")
End Sub
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
03.12.2011, 08:19
Цитата Сообщение от R Dmitry Посмотреть сообщение
"оглы", "кызы", "заде" 'бей, бек, заде, зуль, ибн, кызы, оглы, оль, паша, уль, хан, шах, эд, эль
Ага, Восток дело тонкое
Цитата Сообщение от R Dmitry Посмотреть сообщение
Case "вич", "вна"
А что Ильич и Кузьминична отдыхают?
0
03.12.2011, 09:31

Не по теме:

ЦЭ, Вы похоже понятия не имеете как оно работает и для чего оно надо. Впрочем я и не удивляюсь, ведь практически все Ваши посты наполнены смыслом и содержательностью, за что Вас постоянно "банят" на всех профессиональных форумах.

0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
03.12.2011, 09:47
Цитата Сообщение от R Dmitry Посмотреть сообщение
Вы похоже понятия не имеете как оно работает
конечно, потому что у меня выделяет .Volatile
0
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
03.12.2011, 09:53
Visual Basic
1
.Volatile
Закомментируйте эту строку, она для excel
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
03.12.2011, 10:00
Цитата Сообщение от R Dmitry Посмотреть сообщение
Закомментируйте
а что это такое? может заремарчить
Visual Basic
1
2
'
rem
или всё же закомментировать?
поехали дальше, строка 17
.Trim чего комментировать, ремарчить?
0
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
03.12.2011, 10:07
Просто уберите
Visual Basic
1
application
перед
Visual Basic
1
 trim
, и все у вас заработает
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,321
03.12.2011, 10:16
улыбнуло, думал заодно и пол определяется
0
406 / 75 / 6
Регистрация: 31.01.2011
Сообщений: 111
Записей в блоге: 1
03.12.2011, 10:21
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
улыбнуло, думал заодно и пол определяется
да, и заодно регистрацию проверяет
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2011, 10:21
Помогаю со студенческими работами здесь

Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы
Пример: Введите фамилию, имя и отчество: Иванов Петр Семёнович П.С. Иванов

Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы
Пример: Введите фамилию, имя и отчество: Иванов Петр Семёнович П.С. Иванов Нашёл такую же тему, но не могу понять как устроено,...

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы. _______ Как это задание...

Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы
Строка S содержит фамилию, имя, отчество. Необходимо преобразовать ее в строку, содержащую фамилию и инициалы.

Дана строка, содержащая фамилию, имя и отчество. Вывести на экран строку, содержащую фамилию и инициалы
Дана строка, содержащая фамилию, имя и отчество. Вывести на экран строку, содержащую фамилию и инициалы. Пример: Вводим: Кукушкин...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru