Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 07.12.2019
Сообщений: 316

Написать класс "Записная книжка" (контейнер List)

06.06.2020, 15:43. Показов 5223. Ответов 2
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Описать класс «записная книжка».
Предусмотреть возможность работы с произвольным числом записей, реализовать поиск необходимой информации по какому - либо признаку
(по фамилии, имени, дате рождения, e - mail, номеру телефона), а также по нескольким признакам одновременно, реализовать добавление и удаление записей,
сортировку по фамилии, доступ к записи по номеру.
Написать программу, демонстрирующую все разработанные элементы класса.

Помогите с методом сортировки по фамилии

C++
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
#include<iostream>
#include<ostream>
#include<string>
#include<list>
#include<ctime>
#include<algorithm>
using namespace std;
class Аbonent
{
protected:
    string fname;
    string lname;
    string e_mail;
    string PhoneNumber;
    string DateofBirth;
public:
    /*Аbonent()
    {
        fname = "NULL";
        lname = "NULL";
        e_mail = "NULL";
        PhoneNumber = "NULL";
        DateofBirth = "NULL";
 
    }*/
    Аbonent()
    {
        fname=this->fname;
        lname = this->lname;
        e_mail =this->e_mail;
        PhoneNumber = this->PhoneNumber;
        DateofBirth = this->DateofBirth;
    }
 
    // void ShowByFewParameters(){}
    void Setlname()
    {
        cout << "введите фамилию" << this->lname << endl;
        cin >> lname;
    }
    string Getlname()
    {
        return lname;
    }
 
    void Setfname()
    {
        cout << "введите имя" << endl;
        cin >> fname;
    }
    string Getfname()
    {
        return fname;
    }
    void Setemail()
    {
        cout << "введите адрес електронной почты" << this->e_mail << endl;
        cin >> e_mail;
    }
    string Getemail()
    {
        return e_mail;
    }
    void SetPhone()
    {
        cout << "введите номер телефона " << this->PhoneNumber << endl;
        cin >> PhoneNumber;
    }
    string GetPhone()
    {
        return PhoneNumber;
    }
    void SetDateofbirth()
    {
        cout << "введите дату рождения" << this->DateofBirth << endl;
        cin >> DateofBirth;
    }
    string GetDateofBirth()
    {
        return DateofBirth;
    }
    void setallINFO()
    {
        Setlname();
        Setfname();
        Setemail();
        SetPhone();
        SetDateofbirth();
    }
 
    friend ostream& operator<< (ostream& out, Аbonent& obj);
    friend istream& operator>>(istream& in, Аbonent& obj);
};
std::ostream& operator<< (std::ostream& out, Аbonent& obj)
{
    out << obj.lname << endl;
    out << obj.fname << endl;
    out << obj.e_mail << endl;
    out << obj.PhoneNumber << endl;
    out << obj.DateofBirth << endl;
    return out;
}
std::istream& operator>>(std::istream& in, Аbonent& obj)
{
    in >> obj.lname;
    in >> obj.DateofBirth;
    in >> obj.fname;
    in >> obj.e_mail;
    in >> obj.PhoneNumber;
    return in;
}
class Notebook
{
private:
    list<Аbonent>Note;
  
public:
    string lname = "NULL";
    /*Notebook()
    {
        Note.clear();
    }*/
    void add_client()
    {
        //Добавление новой записи
        Аbonent* tmp = new Аbonent();
        tmp->setallINFO();
        this->Note.push_back(*tmp);
        delete tmp;
    }
    void add_client(Аbonent tmp)
        //перегрузка метода добавления новой записи
    {
        this->Note.push_back(tmp);
    }
    //вывод всех записей
    void Output()
    {
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            cout << *IT << endl;
        }
    }
    void SearchByFname(string F)
    {
        bool f = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (F == (*IT).Getfname())
                cout << *IT << endl;
            f = true;
        }
        if (!f)
            cout << "нет такого имени в записной книжке" << endl;
    }
    void SearchByLname(string L)
    {
        bool l = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (L == (*IT).Getlname())
                cout << *IT << endl;
            l = true;
        }
        if (!l)
            cout << "нет такой фамилии в записной книжке" << endl;
    }
    void SearchByEmail(string E)
    {
        bool e = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (E == (*IT).Getemail())
                cout << *IT << endl;
            e = true;
        }
        if (!e)
            cout << "нет такой електронной почты в записной книжке" << endl;
    }
    void SearchByPhoneNumber(string P)
    {
        bool p = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (P == (*IT).GetPhone())
                cout << *IT << endl;
            p = true;
        }
        if (!p)
            cout << "нет такого номера телефона в записной книжке" << endl;
    }
    void SearchByDateofBirth(string D)
    {
        bool d = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (D == (*IT).Getemail())
                cout << *IT << endl;
            d = true;
        }
        if (!d)
            cout << "нет такой даты в записной книжке" << endl;
    }
   /* bool Lname(Notebook& a1, Notebook& a2)
    {
        return a1.lname < a2.lname;
    }*/
    void sort() {}//сортировка по фамилии
    void SortBylname() 
    {
        list<Аbonent>::iterator IT = Note.begin();
        /* std::sort(Note.begin(),Note.end());
        for(N)*/
        sort(Note.begin,Note.end(), [](Аbonent &N1,Аbonent &N2) 
            {
                bool N1.
            });
    }
};
void Menu()
{
    cout << "Заполните пожалуйста данные" << endl;
    cout << "1 - Добавить новую запись" << endl;
    cout << "2 - Показать информацию по имени" << endl;
    cout << "3 - Показать информацию по фамилии" << endl;
    cout << "4 - Показать информацию по Дате рождения" << endl;
    cout << "5 - Показать информацию по електронной почте" << endl;
    cout << "6 - Сортировать по фамилии" << endl;
    cout << "7 - Показать информацию по нескольким признакам" << endl;
    cout << "8 - Удалить информацию" << endl;
    cout << "9 - EXIT" << endl;
}
int main()
{
    setlocale(LC_ALL, "rus");
    Аbonent A;
    Notebook N;
    string TMP;
    list<Аbonent>::iterator tmp_abonent;
    int Menu = 0;
    int Sub_Menu;
    do
    {
        system("cls");
        cin >> Menu;
        switch (Menu)
        {
        case 1:
            cout << "добавление новой записи" << endl;
            N.add_client();
        case 2:
            cout << "Показ информации по имени" << endl;
            cout << "Введите имя" << endl;
            cin >> TMP;
            N.SearchByFname(TMP);
            cout << "Введите другое имя" << endl;
        case 3:
            cout << "Показ информации по фамилии" << endl;
            cout << "Введите фамилию" << endl;
            cin >> TMP;
            N.SearchByLname(TMP);
            cout << "Введите другую фамилию" << endl;
        case 4:
            cout << "Показ информации по Дате Рождения" << endl;
            cout << "Введите Дату Рождения" << endl;
            cin >> TMP;
            N.SearchByDateofBirth(TMP);
            cout << "Введите другую дату рождения" << endl;
        case 5:
            cout << "Показ информации по Електронной почте" << endl;
            cout << "Введите адрес електронной почты" << endl;
            cin >> TMP;
            N.SearchByEmail(TMP);
            cout << "Введите другой адрес електронной почты" << endl;
        case 6:
            cout << "Сортировка по фамилии" << endl;
            N.SortBylname;
        case 7:
            cout << "Показ информации по нескольким признакам" << endl;
            cout << "выберите признак1";
 
            cin >> Sub_Menu;
            if (Sub_Menu == 0)
            {
                cout << "Выберите другой пункт меню" << endl;
            }
            
        }
    } while (Menu != 9);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2020, 15:43
Ответы с готовыми решениями:

Класс Записная книжка
Определить класс Записная книжка, содержащая фамилию и имя, номер телефона, день рождения. Определить методы доступа к этим полям и...

Написать программу «Моя записная книжка»
Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате...

Реализовать класс "записная книжка" с конструктором и деструктором
1. Написать класс, объектами которого являются записи в записной книжке. Каждая запись состоит из следующих полей: имя, фамилия, номер...

2
0 / 0 / 0
Регистрация: 07.12.2019
Сообщений: 316
09.03.2021, 02:06  [ТС]
В Xcode на Макбуке (на новом процессоре М1)работает, а в онлайн компиляторах не работает.
В чем причина?

C++
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
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
#include<iostream>
#include<ostream>
#include<string>
#include<list>
#include<iterator>
#include<algorithm>
using namespace std;
class Аbonent
{
protected:
    string fname;
    string lname;
    string e_mail;
    string PhoneNumber;
    string DateofBirth;
public:
    Аbonent()
    {
        fname = "NULL";
        lname = "NULL";
        e_mail = "NULL";
        PhoneNumber = "NULL";
        DateofBirth = "NULL";
    }
    Аbonent(string f, string l,string e,string P, string D)
    {
        fname=f;
        lname = l;
        e_mail =e;
        PhoneNumber = P;
        DateofBirth = D;
    }
    void Setlname()
    {
        cout << "введите фамилию"<< endl;
        cin >> lname;
    }
    string Getlname()
    {
        return this->lname;
    }
 
    void Setfname()
    {
        cout << "введите имя" << endl;
        cin >> fname;
    }
    string Getfname()
    {
        return this->fname;
    }
    void Setemail()
    {
        cout << "введите адрес електронной почты" << endl;
        cin >> e_mail;
    }
    string Getemail()
    {
        return this->e_mail;
    }
    void SetPhone()
    {
        cout << "введите номер телефона " << endl;
        cin >> PhoneNumber;
    }
    string GetPhone()
    {
        return PhoneNumber;
    }
    void SetDateofbirth()
    {
        cout << "введите дату рождения"<< endl;
        cin >> DateofBirth;
    }
    string GetDateofBirth()
    {
        return this->DateofBirth;
    }
    void setallINFO()
    {
        Setlname();
        Setfname();
        Setemail();
        SetPhone();
        SetDateofbirth();
    }
    friend ostream& operator<< (ostream& out, Аbonent& obj);
    friend istream& operator>>(istream& in, Аbonent& obj);
};
std::ostream& operator<< (std::ostream& out, Аbonent& obj)
{
    out << obj.lname << endl;
    out << obj.fname << endl;
    out << obj.e_mail << endl;
    out << obj.PhoneNumber << endl;
    out << obj.DateofBirth << endl;
    return out;
}
std::istream& operator>>(std::istream& in, Аbonent& obj)
{
    in >> obj.lname;
    in >> obj.DateofBirth;
    in >> obj.fname;
    in >> obj.e_mail;
    in >> obj.PhoneNumber;
    return in;
}
bool Sr(Аbonent a1, Аbonent a2)//предикат для метода сортировки
{
    return a1.Getlname() > a2.Getlname();
}
class Notebook
{
private:
    list<Аbonent>Note;
  
public:
    string lname = "NULL";
    void add_client()
    {
       /* Добавление новой записи*/
        Аbonent* tmp = new Аbonent();
        tmp->setallINFO();
        this->Note.push_back(*tmp);
        delete tmp;
    }
    void add_client(Аbonent tmp) /* перегрузка метода добавления новой записи*/
    {
        this->Note.push_back(tmp);
    }
  /*  вывод всех записей*/
    void Output()
    {
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            cout << *IT << endl;
        }
    }
    void SearchByFname(string F)//поиск по имени
    {
        bool f = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (F == (*IT).Getfname())
                cout << *IT << endl;
            f = true;
        }
        if (!f)
            cout << "нет такого имени в записной книжке" << endl;
    }
    void SearchByLname(string L)//поиск по фамилии
    {
        bool l = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (L == (*IT).Getlname())
                cout << *IT << endl;
            l = true;
        }
        if (!l)
            cout << "нет такой фамилии в записной книжке" << endl;
    }
    void SearchByEmail(string E)//поиск по адресу електронной почты
    {
        bool e = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (E == (*IT).Getemail())
                cout << *IT << endl;
            e = true;
        }
        if (!e)
            cout << "нет такой електронной почты в записной книжке" << endl;
    }
    void SearchByPhoneNumber(string P)//поиск по номеру телефона
    {
        bool p = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (P == (*IT).GetPhone())
                cout << *IT << endl;
            p = true;
        }
        if (!p)
            cout << "нет такого номера телефона в записной книжке" << endl;
    }
    void SearchByDateofBirth(string D)//поиск по дате рождения
    {
        bool d = false;
        list<Аbonent>::iterator IT = Note.begin();
        for (; IT != Note.end(); IT++)
        {
            if (D == (*IT).GetDateofBirth())
                cout << *IT << endl;
            d = true;
        }
        if (!d)
            cout << "нет такой даты в записной книжке" << endl;
    }
    void SortBylname()//сортировка по фамилии
    {
 
        Note.sort(Sr);
 
    }
    void searchinfo(string value)//поиск по нескольким признакам
    {
        list<Аbonent>::iterator iter = Note.begin();
        for (; iter != Note.end(); iter++)
        {
            if ((*iter).GetDateofBirth() == value ||
                ((*iter).Getemail() == value) ||
                ((*iter).Getfname() == value) ||
                ((*iter).Getlname() == value) ||
                ((*iter).GetPhone() == value))
            {
                cout << *iter << endl;
            }
        }
    };
    void deleteinfo(string value) //удаление записи
    {
        list<Аbonent>::iterator iter = Note.begin();
        for (; iter != Note.end(); iter++)
        {
            if ((*iter).GetDateofBirth() == value ||
                ((*iter).Getemail() == value) ||
                ((*iter).Getfname() == value) ||
                ((*iter).Getlname() == value) ||
                ((*iter).GetPhone() == value))
            {
                cout << "Найдена запись" << endl;
                cout << *iter << endl;
                cout << "Удалить?(1 - да, 0 - нет)" << endl;
                int a;
                cin >> a;
                if (a != 0)
                    Note.erase(iter);
                cout << "запись удалена" << endl;
                break;
            }
        }
    }
};
void Menu_()
{
    cout << "Заполните пожалуйста данные" << endl;
    cout << "1 - Добавить новую запись" << endl;
    cout << "2 - Показать информацию по имени" << endl;
    cout << "3 - Показать информацию по фамилии" << endl;
    cout << "4 - Показать информацию по Дате рождения" << endl;
    cout << "5 - Показать информацию по електронной почте" << endl;
    cout << "6 - Показать информацию по телефону" << endl;
    cout << "7 - Сортировать по фамилии" << endl;
    cout << "8 - Показать информацию по нескольким признакам" << endl;
    cout << "9 - Удалить информацию" << endl;
    cout << "10 - EXIT" << endl;
}
int main()
{
    setlocale(LC_ALL, "rus");
    Аbonent A;
    Notebook N;
    string TMP;
    list<Аbonent>::iterator IT;
    int Menu = 0;
    int param;
    do
    {
        system("cls");
        Menu_();
        cin >> Menu;
        switch (Menu)
        {
        case 1:
            cout << "добавление новой записи" << endl;
            N.add_client();
            break;
        case 2:
            cout << "Показ информации по имени" << endl;
            cout << "Введите имя" << endl;
            cin >> TMP;
            N.SearchByFname(TMP);
            cout << "Введите другое имя" << endl;
            break;
        case 3:
            cout << "Показ информации по фамилии" << endl;
            cout << "Введите фамилию" << endl;
            cin >> TMP;
            N.SearchByLname(TMP);
            cout << "Введите другую фамилию" << endl;
            break;
        case 4:
            cout << "Показ информации по Дате Рождения" << endl;
            cout << "Введите Дату Рождения" << endl;
            cin >> TMP;
            N.SearchByDateofBirth(TMP);
            cout << "Введите другую дату рождения" << endl;
            break;
        case 5:
            cout << "Показ информации по Електронной почте" << endl;
            cout << "Введите адрес електронной почты" << endl;
            cin >> TMP;
            N.SearchByEmail(TMP);
            cout << "Введите другой адрес електронной почты" << endl;
            break;
        case 6:
            cout << "Показ информации по номеру телефона" << endl;
            cout << "Введите номер телефона" << endl;
            cin >> TMP;
            N.SearchByPhoneNumber(TMP);
            cout << "Введите другой номер телефона" << endl;
            break;
        case 7:
            cout << "Сортировка по фамилии" << endl;
            N.SortBylname();
            N.Output();
            break;
        case 8:
            cin >> TMP;
            N.searchinfo(TMP);
            cout << "Поиск информации завершен" << endl;
            break;
        case 9:
            cin >> TMP;
            N.deleteinfo(TMP);  
            break;
        }
        system("pause");
    } 
    while (Menu != 10);
    system("pause");
    return 0;
}
0
249 / 79 / 31
Регистрация: 29.03.2020
Сообщений: 497
09.03.2021, 04:52
В слове Abonent, А не английская
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2021, 04:52
Помогаю со студенческими работами здесь

Разработать класс "Записная книжка"
Разработать класс &quot;Записная книжка&quot;. Используйте массив для хранения записей.Реализуйте методы добавления, удаления, поиска телефона по...

Описать класс "Записная книжка"
Описать класс &quot;записная книжка&quot;. Предусмотреть возможность работы с произвольным числом записи по какому либо признаку (например, по...

Написать программу "Моя записная книжка" с применением контейнерного класса map
Предусмотреть возможность работы с произвольным числом записей,поиска записи по какому-либо признаку(например по фамилии,дате рождения или...

Записная книжка
Здравствуйте Требовалось написать программу &quot;записная книжка&quot;,используя односвязный список.Почти сделал за исключением одного - в файл...

Записная книжка в Turbo c++
На форуме нет ответов или кодов с программой записная книжка. А в интернете нет перевода текста из Visial studio в Turbo c++. Буду...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru