Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 12.12.2019
Сообщений: 81

Объявить структуру «Адрес»

27.08.2020, 23:37. Показов 1368. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объявить структуру «Адрес» с такими полями: название населенного пункта и название
улицы, реализованные в виде символьных строк; номер дома и номер квартиры - целые числа.
Создать односвязный список из переменных такого структурного типа...

Далее в задании шли функции, которые должна была выполнять программа, с этим все готово, но возникли проблемы с тем, чтобы объявить номера домов и квартиры...так как вспомнила я про них, уже после написания всего остального. Помогите вставить туда номера домов и квартир.

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
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
#include "fstream"
#include "iostream"
#include <windows.h>
using namespace std;
 
struct Spisok
{
    char Street[80];
    char Punkt[80];
    int House[1000];
    int Room[1000];
    Spisok* link;
};
Spisok* first = NULL;
 
void CreateNew(Spisok* sp, int count);
void Add(Spisok* sp, int);
void Vivod(Spisok* sp);
void SchetPunkt(Spisok* Sp, char punkt[80], int count);
void AddAfter(Spisok* Sp, int count, int k);
void SwapElements(Spisok* sp, int count, int, int);
void Delete(Spisok* sp, int count, int k);
void SavetoFile(Spisok* sp);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Spisok* Main = new Spisok;
    int count;
    cout << "\nВведите размер списка: ";
    cin >> count;
    for (int i = 0; i < count; i++)
    {
        CreateNew(Main, i);
    }
    int k;
    char otvet[80];
    do
    {
        do
        {
            cout << "\n\nГлавное меню\n";
            cout << "1 - Добавить элемент в конец списка\n";
            cout << "2 - Вывод содержимого списка\n";
            cout << "3 – Подсчет количества элементов с заданного пункта\n";
            cout << "4 - Добавление нового элемента после определенного номера\n";
            cout << "5 - Поменять местами k-й и j-й элементы\n";
            cout << "6 - Удалить элемент перед k-м\n";
            cout << "7 – Сохранить список в файл\n";
            cout << "8 – Выход из программы\n";
            cin >> otvet;
            k = atoi(otvet);
        } while (k != 1 && k != 2 && k != 3 && k != 4 && k != 5 && k != 6 && k != 7 && k != 8);
        system("cls");
        switch (k)
        {
        case 1: { Add(Main, count); count++; }
              break;
        case 2:Vivod(Main);
            break;
        case 3:
        {
            char punkt[80];
            cout << "Введите пункт, который ищите: ";
            cin.ignore();
            cin.getline(punkt, 80);
            SchetPunkt(Main, punkt, count);
        }
        break;
        case 4:
        {
            int k;
            cout << "Введите номер после которого нужно добавить элемент: ";
            cin >> k;
            while (k > count - 1 || k < 0)
            {
                cout << "Введите корректный номер после которого нужно добавить элемент: ";
                cin >> k;
            }
            AddAfter(Main, count, k); count++;
        }
        break;
        case 5:
        {
            int k, j;
            cout << "Введите номер первого элемента: ";
            cin >> k;
            while (k > count - 1 || k < 0)
            {
                cout << "Введите корректный номер первого элемента: ";
                cin >> k;
            }
            cout << "Введите номер второго элемента: ";
            cin >> j;
            while (j > count - 1 || j < 0)
            {
                cout << "Введите корректный номер второго элемента: ";
                cin >> j;
            }
            SwapElements(Main, count, k, j);
        }
        break;
        case 6:
        {
            int k;
            cout << "Введите номер, перед которым нужно удалить элемент: ";
            cin >> k;
            while (k > count - 1 || k < 0)
            {
                cout << "Введите корректный номер удаляемого элемента: ";
                cin >> k;
            }
            Delete(Main, count, k);
            count--;
        }
        break;
        case 7: SavetoFile(Main);
            break;
        case 8: return 0;
        }
    } while (1);
    return 0;
}
 
void CreateNew(Spisok* Sp, int count)
{
    if (first == NULL)
    {
        first = new (Spisok);
        cout << "\nВведите название улицы : ";
        cin.ignore();
        cin.getline(first->Street, 80);
        cout << "Введите пункт : ";
        cin.getline(first->Punkt, 80);
        cout << "\nВведите номер дома : ";
        cin.getline(first->House, 80);
        cout << "Введите номер квартиры : ";
        cin.getline(first->Room, 80);
        Sp->link = NULL;
    }
    else
    {
        Sp = first;
        while (Sp->link != NULL)
        {
            Sp = Sp->link;
        }
        Sp->link = new(Spisok);
        Sp = Sp->link;
        cout << "\nВведите название улицы : ";
        cin.getline(Sp->Street, 80);
        cout << "Введите пункт : ";
        cin.getline(Sp->Punkt, 80);
        cout << "\nВведите номер дома : ";
        cin.ignore();
        cin.getline(Sp->House, 1000);
        cout << "Введите номер квартиры : ";
        cin.getline(Sp->Room, 1000);
        Sp->link = NULL;
    }
}
 
void Add(Spisok* Sp, int count)
{
    Sp = first;
    while (Sp->link != NULL)
    {
        Sp = Sp->link;
    }
    Sp->link = new(Spisok);
    Sp = Sp->link;
    cout << "\nВведите название улицы : ";
    cin.ignore();
    cin.getline(Sp->Street, 80);
    cout << "Введите пункт : ";
    cin.getline(Sp->Punkt, 80);
    cout << "\nВведите номер дома : ";
    cin.ignore();
    cin.getline(Sp->House, 1000);
    cout << "Введите номер квартиры : ";
    cin.getline(Sp->Room, 1000);
    Sp->link = NULL;
 
    Vivod(Sp);
}
 
void Vivod(Spisok* sp)
{
    sp = first;
    while (sp != NULL)
    {
        cout << sp;
        cout << " Aдрес:  ";
        cout << sp->Street << "  ";
        cout << sp->Punkt << '\n';
        sp = sp->link;
    }
}
 
void SchetPunkt(Spisok* Sp, char punkt[80], int count)
{
    int counter = 0;
    Sp = first;
    for (int i = 0; i < count; i++)
    {
        if (strcmp(Sp->Punkt, punkt) == 0)
        {
            counter++;
        }
        Sp = Sp->link;
    }
    if (counter == 1)
    {
        cout << "В списке найден 1 адрес с такой улицей!";
    }
    else
    {
         cout << "В списке найдено " << counter << " адреса!";
    }
}
 
void AddAfter(Spisok* Sp, int count, int k)
{
    Sp = first;
    for (int i = 0; i < k; i++)
    {
        Sp = Sp->link;
    }
    Spisok* Sp2 = new Spisok;
    Sp2->link = Sp->link;
    Sp->link = Sp2;
    cout << "\nВведите название улицы : ";
    cin.ignore();
    cin.getline(Sp2->Street, 80);
    cout << "Введите название пункта : ";
    cin.getline(Sp2->Punkt, 80);
    cout << "\nВведите номер дома : ";
    cin.ignore();
    cin.getline(Sp->House, 1000);
    cout << "Введите номер квартиры : ";
    cin.getline(Sp->Room, 1000);
 
    Vivod(Sp);
}
 
void SwapElements(Spisok* sp, int count, int k, int j)
{
    sp = first;
    Spisok* Sp1 = new Spisok;
    Spisok* Sp2 = new Spisok;
    Spisok* Sp11 = new Spisok;
    Spisok* Sp22 = new Spisok;
    Sp1 = first;
    Sp2 = first;
 
    for (int i = 0; i < count; i++)
    {
        if (i == k - 1)
        {
            Sp1 = sp;
        }
        if (i == j - 1)
        {
            Sp2 = sp;
        }
        if (i == k)
        {
            Sp11 = sp;
        }
        if (i == j)
        {
            Sp22 = sp;
        }
        sp = sp->link;
    }
    if ((k == j - 1 || j == k - 1) && (k == 0 || j == 0))
    {
        swap(Sp11->link, Sp22->link);
        first = Sp22;
        Sp22->link = Sp11;
    }
    else
    {
        if (k == j - 1 || j == k - 1)
        {
            swap(Sp11->link, Sp22->link);
            Sp22->link = Sp11;
            Sp1->link = Sp22;
        }
        else
        {
            if (k == 0 || j == 0)
            {
                swap(Sp11->link, Sp22->link);
                first = Sp22;
                Sp2->link = Sp11;
            }
            else
            {
                swap(Sp11->link, Sp22->link);
                swap(Sp1->link, Sp2->link);
            }
        }
    }
 
    Vivod(sp);
}
 
void Delete(Spisok* sp, int count, int k)
{
    sp = first;
    Spisok* qw = sp;
    Spisok* fg;
    for (int i = 0; i < k - 1; i++)
    {
        qw = sp->link;
    }
    fg = sp;
    if (qw != sp)
    {
 
        while (fg->link != qw)
            fg = fg->link;
        fg->link = qw->link;
        delete qw;
        qw = fg;
 
        Vivod(sp);
    }
    else
    {
        if (k == 1)
        {
            first = qw->link;
            delete qw;
            qw = NULL;
 
            Vivod(sp);
        }
        else
        {
            cout << "Это первый элемент. Элемент перед ним удалить нельзя!\n";
        }
    }
}
 
void SavetoFile(Spisok* sp)
{
    int c = 0;
    sp = first;
    ofstream fout("Result.txt", ios::app);
    while (sp != NULL)
    {
        fout << c << ". Адрес :  ";
        fout << sp->Street << "  ";
        fout << sp->Punkt << '\n';
        sp = sp->link;
        c++;
    }
    cout << "Запись об этом адресе сохранена в файле \n";
    fout.close();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.08.2020, 23:37
Ответы с готовыми решениями:

Объявить структуру «Адрес»
Объявить структуру «Адрес» с такими полями: название населенного пункта и название улицы, реализованные в виде символьных строк; номер...

Как правильно объявить структуру
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5...

Как правильно объявить внешнюю структуру
Начал изучение stm32 и возник вопрос Не ругайтесь за лузерский вопрос Задача: по внешнему прерыванию передать 1 байт по SPI extern...

21
фрилансер
 Аватар для Алексей1153
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,422
28.08.2020, 13:15
Студворк — интернет-сервис помощи студентам
Annemesski, окай, посыпаю свою аналоговую голову цифровым пеплом

Не по теме:

там не скорую, а дворников надо!

0
28.08.2020, 13:16

Не по теме:

Цитата Сообщение от Алексей1153 Посмотреть сообщение
Может, это у него список домов
всё было бы хорошо, если бы сам ТС не спрашивал, как добавить дом и квартиру )

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2020, 13:16

Объявить указатель на структуру внутри структуры
Объявить указатель на структуру внутри структуры. Добавлено через 5 часов 24 минуты Просто отрывок кода.

Как правильно объявить структуру в файле (модуле)?
Возникла проблема такая проблема в файле Queue.h объявлена структура и указатели на нее #pragma once #ifndef QUEUE_H #define...

Почему нельзя объявить указатель на шаблонную структуру?
template &lt;class T&gt; typedef struct per { T znach; int kol_vo_povt; }* p; int main() { per&lt;int&gt; k; }

Структуры. Как объявить структуру, чтобы работать с ней?
struct Book { struct { char F, I, O; } FIO; struct { char city, street, house, flat; } ADDRESS; char number; };

Объявить структуру содержащую данные для построения круга
Задача: описать переменную, которая содержит все данные для построения круга в декартовой системе координат. Записать в файл информацию о...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru