Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 35
1

Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры

21.02.2016, 16:29. Просмотров 1652. Ответов 33
Метки нет (Все метки)


1. Описать файл записей с именем note, содержащий следующие поля: фамилия, имя, номер телефона, день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
--ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Note, с упорядочением записей по алфавиту;
--вывод на экран информации о человеке,номер телефона которого введено с клавиатуры,
-- а если такого нет - вывод на экран соответствующего сообщения;
Помогите пожалуйста!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2016, 16:29
Ответы с готовыми решениями:

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

Структуры: вывод на экран информации о поезде, номер которого введен с клавиатуры
Описать структуру с именем POEZD, содержащую следующие поля: название пункта назначения; номер...

Вывод на консоль информации о человеке, номер телефона которого введён с консоли
Разработать структуру с именем NOTE, содержащую поля: • Фамилия, имя; • Номер телефона; • Дата...

Телефонный справочник: Получить информацию о владельце телефона, номер которого введен с клавиатуры
Имеется телефонный справочник, в котором записаны номер телефона, фамилия владельца и адрес....

__________________
Помогаю в написании курсовых работ и дипломов здесь.
33
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
22.02.2016, 10:51 2
Perfekt, а сам не пробовал чтото сделать ?
1
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
22.02.2016, 15:00 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Perfekt, смотри как я реализовал работу с данными, может чтото пригодиться из моего
Сконфигурируешь по своему, добавишь каких нужно полей, ниже пример для работы c БД там у меня
детали на складе ..

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
Option Explicit
 
Dim WithEvents ch As CheckBox
Dim WithEvents tx1 As TextBox, WithEvents tx2 As TextBox
Dim WithEvents dt As Data
Dim WithEvents bt1 As CommandButton, WithEvents bt2 As CommandButton, WithEvents bt3 As CommandButton, WithEvents bt4 As CommandButton
 
Const r& = 90
Dim l&, t&, w&, h&
 
Private Sub bt1_Click()
    'Комманда SQL
    'Выбранны будут те детали, которые есть на складе
    dt.RecordSource = "Select*from parts where Instock=True"
    dt.Refresh
End Sub
 
Private Sub bt2_Click()
    dt.Recordset.AddNew
    dt.UpdateRecord
    dt.Recordset.MoveLast
End Sub
 
Private Sub bt3_Click()
    dt.Recordset.Delete
    dt.UpdateRecord
    dt.Recordset.MovePrevious
End Sub
 
Private Sub bt4_Click()
    Dim l&, t&
    l = Left: t = Top
    Unload Me
    Load Me
    Left = l: Top = t: Visible = 1
End Sub
 
Private Sub dt_Reposition()
    tx1 = "": tx2 = "": ch = 0
    On Error Resume Next
    tx1 = dt.Recordset.Fields(0)
    tx2 = dt.Recordset.Fields(1)
    ch = Abs(dt.Recordset.Fields(2))
End Sub
 
Private Sub Form_Load()
    Dim v: For Each v In Controls: v.Visible = 0: Next ''''''''''''''''''''
    ChDir App.Path
    l = r: t = r: w = r * 21: h = r * 3
    Set ch = Controls.Add("vb.CheckBox", "ch"): With ch
        .Move l, t, w, h: t = t + h + r
        .Caption = "Наличие на складе"
        .Visible = 1
    End With
    With Controls.Add("vb.label", "lb1")
        .Move l, t, w, h: l = l + w + r
        .Caption = "Деталь"
        .Visible = 1
    End With
    Set tx1 = Controls.Add("vb.TextBox", "tx1"): With tx1
        .Move l, t, w, h: t = t + h + r: l = r
        .Visible = 1
    End With
    With Controls.Add("vb.label", "lb2")
        .Move l, t, w, h: l = l + w + r
        .Caption = "Характеристики"
        .Visible = 1
    End With
    Set tx2 = Controls.Add("vb.TextBox", "tx2"): With tx2
        .Move l, t, w, h: t = t + h + r: l = r
        .Visible = 1
    End With
    Set dt = Controls.Add("vb.Data", "dt"): With dt
        .Move l, t, r * 43, h: t = t + h + r: l = r
        .DatabaseName = "Stock.mdb": .Caption = .DatabaseName
        .RecordSource = "Parts"
        .ToolTipText = "Используемый файл базы данных"
        .Refresh
        .Visible = 1
    End With
    w = r * 10: h = r * 5
    Set bt1 = Controls.Add("vb.CommandButton", "bt1"): With bt1
        .Move l, t, w, h: l = l + w + r
        .Caption = "Выборка"
        .ToolTipText = "Выбранны будут те детали, которые есть на складе"
        .Visible = 1
    End With
    Set bt2 = Controls.Add("vb.CommandButton", "bt2"): With bt2
        .Move l, t, w, h: l = l + w + r
        .Caption = "Добавить запись"
        .Visible = 1
    End With
    Set bt3 = Controls.Add("vb.CommandButton", "bt3"): With bt3
        .Move l, t, w, h: l = l + w + r
        .Caption = "Удалить запись"
        .Visible = 1
    End With
    Set bt4 = Controls.Add("vb.CommandButton", "bt4"): With bt4
        .Move l, t, w, h: l = l + w + r
        .Caption = "Пере - запуск"
        .Visible = 1
    End With
    Caption = "Работа с данными"
End Sub
Private Sub Validate()
    On Error Resume Next
    dt.Recordset.Edit
    dt.Recordset.Fields(0).Value = tx1
    dt.Recordset.Fields(1).Value = tx2
    dt.Recordset.Fields(2).Value = ch
    dt.Recordset.Update
End Sub
 
Private Sub Form_Resize()
    On Error Resume Next
    If Me.WindowState = 2 Then Me.WindowState = 0
    Me.Width = bt4.Left + r * 15
    Me.Height = bt4.Top + r * 15
End Sub
 
Private Sub dt_Validate(Action As Integer, Save As Integer): Validate: End Sub
Private Sub tx1_Validate(Cancel As Boolean): Validate: End Sub
Private Sub tx2_Validate(Cancel As Boolean): Validate: End Sub
Private Sub ch_Validate(Cancel As Boolean): Validate: End Sub
1
Миниатюры
Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры   Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры   Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры  

Изображения
 
Вложения
Тип файла: rar Работа с данными.rar (4.4 Кб, 5 просмотров)
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 35
22.02.2016, 15:09  [ТС] 4
я даже не знаю как! я искал похожие задач(хотел сделать по аналогии),но нашел только на С++ и паскаль. если вы знаете ,то помогите пожалуйста!!

Добавлено через 1 минуту
спасибо!! буду разбираться))
0
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
22.02.2016, 15:16 5
Разбирайся, если будешь делать выборку, то перед этим отметь галочкой хотябы два элемента
а то будешь созирцать пустые поля.. ну я всёравно на всякий случай предусмотрел кнопку перезапуска ))
0
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
23.02.2016, 13:53 6
Ну что, так и не сделал по своему ?..
а я между-прочим сделал ..
0
Миниатюры
Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры  
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
23.02.2016, 14:11 7
Тут главное научиться с данными работать, конфигурировать и тп
во втором примере, у меня также нет жесткой привязки текстовых полей
к записям.
Так как и записи, и база данных могут меняться.


Вот код:
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
126
127
128
129
130
131
Option Explicit
'1. Описать файл записей с именем note, содержащий следующие поля: фамилия, имя, номер телефона, день рождения (массив из трех чисел).
'2. Написать программу, выполняющую следующие действия:
'--ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Note, с упорядочением записей по алфавиту;
'--вывод на экран информации о человеке,номер телефона которого введено с клавиатуры,
'-- а если такого нет - вывод на экран соответствующего сообщения;
'Помогите пожалуйста!!
Const r& = 90
Dim l&, t&, w&, h&, i&, v, s$, frmt$, b As Boolean
Dim WithEvents db As Data
 
Private Sub Command1_Click(Index As Integer)
    Select Case Index
    Case 0 'Добавление
        db.Recordset.AddNew
        db.UpdateRecord
        db.Recordset.MoveLast
        Call CtrEn
    Case 1 'Удаление
        db.Recordset.Delete
        db.UpdateRecord
        db.Recordset.MovePrevious
        Call CtrEn
    Case 2 'Сортиировка по фамилиям (комманда SQL)
        db.RecordSource = "Select*from [Note] ORDER BY [Фамилия]"
        db.Refresh
        db.Recordset.MoveFirst
        db_Reposition
    End Select
End Sub
 
Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
    With Text1(Index)
        If Index = 3 Then
            s = "" 'Форматируем номер мобилы (телефона)
            For i = 1 To Len(.Text)
                If Mid$(.Text, i, 1) Like "#" Then s = s & Mid$(.Text, i, 1)
            Next
            frmt = IIf(Len(s) < 8, "###-##-##", "# (###) ###-##-##")
            .Text = Format(s, frmt)
        End If
        If Index = 4 Then
            On Error Resume Next
            s = CDate(.Text)
            If Err Then
                MsgBox "Неверный формат", vbCritical
                .Text = db.Recordset.Fields(Index).Value
            End If
        End If
        
        db.Recordset.Edit
        db.Recordset.Fields(Index).Value = .Text
        db.Recordset.Update
    End With
End Sub
 
Private Sub db_Reposition()
    On Error Resume Next
    For i = 0 To db.Recordset.Fields.Count - 1
        Text1(i) = db.Recordset.Fields(i)
    Next
End Sub
 
Sub CtrEn()
    'Проверка на пустоту записи
    On Error Resume Next
    For i = 0 To db.Recordset.Fields.Count - 1
        Err.Clear
        With Text1(i)
            .Text = "": .Text = db.Recordset.Fields(i).Value
            b = Err <> 3021
            .Enabled = b: Label1(i).Enabled = b
            Command1(1).Enabled = b
            db.Enabled = b
        End With
    Next
End Sub
 
Private Sub Form_Load()
    Set db = Controls.Add("vb.Data", "db"): With db
        .DatabaseName = "Передовики нашего цеха.mdb"
        .Caption = .DatabaseName
        .RecordSource = "Note"
        .ToolTipText = "Кнопки просмотра БД"
        .Refresh
        .Visible = 0
    End With
    l = r: t = r: w = r * 10: h = r * 3
    On Error Resume Next
    For i = 0 To db.Recordset.Fields.Count - 1 'Лэйбы
        Load Label1(i): With Label1(i)
            .AutoSize = 1
            .Move l, t, w, h: t = t + h + r
            .Caption = db.Recordset.Fields(i).Name
            If .Width > w Then w = .Width 'Ширина по максимальному лэйбу
            .Visible = 1
        End With
    Next
    l = l + w + r: t = r: w = r * 39
    For i = 0 To db.Recordset.Fields.Count - 1 'Текст
        Load Text1(i): With Text1(i)
            .Move l, t, w, h: t = t + h + r
            .Text = "": .Text = db.Recordset.Fields(i).Value
            .Visible = 1
        End With
    Next
    l = r: h = r * 5
    With db
        .Move l, t, 0, h: w = .Width: l = l + w + r
        .Visible = 1
    End With
    i = 0
    For Each v In Split("Добавить запись//Удалить запись//Сортировать записи", "//")
        Load Command1(i): With Command1(i)
            .Move l, t, w, h: l = l + w + r: i = i + 1
            .Caption = v
            .Visible = 1
        End With
    Next
    Caption = "Работа с данными"
    Call CtrEn
End Sub
 
Private Sub Form_Resize()
    On Error Resume Next
    Dim ctr As Control
    Set ctr = Controls(Controls.Count - 1)
    If Me.WindowState = 2 Then Me.WindowState = 0
    Me.Width = ctr.Left + r * 15
    Me.Height = ctr.Top + r * 15
End Sub
1
Вложения
Тип файла: rar Работа с данными 2.rar (5.2 Кб, 1 просмотров)
11193 / 3566 / 632
Регистрация: 13.02.2009
Сообщений: 10,658
23.02.2016, 19:51 8
смотри как я реализовал работу с данными,
fever brain, Абсолютно согласен!
Но не согласен в необоснованном уклоне в сторону динамичного создания контролов!
Во первых лишний код. Во вторых усложнение программы.
Могу согласиться с таким подходом только в исключительных случаях.
И тем не менее + за вариант!
3
Модератор
6710 / 2708 / 518
Регистрация: 24.04.2011
Сообщений: 5,083
Записей в блоге: 10
23.02.2016, 20:00 9
Цитата Сообщение от Alex77755 Посмотреть сообщение
Но не согласен в необоснованном уклоне в сторону динамичного создания контролов!
+1
Как сторонник KISS принципа, тоже не раз указывал на неоправданное запутывание новичков.
Кликните здесь для просмотра всего текста

Будьте скромны, не считайте себя супергением
старайтесь сохранять ваш код настолько простым, насколько это возможно, но не меньше, чем необходимо.
2
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
24.02.2016, 11:05 10
Цитата Сообщение от Alex77755 Посмотреть сообщение
Но не согласен в необоснованном уклоне в сторону динамичного создания контролов
Ну да, виноват, может я слишком забегаю вперед, хотелось как лучше, например если бы для себя делал
то прописал бы возможности расположения объектов на форме, например картинка слева, три кнопки внизу, информация справа, или список вверху, а если в базе будут несколько структур с разными значениями
то также можно подстроить окно под структуру записей, в одной базе ведь можно хранить не только фио и телефоны, можно также хранить товары и цены, склады и прочее, параметры объектов для вводв-вывода информации в твоей программе, да всё что угодно, и всё в одной базе

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

Если тот новичек хотябы научиться данные конфигурировать, то ему не составит труда и в коде разобраться
даже если увеличить(сократить) число полей, программа корректно сработает, добавит лейбл
поставит надпись и поле для ввода

Вобщем мне так удобнее, дольше придётся объяснять почему мне так удобнее
0
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 35
24.02.2016, 21:15  [ТС] 11
fever brain, спасибо большое,как-то сложно разобраться,я буду стараться! На данный момент мне не понятна большая часть кода...
0
Эксперт WindowsАвтор FAQ
17601 / 7444 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
25.02.2016, 01:56 12
Разве название темы - "Структура" и
Цитата Сообщение от Perfekt Посмотреть сообщение
массив, состоящий из восьми элементов типа Note
не предполагает создание массива пользовательского типа, что-то вроде:

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
Option Explicit
 
Private Type Note
    Fam      As String
    Name     As String
    Phone    As String
    Birthday As Date
End Type
 
Private Sub Form_Load()
    
    Dim Record(7) As Note
    Dim i As Long
    
    For i = 0 To UBound(Record)
        With Record(i)
            .Fam = "My Fam"
            .Name = "My Name"
            .Phone = "+380999999999"
            .Birthday = CDate("01.01.1990")
        End With
    Next
    
    Dim ff As Integer
    
    ff = FreeFile()
    Open App.Path & "\Personal.txt" For Binary As #ff
    Put #ff, , Record
    Close #ff
End Sub
+ сортировка.
Это ж учебная задача.
3
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
25.02.2016, 12:15 13
Цитата Сообщение от Dragokas Посмотреть сообщение
название темы - "Структура"
Название темы изменилось(не знаю кем) после 10 сообщения, и моего вложенного труда, тоесть когда уже стало более менее проясняться что хочет автор темы, а было такое: типы данных - и всё..
Если бы я также умел названия менять, я бы тоже сменил на такое какое было мне удобно.
0
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
25.02.2016, 18:30 14
Dragokas, вы конечно молодец, что так упростили задачу, поставил + так как взял на вооружение идею
Продолжая разговор о сложности, хочу заметить что всёравно тот новичёк, ну как бы не старался, на отлично бы не решил, поэтому, я не успакоился и решил всётаки помочь ему, показать как это делают взрослые дядьки ))

И не знаю, кому тут станет плохо от готовой, решенной на отлично задачи.

Код формы:
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
Option Explicit
Option Compare Text
 
Private Type Note
    Fam      As String
    Name     As String
    Phone    As String
    Birthday As Date
    ID As Long
End Type
 
Const r = 90, rr = "//", rrr = "@" & vbCr & "а@", nl = "<Отсутствует>"
Dim l&, t&, w&, h&, i&, j&, ff&, s$, a1$(), frmt$, FileRec$, v, b() As Byte
Dim Record() As Note
Dim WithEvents ls As ListBox
Dim mW&, mH&, CurID&, CurIndex&
 
Private Sub FinalSize()
    'Определяем конечный размер окна
    For Each v In Me.Controls
        If (v.Left + v.Width) > mW Then mW = (v.Left + v.Width)
        If (v.Top + v.Height) > mH Then mH = (v.Top + v.Height)
    Next
    
End Sub
 
Private Sub Form_Resize()
    'Событие растяжки окна
    On Error Resume Next
    If Me.WindowState = 2 Then Me.WindowState = 0
    Me.Width = mW + (Me.Width - Me.ScaleWidth) + r
    Me.Height = mH + (Me.Height - Me.ScaleHeight) + r
End Sub
 
Private Sub SavingAccounts()
    'Сохранение всех записей
    Dim r2() As Note
    r2 = Record
    For i = 0 To ls.ListCount - 1: For j = 0 To UBound(Record)
        With r2(j)
            If .ID = ls.ItemData(i) Then Record(i) = r2(j)
        End With
    Next: Next
    Kill FileRec
    Open FileRec For Binary As #ff
    Put #ff, , Record
    Close #ff
End Sub
 
Private Sub Form_Load()
    'Загрузка формы
    ff = FreeFile()
    FileRec = App.Path & "\Personal.txt"
    Open FileRec For Binary As #ff
    If LOF(ff) < 1 Then
        ReDim Preserve Record(7)
        For i = 0 To UBound(Record)
            With Record(i)
                .Fam = "Фамилия_" & i + 1 'По умолчанию
                .Name = "Имя_" & i + 1
                .Phone = nl
                .Birthday = CDate(32874)
                .ID = i
            End With
        Next: CurID = i - 1 'Текущий идентификатор
    Else
        'Вычисление размера динамического массива под записи (можно и по другому)
        ReDim b(LOF(ff) - 1)
        Get #ff, 1, b: s = StrConv(b, vbUnicode)
        ReDim Record(UBound(Split(s, rrr)) - 1)
        Get #ff, 1, Record
    End If
    Close #ff
    On Error Resume Next
    l = r: t = r: w = r * 15: h = r * 3: i = 0
    For Each v In Split("Фамилия//Имя//Телефон//День рождения", rr)
        Load Label1(i): With Label1(i)
            .AutoSize = 1
            .Caption = v
            .Move l, t, w, h: h = .Height: t = t + h + r
            If .Width > w Then w = .Width
            .Visible = 1
            i = i + 1
        End With
    Next
    l = l + w + r: t = r: w = r * 20:
    For i = 0 To i - 1
        Load Text1(i): With Text1(i)
            .Move l, t, w, h:  t = t + h + r
            .Text = ""
            .Visible = 1
        End With
    Next
    With Text1(i - 1): h = .Top + .Height + r: End With
    l = l + w + r: t = r
    Set ls = Controls.Add("vb.listbox", "ls"): With ls
        .Move l, t, w, h: t = t + .Height + r
        For i = 0 To UBound(Record)
            .AddItem Record(i).Fam
            .ItemData(i) = Record(i).ID
            If Record(i).ID > CurID Then CurID = Record(i).ID
        Next
        .ListIndex = 0
        .Visible = 1
    End With
    l = r: w = r * 14: h = r * 5: i = 0
    For Each v In Split("Добавить запись//Удалить запись//Сортировать записи//Выход", rr)
        Load Command1(i): With Command1(i)
            .Caption = v
            .Move l, t, w, h: l = l + w + r
            .Visible = 1
            i = i + 1
        End With
    Next
    l = ls.Left + ls.Width + r: t = r: w = r * 3: h = r * 3: j = 1
    For Each v In Split("Переместить вверх//Переместить вниз", rr) '//
        Load Command1(i): With Command1(i)
            .Font.Name = "Wingdings 3"
            .Caption = Choose(j, "p", "q"): j = j + 1
            .ToolTipText = v
            .Move l, t, w, h: t = t + h
            .Visible = 1
            i = i + 1
        End With
    Next
    Me.Caption = "Работа со структурой"
    Call FinalSize
    
End Sub
 
Private Sub qSort(ByVal mn As Long, ByVal mx As Long)
    'Быстрая сортировка
    Dim i As Long, l As Long, j As String, s As String
    i = mn: l = mx: j = a1((i + l) \ 2)
    Do Until i > l: Do While a1(i) < j: i = i + 1: Loop: Do While a1(l) > j: l = l - 1: Loop
        If (i <= l) Then s = a1(i): a1(i) = a1(l): a1(l) = s: i = i + 1: l = l - 1
    Loop
    If mn < l Then qSort mn, l
    If i < mx Then qSort i, mx
End Sub
 
Private Sub CtrEn(b As Boolean)
    'Проверка на отсутствие записей
    For Each v In Controls
        Select Case TypeName(v)
        Case "TextBox", "Label": v.Enabled = b
        Case "CommandButton"
            If v.Caption <> "Добавить запись" Then v.Enabled = b
        End Select
    Next
End Sub
 
Private Sub Command1_Click(Index As Integer)
    'Кнопки
    Dim j&, a2$()
    Select Case Command1(Index).Caption
    Case "Выход"
        Unload Me
    Case "Сортировать записи"
        ReDim a1(ls.ListCount - 1)
        For i = 0 To UBound(a1)
            a1(i) = ls.List(i) & rrr & ls.ItemData(i)
        Next
        qSort 0, UBound(a1)
        ls.Clear
        For i = 0 To UBound(a1)
            a2 = Split(a1(i), rrr)
            ls.AddItem a2(0), i
            ls.ItemData(i) = a2(1)
        Next
        ls.ListIndex = 0
    Case "Удалить запись"
        On Error Resume Next
        ReDim r2(UBound(Record) - 1) As Note
        If Err = 9 Then Debug.Print Err: CtrEn 0: Erase Record: Exit Sub
        For i = 0 To UBound(Record)
            With Record(i)
                If .ID <> ls.ItemData(ls.ListIndex) Then
                    r2(j) = Record(i): j = j + 1
                End If
            End With
        Next
        Record = r2
        j = ls.ListIndex
        ls.RemoveItem ls.ListIndex
        ls.ListIndex = j - Abs(j = ls.ListCount)
    Case "Добавить запись"
        CtrEn 1
        On Error Resume Next
        ReDim Preserve Record(UBound(Record) + 1)
        If Err = 9 Then ReDim Record(0)
        CurID = CurID + 1
        CurIndex = UBound(Record)
        With Record(CurIndex)
            .Fam = "Новая фамилия"
            .Name = "Новое имя"
            .Phone = nl
            .Birthday = CDate(32874)
            .ID = CurID
            ls.AddItem .Fam, 0
            ls.ItemData(0) = CurID
            ls.ListIndex = 0
        End With
    Case "p", "q" 'Перемещение фамилий в списке
        With ls
            i = IIf(Command1(Index).ToolTipText = "Переместить вверх", -1, 1)
            j = i + .ListIndex
            If j >= .ListCount Or j < 0 Then Exit Sub
            v = Array(.List(j), .ItemData(j))
            .RemoveItem (.ListIndex + i)
            j = .ListIndex + Abs(i < 0)
            .AddItem v(0), (j)
            .ItemData(j) = v(1)
        End With
    End Select
End Sub
 
 
Private Sub Form_Unload(Cancel As Integer)
    'Конец программы
    SavingAccounts
End Sub
 
Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
    'Событие изменения данных в текстовых полях
    With Record(CurIndex)
        Select Case Index
        Case 0: .Fam = Text1(Index)
            ls.List(ls.ListIndex) = .Fam
        Case 1: .Name = Text1(Index)
        Case 2:
            With Text1(Index)
                s = "" 'Форматируем номер телефона
                For i = 1 To Len(.Text)
                    If Mid$(.Text, i, 1) Like "#" Then s = s & Mid$(.Text, i, 1)
                Next
                frmt = IIf(Len(s) < 8, "###-##-##", "# (###) ###-##-##")
                s = Format(s, frmt)
                While Left$(s, 1) = "-": s = Mid$(s, 2): Wend
                .Text = s
                If .Text = "" Then
                    .Text = nl
                End If
            End With
            .Phone = Text1(Index)
        Case 3:
            On Error Resume Next
            s = CDate(Text1(Index).Text)
            If Err Then
                MsgBox "Неверный формат даты", vbCritical
                Text1(Index).Text = .Birthday
            Else: .Birthday = Text1(Index)
            End If
        End Select
    End With
    Exit Sub
End Sub
 
Private Sub ls_Click()
    'Событие мышки списка
    For i = 0 To UBound(Record)
        With Record(i)
            If .ID = ls.ItemData(ls.ListIndex) Then
                Text1(0) = .Fam
                Text1(1) = .Name
                Text1(2) = .Phone
                Text1(3) = .Birthday
                CurIndex = i
                Exit For
            End If
        End With
    Next
End Sub
1
Миниатюры
Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры  
Вложения
Тип файла: rar Работа со структурой.rar (4.2 Кб, 3 просмотров)
es geht mir gut
11224 / 4701 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
25.02.2016, 19:20 15
fever brain, опять не так
Цитата Сообщение от Perfekt Посмотреть сообщение
следующие поля: фамилия, имя, номер телефона, день рождения (массив из трех чисел)
День рождения должен быть массивом из трех чисел.
0
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
26.02.2016, 01:36 16
Опять 25, ну пусть автор темы сделает это сам, если не сделает то сам зделаю завтра
там потребуется небольшая правка, а то слишком хорошо тоже нехорошо, тут главное не перестараться ))

Так и знал что ктото укажет на массив из 3 числа просто обычно так никто не делает,
тоесть указывают дату единым форматом.
А может я хотел проще сделать ! Pro_grammer же меня научил простоте ))
0
Pro_grammer
26.02.2016, 06:30
  #17

Не по теме:

Цитата Сообщение от fever brain Посмотреть сообщение
Pro_grammer же меня научил простоте ))
Левая отмазка! Ибо сказано:
"старайтесь сохранять ваш код настолько простым, насколько это возможно, но не меньше, чем необходимо."

0
11193 / 3566 / 632
Регистрация: 13.02.2009
Сообщений: 10,658
26.02.2016, 09:17 18
но не меньше, чем необходимо.
Какая необходимость создавать в данном случае контролы программно?
Всё вполне решается в редакторе.
Но программный код будет раза в три короче и понятней.
1
oh my god
1444 / 783 / 159
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
26.02.2016, 15:54 19
Цитата Сообщение от Alex77755 Посмотреть сообщение
Но программный код будет раза в три короче и понятней
Не будет, если хотите сделайте сами его так чтобы было понятнее
Я сделал, в частности не стал делать спагетти, и все что надо прокомментировал

Я не могу понять, почему вас возмущает динамика ?, я наоборот двумя руками за всё
что можно расширить добавить улучшить и тд, поэтому мне удобнее так писать
В чём проблема ?, где он в 3 раза длинее ?, у меня и так массивы контролов уже лежат на форме
программа только выравнивает их на форме по сетке, и написанно всё компактно
так как, вместо перечислений каждого элемента у меня часто используются циклы

похоже автор темы сильно впечатлился раз уже второй день молчит ))
или уже сдал одно из предложенных вариантов

как бы не было теперь эту программу можно легко поменять на другую
в частности в моей практике уже требовались подобные задачи

Финальная версия, теперь есть три отдельных поля для ввода дня месяца и года
исправленны некоторые ньюансы, добавленны коментарии к коду и диалоги в программе

Код:
Кликните здесь для просмотра всего текста
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
Option Explicit
Option Compare Text
'
'Вывод на экран информации о человеке,номер телефона которого введено с клавиатуры
'By the Fever Brain 2016
'Яндекс кошелек: 410012701950682 по4та: [email]fever.brain@yandex.ru[/email]
'
Private Type Note 'Структура записи
    Fam      As String 'Фамилия
    Name     As String 'Имя
    Phone    As String 'Телефон
    Birthday As Date 'День рождения
    ID As Long 'Уникальный идентификатор для сортировок и изменения позиций
    Delimiter As String 'Разделитель для вычисления размера динамического массива
End Type
 
Const WidthFam = 20 'Ширина поля с фамилией
Const WidthBirthday = 6 'Ширина поля с Д/Р
Const r = 90 'Ширина сетки для расположения кнопок и полей
Const rr = "//", p = ".", rrr = vbCr & "/" & vbLf, nl = "<Отсутствует>" 'Разделители и пустой текст
'Общие переменные:
Dim mW&, mH&, CurID&, CurIndex&, FileRec$
Dim l&, t&, w&, h&, i&, j&, ff&, s$, a1$(), v, b() As Byte, bl As Boolean
Dim Record() As Note 'Запись с типом Note
Dim WithEvents ls As ListBox 'Динамический контрол списка
 
Sub EraseFields()
    'Опустошение всех полей и записей
    For i = 0 To Text1.Count - 1
        Text1(i).Text = ""
    Next
    Erase Record
End Sub
 
Sub InsertDate(Text As TextBox, ByVal AnyData As Date)
    'Вставка даты в три текстовых поля
    Dim TextArray As Object, i&
    On Error Resume Next
    a1 = Split(AnyData, p): j = 0
    Set TextArray = Controls(Text.Name)
    For i = Text.Index To TextArray.Count - 1
        TextArray(i).Text = a1(j): j = j + 1
    Next
End Sub
 
Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
    'Событие изменения данных в текстовых полях
    With Record(CurIndex)
        Select Case Index
        Case 0: .Fam = Text1(Index)
            ls.List(ls.ListIndex) = .Fam
        Case 1: .Name = Text1(Index)
        Case 2:
            With Text1(Index)
                s = "" 'Форматируем номер телефона
                For i = 1 To Len(.Text)
                    If Mid$(.Text, i, 1) Like "#" Then s = s & Mid$(.Text, i, 1)
                Next
                s = Format(s, IIf(Len(s) < 8, "###-##-##", "# (###) ###-##-##"))
                While Left$(s, 1) = "-": s = Mid$(s, 2): Wend
                .Text = s
                If .Text = "" Then
                    .Text = nl
                End If
            End With
            .Phone = Text1(Index)
        Case 3 To 5 'проверяем по трём полям правильность ввода даты
            On Error Resume Next
            s = CDate(Text1(3) & p & Text1(4) & p & Text1(5))
            If Err Then
                MsgBox "Неверный формат даты", vbExclamation
                InsertDate Text1(3), .Birthday
            Else: .Birthday = s
            End If
            InsertDate Text1(3), .Birthday
        End Select
    End With
    Exit Sub
End Sub
 
Private Sub ls_Click()
    'Событие мышки списка
    For i = 0 To UBound(Record)
        With Record(i)
            If .ID = ls.ItemData(ls.ListIndex) Then
                Text1(0) = .Fam
                Text1(1) = .Name
                Text1(2) = .Phone
                InsertDate Text1(3), .Birthday 'Вставка даты для трёх полей начиная с третьего
                CurIndex = i
                Exit For
            End If
        End With
    Next
End Sub
Private Sub FinalSize()
    'Определяем конечный размер окна
    For Each v In Me.Controls
        If (v.Left + v.Width) > mW Then mW = (v.Left + v.Width)
        If (v.Top + v.Height) > mH Then mH = (v.Top + v.Height)
    Next
End Sub
 
Private Sub Form_Resize()
    'Событие растяжки окна
    On Error Resume Next
    If Me.WindowState = 2 Then Me.WindowState = 0
    Me.Width = mW + (Me.Width - Me.ScaleWidth) + r
    Me.Height = mH + (Me.Height - Me.ScaleHeight) + r
End Sub
 
Private Sub SavingAccounts()
    'Сохранение всех записей
    Dim r2() As Note
    r2 = Record
    For i = 0 To ls.ListCount - 1: For j = 0 To UBound(Record)
        With r2(j)
            If .ID = ls.ItemData(i) Then Record(i) = r2(j)
        End With
    Next: Next
    Kill FileRec
    Open FileRec For Binary As #ff
    Put #ff, 1, Record
    Close #ff
End Sub
 
Private Sub Form_Load()
    'Загрузка формы
    ff = FreeFile()
    Me.Caption = "Работа со структурой"
    FileRec = App.Path & "\Personal.txt"
    On Error Resume Next
    Open FileRec For Binary As #ff
    If LOF(ff) < 1 Then
        If MsgBox("Записи отсутствуют." & vbLf & "Создать произвольные записи с нумерацией ?", 68, Me.Caption) = vbYes Then
            ReDim Preserve Record(7)
            For i = 0 To UBound(Record)
                With Record(i)
                    .Fam = "Фамилия_" & i + 1 'По умолчанию
                    .Name = "Имя_" & i + 1
                    .Phone = nl
                    .Birthday = CDate(32874)
                    .ID = i
                    .Delimiter = rrr
                End With
            Next: CurID = i - 1 'Текущий идентификатор
        End If
    Else
        'Вычисление размера динамического массива под записи с момощью разделителя
        ReDim b(LOF(ff) - 1)
        Get #ff, 1, b: s = StrConv(b, vbUnicode)
        ReDim Record(UBound(Split(s, rrr)) - 1)
        Get #ff, 1, Record
    End If
    Close #ff
    l = r: t = r: w = r * 15: h = r * 3: i = 0
    For Each v In Split("Фамилия//Имя//Телефон//День рождения", rr)
        Load Label1(i): With Label1(i)
            .AutoSize = 1
            .Caption = v
            .Move l, t, w, h: h = .Height: t = t + h + r
            If .Width > w Then w = .Width
            .Visible = 1
            i = i + 1
        End With
    Next
    l = l + w + r: t = r: w = r * WidthFam
    For i = 0 To i - 1
        If Label1(i) <> "День рождения" Then
            Load Text1(i): With Text1(i)
                .Move l, t, w, h:  t = t + h + r
                .Text = ""
                .Visible = 1
            End With
        Else
            w = r * WidthBirthday
            For j = i To i + 2
                Load Text1(j): With Text1(j)
                    .Move l, t, w, h:  l = l + w + r
                    .Text = ""
                    .Visible = 1
                End With
            Next: t = t + h + r
        End If
    Next
    w = r * WidthFam: l = Text1(0).Left
    With Text1(i - 1): h = .Top + .Height + r: End With
    l = l + w + r: t = r
    Set ls = Controls.Add("vb.listbox", "ls"): With ls
        .Move l, t, w, h: t = t + .Height + r
        For i = 0 To UBound(Record)
            .AddItem Record(i).Fam
            .ItemData(i) = Record(i).ID
            If Record(i).ID > CurID Then CurID = Record(i).ID
        Next
        .ListIndex = 0
        .Visible = 1
    End With
    l = r: w = r * 14: h = r * 5: i = 0
    For Each v In Split("Добавить запись//Удалить запись//Сортировать записи//Выход", rr)
        Load Command1(i): With Command1(i)
            .Caption = v
            .Move l, t, w, h: l = l + w + r
            .Visible = 1
            i = i + 1
        End With
    Next
    l = ls.Left + ls.Width + r: t = r: w = r * 3: h = r * 3: j = 1
    For Each v In Split("Переместить вверх//Переместить вниз", rr) '//
        Load Command1(i): With Command1(i)
            .Font.Name = "Wingdings 3"
            .Caption = Choose(j, "p", "q"): j = j + 1
            .ToolTipText = v
            .Move l, t, w, h: t = t + h
            .Visible = 1
            i = i + 1
        End With
    Next
    Call FinalSize
    bl = (UBound(Record) >= 0)
    CtrEnFromNull bl
End Sub
 
Private Sub qSort(ByVal mn As Long, ByVal mx As Long)
    'Быстрая сортировка
    Dim i As Long, l As Long, j As String, s As String
    i = mn: l = mx: j = a1((i + l) \ 2)
    Do Until i > l: Do While a1(i) < j: i = i + 1: Loop: Do While a1(l) > j: l = l - 1: Loop
        If (i <= l) Then s = a1(i): a1(i) = a1(l): a1(l) = s: i = i + 1: l = l - 1
    Loop
    If mn < l Then qSort mn, l
    If i < mx Then qSort i, mx
End Sub
 
Private Sub CtrEnFromNull(ByVal bl As Boolean)
    'Включение / выключение контролов если записи отсутствуют
    For Each v In Controls
        Select Case TypeName(v)
        Case "TextBox", "Label": v.Enabled = bl
        Case "CommandButton"
            If v.Caption <> "Добавить запись" Then v.Enabled = bl
        End Select
    Next
End Sub
 
Private Sub Command1_Click(Index As Integer)
    'Кнопки
    Dim j&, a2$()
    Select Case Command1(Index).Caption
    Case "Выход"
        Unload Me
    Case "Сортировать записи"
        ReDim a1(ls.ListCount - 1)
        For i = 0 To UBound(a1)
            a1(i) = ls.List(i) & rrr & ls.ItemData(i)
        Next
        qSort 0, UBound(a1)
        ls.Clear
        For i = 0 To UBound(a1)
            a2 = Split(a1(i), rrr)
            ls.AddItem a2(0), i
            ls.ItemData(i) = a2(1)
        Next
        ls.ListIndex = 0
    Case "Удалить запись"
        On Error Resume Next
        ReDim r2(UBound(Record) - 1) As Note
        If Err = 9 Then CtrEnFromNull 0: EraseFields
        For i = 0 To UBound(Record)
            With Record(i)
                If .ID <> ls.ItemData(ls.ListIndex) Then
                    r2(j) = Record(i): j = j + 1
                End If
            End With
        Next
        Record = r2
        j = ls.ListIndex
        ls.RemoveItem ls.ListIndex
        ls.ListIndex = j - Abs(j = ls.ListCount)
        
    Case "Добавить запись"
        CtrEnFromNull 1
        On Error Resume Next
        ReDim Preserve Record(UBound(Record) + 1)
        If Err = 9 Then ReDim Record(0)
        CurID = CurID + 1
        CurIndex = UBound(Record)
        With Record(CurIndex)
            .Fam = "Новая фамилия"
            .Name = "Новое имя"
            .Phone = nl
            .Birthday = CDate(32874)
            .ID = CurID
            .Delimiter = rrr
            ls.AddItem .Fam, 0
            ls.ItemData(0) = CurID
            ls.ListIndex = 0
        End With
    Case "p", "q" 'Перемещение фамилий в списке
        With ls
            i = IIf(Command1(Index).ToolTipText = "Переместить вверх", -1, 1)
            j = i + .ListIndex
            If j >= .ListCount Or j < 0 Then Exit Sub
            v = Array(.List(j), .ItemData(j))
            .RemoveItem (.ListIndex + i)
            j = .ListIndex + Abs(i < 0)
            .AddItem v(0), (j)
            .ItemData(j) = v(1)
        End With
    End Select
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    'Конец программы
    SavingAccounts
End Sub
0
Миниатюры
Структура: Вывод на экран информации о человеке, номер телефона которого введен с клавиатуры  
Вложения
Тип файла: rar Работа со структурой Финал.rar (5.0 Кб, 2 просмотров)
11193 / 3566 / 632
Регистрация: 13.02.2009
Сообщений: 10,658
26.02.2016, 17:01 20
ИМХО
абсолютно не нужные строки(беглый взгляд):
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
   For Each v In Split("Фамилия//Имя//Телефон//День рождения", rr)
        Load Label1(i): With Label1(i)
            .AutoSize = 1
            .Caption = v
            .Move l, t, w, h: h = .Height: t = t + h + r
            If .Width > w Then w = .Width
            .Visible = 1
            i = i + 1
        End With
    Next
    
    l = l + w + r: t = r: w = r * WidthFam
    For i = 0 To i - 1
        If Label1(i) <> "День рождения" Then
            Load Text1(i): With Text1(i)
                .Move l, t, w, h:  t = t + h + r
                .Text = ""
                .Visible = 1
            End With
        Else
            w = r * WidthBirthday
            For j = i To i + 2
                Load Text1(j): With Text1(j)
                    .Move l, t, w, h:  l = l + w + r
                    .Text = ""
                    .Visible = 1
                End With
            Next: t = t + h + r
        End If
    Next
    w = r * WidthFam: l = Text1(0).Left
    With Text1(i - 1): h = .Top + .Height + r: End With
    l = l + w + r: t = r
    Set ls = Controls.Add("vb.listbox", "ls"): With ls
        .Move l, t, w, h: t = t + .Height + r
        For i = 0 To UBound(Record)
            .AddItem Record(i).Fam
            .ItemData(i) = Record(i).ID
            If Record(i).ID > CurID Then CurID = Record(i).ID
        Next
        .ListIndex = 0
        .Visible = 1
    End With
    l = r: w = r * 14: h = r * 5: i = 0
    For Each v In Split("Добавить запись//Удалить запись//Сортировать записи//Выход", rr)
        Load Command1(i): With Command1(i)
            .Caption = v
            .Move l, t, w, h: l = l + w + r
            .Visible = 1
            i = i + 1
        End With
    Next
    l = ls.Left + ls.Width + r: t = r: w = r * 3: h = r * 3: j = 1
    For Each v In Split("Переместить вверх//Переместить вниз", rr) '//
        Load Command1(i): With Command1(i)
            .Font.Name = "Wingdings 3"
            .Caption = Choose(j, "p", "q"): j = j + 1
            .ToolTipText = v
            .Move l, t, w, h: t = t + h
            .Visible = 1
            i = i + 1
        End With
    Next
Всё элементарно делается в редакторе и не засоряет код
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2016, 17:01

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Структура "Note", вывод информации о человеке с указанным номером телефона
Описать запись с именем Note, содержащую следующие поля: • Фамилия, имя; • номер телефона; •...

Структуры. Очередь (вывести на экран фамилию человека,где номер телефона введен с клавиатуры)
Помогите пожалуйста добавить к данной задаче -вывести на экран фамилию человека,где номер телефона...

Вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры
Задание - вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип...

Вывести элемент списка номер которого введен с клавиатуры
Вывести элемент списка номер которого введен с клавиатуры


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.