Форум программистов, компьютерный форум CyberForum.ru

Динамический массив структур - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 80, средняя оценка - 4.93
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
07.10.2009, 22:33     Динамический массив структур #1
Реализовать программу для хранения информации о пациентах больницы. Предусмотреть следующие поля: ФИО, диагноз,
Для пациентов, стационарно находящихся в больнице указать номер палаты, последнюю измеренную температуру, назначенные лекарства.
Для пациентов, находящихся на домашнем лечении указать домашний адрес, дату последнего посещения.
Предусмотреть отображение всех пациентов, добавление и удаление элемента из списка.
Прога почти готова интересует как сделать вот это добавление и удаление элемента из списка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2009, 22:33     Динамический массив структур
Посмотрите здесь:

Динамический массив структур C++
C++ Динамический массив структур
Динамический массив структур C++
C++ Динамический массив структур
C++ Динамический массив структур
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.10.2009, 22:52     Динамический массив структур #2
Хакер, если готова, то код в студию
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
07.10.2009, 22:58  [ТС]     Динамический массив структур #3
тут
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
#include <iostream.h>
#include <conio.h> // getch()
#include <string.h> 
#include<windows.h>  // Для перевода в русский.
#include <locale.h> /* Для русского языка */ 
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
//-----------------------------------------------------------------------------------------------------
// Функция перевода консольного языка в русский.
 
void rus(char* text)
 
 {
   char t[100];
   CharToOem(text,t);
   cout<<t;
 }
//-----------------------------------------------------------------------------------------------------
// Функция отображения меню. 
 
void show_menu() 
 {
      
 }
//-----------------------------------------------------------------------------------------------------
// Функция отображения раздела авторов:
         
void show_avt()
 {
     
 }
//-----------------------------------------------------------------------------------------------------
   const int col=2; //количество больных
   int i;
   struct{
       char Imya[30], Familiya[30], Otchestvo[30], Diagnoz[30], Vid[30], Lekarstva[100], Palata[30], Temp[30], Adress[50], Data[35];
       int flag;
   } bolnie[col]; 
 
 
//-----------------------------------------------------------------------------------------------------
//Функция ввода:
 
void enter()
{
/*создали структуру и тут же объявили массив, каждый 
элемент которого представляет собою описанную выше структуру*/
   cout << "\n\t\t\t\t";rus("Вводим данные:");cout << "\n\n"; /*сообщаем пользователю, что 
    он должен ввести данные */
 
   for (i=0; i < col; i++)
   {  //производим ввод данных
      
      cout << "\n\t";rus("Фамилия:");cout << "";
      cin>> bolnie[i].Familiya;
 
      cout << "\t";rus("Имя:");cout << "";
      cin >> bolnie[i].Imya;
 
      cout << "\t";rus("Отчество:");cout << "";
      cin >> bolnie[i].Otchestvo;
 
      cout << "\t";rus("Заключение медиков:");cout << "";
      cin >> bolnie[i].Diagnoz;
 
      cout << "\t";rus("1-Стационар. 2-Дом. :");cout << "";
     cin >> bolnie[i].flag;
     if (bolnie[i].flag == 1)
           {
      cout << "\t";rus("Палата:");cout << "";
      cin >> bolnie[i].Palata;
 
      cout << "\t";rus("Температура:");cout << "";
      cin >> bolnie[i].Temp;
      
      cout << "\t";rus("Лекарства:");cout << "";
      cin >> bolnie[i].Lekarstva;
           };
     if (bolnie[i].flag == 2)
           {
      cout << "\t";rus("Адрес:");cout << "";
      cin >> bolnie[i].Adress;
 
      cout << "\t";rus("Дата последнего визита:");cout << "";
      cin >> bolnie[i].Data;
     };
   }
}
//-----------------------------------------------------------------------------------------------------
//Функция изменения:
 
 void rewrite()
  {
   cout << "\n\t";rus("Изменить какого пациента по списку?");cout << "";
   cout << "\n\t";rus("Введите номер :");cout << "";
   int n;
   cin >> n;
   n=n - 1; 
   //-----------------------------------
   cout << "\n\t";rus("Информация о пациентах:");cout << "";
     cout << "\n\t " << n << ")";rus("пациент:");
 
      cout << "\n\t";rus("Фамилия:");cout << "";
      cin>> bolnie[n].Familiya;
 
      cout << "\t";rus("Имя:");cout << "";
      cin >> bolnie[n].Imya;
 
      cout << "\t";rus("Отчество:");cout << "";
      cin >> bolnie[n].Otchestvo;
 
      cout << "\t";rus("Заключение медиков:");cout << "";
      cin >> bolnie[n].Diagnoz;
 
      cout << "\t";rus("1-Стационар. 2-Дом. :");cout << "";
     cin >> bolnie[n].flag;
     if (bolnie[n].flag == 1)
           {
      cout << "\t";rus("Палата:");cout << "";
      cin >> bolnie[n].Palata;
 
      cout << "\t";rus("Температура:");cout << "";
      cin >> bolnie[n].Temp;
      
      cout << "\t";rus("Лекарства:");cout << "";
      cin >> bolnie[n].Lekarstva;
           };
     if (bolnie[n].flag == 2)
           {
      cout << "\t";rus("Адрес:");cout << "";
      cin >> bolnie[n].Adress;
 
      cout << "\t";rus("Дата последнего визита:");cout << "";
      cin >> bolnie[n].Data;
           };
 
    cout << "\n\t";rus("Информация о пациенте изменена:");cout << "";
    getch();
  }
 
//-----------------------------------------------------------------------------------------------------
//Функция вывода:
void vivod()
{
cout << "\n==========";rus("==========     Список больных     ====================");cout << "\n";
   //были найдены следующие записи
   for (i=0; i < col; i++)
   {
              if(bolnie[i].flag ==1)
              {
      cout << "\t";rus("Фио:");cout <<"\t"<<bolnie[i].Familiya<<"   "<<bolnie[i].Imya<<"   "<<bolnie[i].Otchestvo<<"\n";
      
      cout << "\t";rus("Палата:");cout <<bolnie[i].Palata<<"\n";
 
      cout << "\t";rus("Температура:");cout <<bolnie[i].Temp<<"\n";
 
      cout << "\t";rus("Лекарства:");cout <<bolnie[i].Lekarstva<<"\n";
      
      cout << "\t";rus("Вид лечения:");cout <<"";rus("Стационар");cout<<"\n";
 
      cout << "\t";rus("Заключение медиков:");cout <<bolnie[i].Diagnoz<<"\n";
 
      cout << endl;
              };
              if(bolnie[i].flag ==2)
              {
      cout << "\t";rus("Фио:");cout <<"\t"<<bolnie[i].Familiya<<"   "<<bolnie[i].Imya<<"   "<<bolnie[i].Otchestvo<<"\n";
      
      cout << "\t";rus("Адрес:");cout <<bolnie[i].Adress<<"\n";
 
      cout << "\t";rus("Дата последнего визита:");cout <<bolnie[i].Data<<"\n";
 
      cout << "\t";rus("Вид лечения:");cout <<"";rus("Домашнее");cout<<"\n";
 
      cout << "\t";rus("Заключение медиков:");cout <<bolnie[i].Diagnoz<<"\n";
 
      cout << endl;
              };
    }
}
//-----------------------------------------------------------------------------------------------------
//Функция выбора:
void vibor()
{
char cV;
  cout << "\n\t";rus("Делаем выбор:");cout<<"\n";
  cout << "\t";rus("1.Ввод 2.Вывод 3.Переписать:");cout<<"\n\t";
  cin>>cV;
  switch (cV) {
    case '1':
      enter();
      vibor();
      break;
    case '2':
      vivod();
      vibor();
      break;
    case '3':
      rewrite();
      vibor();
      break;
    default:
      cout<<"Goodbye\n";
  }
}
 
//-----------------------------------------------------------------------------------------------------
// Тело программы: 
void main()
{
show_menu();
show_avt();
vibor();
}
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 00:10     Динамический массив структур #4
не кидай ссылки на файлобменники, а прикрепляй к посту или пости весь код

Добавлено через 7 минут
Это меня зрение подводит или остальные тоже не наблюдают здесь АТД список, а только обычный статический массив?
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
08.10.2009, 00:11  [ТС]     Динамический массив структур #5
Знаете как реализовать?По идее надо поработать с динам.структурой.

Добавлено через 1 минуту
Можно поконкретнее что такое АТД...я еще нуб в с++
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 00:23     Динамический массив структур #6
АТД список - Абстрактный Тип Данных список. Я понял, что тебе он не нужен.
C++
1
2
3
4
5
6
   int col = 100; //количество больных
   int i;
   struct bolnie {
           char Imya[30], Familiya[30], Otchestvo[30], Diagnoz[30], Vid[30], Lekarstva[100], Palata[30], Temp[30], Adress[50], Data[35];
           int flag;
   };
потом в мейне пишешь
C++
1
bolnie* b = new bolnie[col];
Для добавления просто новому b[i] присваиваешь некоторые данные в соответствующие поля и счетчик ввода увеличиваешь на 1. Для удаления смещай начиная с index + 1 вправо на один элемент и уменьшай счетчик ввода на 1. Выводить все элементы начиная от 0 и заканчивая значением счетчика ввода.
Хакер
6 / 6 / 0
Регистрация: 15.03.2009
Сообщений: 83
08.10.2009, 00:35  [ТС]     Динамический массив структур #7
Можно чуть подробнее? я не догоняю немного
Sich_Taras
14 / 14 / 1
Регистрация: 08.10.2009
Сообщений: 114
08.10.2009, 04:01     Динамический массив структур #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int MAXN = 512;
const int MAXD = 512;
class pacient {
char* Name;
char* Diahnoz;
//.....
public:
pacient()
{
Name = new char [MAXN];
Diahnoz = new char[MAXD];
}
//and methods ....
 
};
Добавлено через 1 минуту
C++
1
2
3
4
5
6
int main()
{
  Pacient* array = new Pacient [MAXP];
  //...
  return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.10.2009, 04:43     Динамический массив структур #9
M128K145,

Цитата Сообщение от M128K145 Посмотреть сообщение
Для удаления смещай начиная с index + 1 вправо на один элемент и уменьшай счетчик ввода на 1.
Может правильно так?:
Для удаления смещай начиная с index + 1 влево на один элемент и уменьшай счетчик ввода на 1.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.10.2009, 10:00     Динамический массив структур #10
valeriikozlov, да, перепутал маленько))) со мной бывает такое - стороны путаю, спасибо
Uwiii
Сообщений: n/a
04.03.2010, 05:15     Динамический массив структур #11
Подскажите пожалуйста как правильно освободить память после
bolnie* b = new bolnie[col];
Как я понимаю можно написать так
Код
delete []b;
или надо освобождать поэлементно ?
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
04.03.2010, 08:10     Динамический массив структур #12
Цитата Сообщение от Uwiii Посмотреть сообщение
delete []b;
Можно и так. Просто деструктор должен быть правильный у bolnie... Хотя там нет ничего динамического внутри. Так что можно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2010, 12:17     Динамический массив структур
Еще ссылки по теме:

C++ Динамический массив структур
C++ Динамический массив структур
Динамический массив структур C++

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

Или воспользуйтесь поиском по форуму:
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
04.03.2010, 12:17     Динамический массив структур #13
я бы предложил посмотреть в сторону list<bolnie> или vector<bolnie>, но vector немного хуже, хотя если привычно работать с оператором [], то vector с вами.

Хотя если нужно без использования std писать программу то добавление и удаление элемента из списка, весёлое получается...
для добавления необходимо раздвигать массив (знаменитая фунция realloc из С), а затем добавлять элемент.
Yandex
Объявления
04.03.2010, 12:17     Динамический массив структур
Ответ Создать тему

Метки
динамические массивы, массивы, структуры
Опции темы

Текущее время: 01:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru