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

Проблема со структурой

03.06.2021, 18:49. Показов 322. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне дано задание "Структура «Музей»: регистрационный номер экспоната, название, автор, год.
Код для этой структуры
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
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
using namespace std;
 
struct muz  // структура музей: инвентарный номер, название, автор, год.  
{
    float nomer;
    char name[30];   
    char avtor[30];
    int god;  
};
 
struct muz mas[30]; //объявляем глобальный массив структур
struct muz tmp; //объявляем  переменную структурного типа
int sch=0; //счетчик полных записей
int er; //переключатель
 
// прототипы функций
int menu();       // прототипы функции меню
void enter_new(); //прототипы функции ввода 
void find();      // прототипы функции поиска
void change();    //прототипы функции изменения
void del();       // прототипы функции удаления
void out();       // прототипы функции вывода
 
 
int menu()
{
    int er;
     cout<<"МЕНЮ:\n";
     cout<<"1-для ввода новой записи\n";
     cout<<"2-для поиска\n";
     cout<<"3-для изменения записи \n"; 
     cout<<"4-для удаления записи \n";
     cout<<"5-для вывода массива на экран\n";
     cout<<"6-для выхода\n";
     cin>>er;
    return er;
}
 
int main()
{
     setlocale(LC_ALL,"Russian");
     while(1)
     { 
         switch(menu())
         { 
           case 1:enter_new();break;
           case 2:find();break;
           case 3:change();break;
           case 4:del();break;
           case 5:out();break;
           case 6:return 0;
           default: cout<<"не верный выбор/n";
         }
     }
}
 
void enter_new() // ф-ция ввода новой структуры 
{
 char c='1';
 while(c=='1')
 {
 
    if(sch<=30) //вводим новую запись только, если счетчик полных записей меньше максимального количества записей
     {
         cout<<"экспонат  "<<sch+1; //вводим номер записи
         cout<<"\n введите регистрационный номер \n";
         cin>>mas[sch].nomer;
         cout<<"введите название \n";
         cin>>mas[sch].name;
         cout<<"введите автора \n";
         cin>>mas[sch].avtor;
         cout<<"введите год\n";
         cin>>mas[sch].god;
         sch++; //увеличиваем счетчик полных записей на ед.
     }else cout<<"введено максимальное количество записей \n";
        cout<<"\n Для продолжения ввода нажниме 1, для выхода в меню 2   \n";
        cin >>c;
 }
}
 
 
 
void find()
{
    int sw, k=0;  // переключатель
    if(sch==0) 
    {
        cout<<"\n Нет запиcей: \n"; 
    }
    else 
    { 
        cout<<"\n Введите: \n"; 
        cout<<"1-поиск по регистрационный номеру \n"; 
        cout<<"2-поиск по названию\n"; 
        cout<<"3-поиск по автору\n"; 
        cout<<"4-поиск по году\n"; 
        cin>>sw; 
        
        if(sw==1 || sw==2 || sw==3 ) 
        {
           
            cout<<" ***дописать поиск  : ****"<<endl;
        }
        if(sw==4)
        {
            int temp1, temp2;
            cout<<"введите год поиска от и до:";
            cin>>temp1>>temp2;
            for (int i=0 ; i<sch ; i++)
            {
                if(temp1<=mas[i].god && temp2>=mas[i].god)
                {
                     k++;
                         cout<<"регистрационный номер:"<<mas[i].nomer<<endl;
                         cout<<"название:"<<mas[i].name<<endl;
                         cout<<"автор:"<<mas[i].avtor<<endl;
                         cout<<"год:"<<mas[i].god<<endl;; 
                         cout<<"____________"<<endl; 
                }
            }   
                if (k==0) cout << "нет данных"<<endl; 
        }   
    }
}
 
void change() //функция изменения записи
{ 
    int c; //номер записи которую нужно изменить
    int per;
    cout<<"\nвведите номер записи для изменения \n";
    cin>> c;
    do
     {
        cout<<"введите : \n";
        cout<<"1-для изменения регистрационного номера\n";
        cout<<"2-для изменения название\n";
        cout<<"3-для изменения автора\n";
        cout<<"4-для изменения года\n";
        cout<<"5-для прекращения\n";
        cin>>per;
        switch (per)
         { 
             case 1: cout<<"\nвведите новый номер\n";
                     cin>>mas[c-1].nomer;
                     break;
             case 2: cout<<"\nвведите новое название\n";
                     cin>>mas[c-1].name;
                     break;
             case 3: cout<<"введите нового автора\n";
                     cin>>mas[c-1].avtor;
                     break;
             case 4: cout<<"введите новый год\n";
                     cin>>mas[c-1].god;
                     break;
             case 5:return;
         }
     }while(1);
}
 
void del() //ф-ция удаления записи 
{
    int d; //номер записи которую нужно удалить 
    cout<<"\nвведите номер записи,которую нужно удалить\n";
    cout<<"если необходимо удалить все записи,нажмите  '99'\n";
    cin>>d;
     if (d!=99)
     { 
        for (int i=(d-1);i<sch;i++) //цикл для удаления заданной записи ,начинаем цикл с удаляемой записи 
        mas[i]=mas[i+1]; //замещаем текущую запись следующей за ней
        sch=sch-1; //уменьшаем счетчик полных записей на  1
     }
     if (d==99) 
     { 
        for(int i=0;i<30;i++)//цикл по всем записям от перой до 30-ой
        mas[i]=tmp; //замещаем каждую структуру в  массиве пустой структурой 
        sch=0; //счетчик структур обнуляем
     }
}
 
void out() //ф-ция вывода записей
{
     //int sw; // переключатель для выбора 
     int k; //номер структуры ,кот. надо вывести 
     if (sch==0) //если счетчик количества структур равен 0 ,то выводим , что нет записей
     {
        cout<<"\nнет записей: \n";
     }
     else
     {
          
                for(int i=0;i<sch;i++) //выводим в цикле все записи
                {
                         cout<< "~ " <<i+1<<" ~"<<endl;
                         cout<<"регистрационный номер:"<<mas[i].nomer<<endl;
                         cout<<"название:"<<mas[i].name<<endl;
                         cout<<"автор:"<<mas[i].avtor<<endl;
                         cout<<"год:"<<mas[i].god<<endl;; 
                         cout<<"____________"<<endl; 
                }
         
     }
}
Подскажите пожалуйста дополнить код там где написано ***дописать поиск: ****
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
void find()
{
    int sw, k=0;  // переключатель
    if(sch==0) 
    {
        cout<<"\n Нет запиcей: \n"; 
    }
    else 
    { 
        cout<<"\n Введите: \n"; 
        cout<<"1-поиск по регистрационный номеру \n"; 
        cout<<"2-поиск по названию\n"; 
        cout<<"3-поиск по автору\n"; 
        cout<<"4-поиск по году\n"; 
        cin>>sw; 
        
        if(sw==1 || sw==2 || sw==3 ) 
        {
           
            cout<<" ***дописать поиск: ****"<<endl;
        }
        if(sw==4)
        {
            int temp1, temp2;
            cout<<"введите год поиска от и до:";
            cin>>temp1>>temp2;
            for (int i=0 ; i<sch ; i++)
            {
                if(temp1<=mas[i].god && temp2>=mas[i].god)
                {
                     k++;
                         cout<<"регистрационный номер:"<<mas[i].nomer<<endl;
                         cout<<"название:"<<mas[i].name<<endl;
                         cout<<"автор:"<<mas[i].avtor<<endl;
                         cout<<"год:"<<mas[i].god<<endl;; 
                         cout<<"____________"<<endl; 
                }
            }   
                if (k==0) cout << "нет данных"<<endl; 
        }   
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2021, 18:49
Ответы с готовыми решениями:

Проблема со структурой
После записи в поле структуры, это же поле структуры пустое Вот код: ion.h: using namespace std; struct Ion_ret {

Проблема с динамической структурой
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; struct Node { int num; char first; char final; int...

проблема со структурой и функциями
Задание: 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2021, 18:49
Помогаю со студенческими работами здесь

Проблема с getline и структурой
Доброго времени суток. Столкнулся со странной проблемой, решения в гугле не нашёл. Сначала думал это баг IntelliSense в Visual Studio,...

Проблема со структурой (struct) при создании текстового файла
Здравствуйте! Столкнулся с проблемой при работе с созданным файлом. Создаю, записываю данные и вывожу. Но данные не записываются, не...

Проблема с программой со структурой (обрабатывает вместо всех элементов только первый)
Приведу сокращенный код, так как программа объемная. struct Students { //тут элементы структуры Students* nextStudent; }; ...

Проблема с подключение font-awesome и структурой подключения файлов
Всем здравствуйте. Главная проблема в подключении иконок font-awesome. Скачал шаблон с templatemonster с помощью wget. Все корректно...

После окончания работы со структурой, она будет почищена сборщиком. Что произойдет со структурой в неуправляемой памяти
Доброго времени суток. Прочитал закрепленный топик &quot;Класс Marshal, использование PInvoke, небезопасный код (unsafe)&quot;. Возник...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru