0 / 0 / 0
Регистрация: 26.10.2015
Сообщений: 10
1

Разработать программу, которая содержит текущую информацию о книгах в библиотеке

25.04.2016, 18:34. Показов 2280. Ответов 1
Метки нет (Все метки)

Разработать программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат:
- номер УДК;
- фамилию и инициалы автора;
- название;
- год издания;
- количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать:
- начальное формирование данных о всех книгах в библиотеке в виде списка;
- добавление данных о книгах, вновь поступающих в библиотеку;
- удаление данных о списываемых книгах;
- по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания

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

Pascal
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
program listexample;
 
uses CRT;
 
type
  
  dat = record
    Nomer: longint;
    FIO: string[45];
    Year: integer;
    Name: string[45];
    Kol: integer;
  end;
  plist = ^tlist;
  tlist = record
    data: dat;
   
    next: plist
  end;
   massdat= array[0..20] of dat;
 
var
 
  list, start: plist;
  i: integer;
  ditch: dat;
  NM,j: integer;
  stir: string;
  mass:massdat;
 
procedure SortToH(n: integer; A:massdat);
var
  k: dat;
begin
  for var i := 1 to n - 1 do
    for var j := 1 to n - i do
      if a[j].Year > a[j + 1].Year then 
      begin
        k.Year := a[j].Year;
        a[j].Year := a[j + 1].Year;
        a[j + 1] .Year:= k.Year;
      end;
      end;
procedure Add(d: dat);
var
  l: plist;
begin
  New(l);
  l^.data := d;
  l^.next := nil;
  
  if start <> nil then
  begin
    list := start;
    
    while list^.next <> nil do
      list := list^.next;
    list^.next := l
  end
  else
    start := l;
  list := l
end;
 
procedure Display;
begin
  if start = nil then
  begin
    writeLn('Лист пуст');
    exit
  end;
  
  list := start;
  
  while list <> nil do
  begin
    write(#32, list^.data);
    list := list^.next
  end
end;
procedure DisplayTo5;
begin
 Writeln(mass);
 
end;
 
procedure Clean;
var
  l: plist;
begin
  if start = nil then
    exit;
  
  list := start;
  
  while list <> nil do
  begin
    l := list;
    list := list^.next;
    Dispose(l)
  end;
  start := nil
end;
 
procedure Delete;
var
  l: plist;
begin
  if start = nil then
    exit;
  
  l := list^.next;
  
  if list <> nil then
  begin
    list^.next := l^.next;
    Dispose(l)
  end
  else
  begin
    list := start^.next;
    Dispose(start);
    start := list
  end
end;
 
procedure Search(d: string);
var
  flag: boolean;
begin
  list := start;
  flag := false;
  
  while (list <> nil) and (not flag) do
  begin
    if d = list^.data.Name then
      flag := true
    else
      list := list^.next
  end
end;
procedure SearchTo5(d: string);
var
  flag: boolean;
begin
  list := start;
  flag := false;
  
  while (list <> nil) and (not flag) do
  begin
    if d = list^.data.FIO then
    begin
      flag := true;
      mass[j]:= list^.data;
      Inc(j);
      end
    else
      list := list^.next
  end
end;
 
 
procedure findPrior;
var
  l: plist;
begin
  if (start = list) or (list = nil) then
    exit; { предыдущего нет }
  
  l := list; { сохраняем текущий в переменной l }
  list := start;
  
  { перематываем список с начала }
  while list <> nil do
  begin
    if list^.next = l then
      exit; {  нашли элемент, next которого указывает на  текущий элемент, на выход }
    list := list^.next
  end
end;
 
 
 
begin
  while true do
  begin
    ClrScr;
    
    writeLn('Программа для работы со  списком');
    writeLn('1 - добавить элемент');
    writeLn('2 - найти и удалить элемент');
    writeLn('3 - очистить список');
    writeLn('4 - вывести список');
    writeLn('5 - Найти');
    writeLn('>>>>>');
    Display;
    gotoxy(7, 7);
    readLn(i);
    gotoxy(1, 9);
    
    case i of
      1:
        begin
          
          writeln('номер УДК ');
          readLn(NM);
          ditch.Nomer := NM;
          writeln('ФИО');
          readLn(stir);
          ditch.FIO := stir;
          writeln('Название');
          readLn(stir);
          ditch.Name := stir;
          writeln('Год издания');
          readln(NM);
          ditch.Year := NM;
          writeln('Количество');
          readln(NM);
          ditch.Kol := NM;
          
          Add(ditch);
        end;
      2:
        begin
          write('Введите название книги: ');
          readLn(stir);
          Search(stir);
          if list = nil then
          begin
            writeLn('Не найдено');
            readLn;
            continue
          end;
          findPrior;
          Delete;
        end;
      3: Clean;
      4:
        begin
          ClrScr;
          Display;
          readLn;
        end;
      5:   //найти
        begin
          write('Введите Автора: ');
          readLn(stir);
          SearchTo5(stir);
          if list = nil then
          begin
            writeLn('Не найдено');
            readLn;
            continue
          end;
          SortToH(j,mass);
          
          DisplayTo5;
          Sleep(10000);
         
        end
    end
  end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2016, 18:34
Ответы с готовыми решениями:

Разработать программу, которая содержит текущую информацию о книгах в библиотеке.
Разработать программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о...

Составить программу, которая содержит текущую информацию о книгах в библиотеке
1.Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о...

Составить программу, которая содержит текущую информацию о книгах в библиотеке
Написал код. А он мне в visual 2019 не хочет компилировать. И выдаёт странные ошибки. Может вы...

Составить программу, которая содержит текущую информацию о книгах в библиотеке
Всем добрый вечер, прошу помощи с программой! Не работают функции взятия и выдачи книг. Не могу...

1
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
29.04.2016, 10:15 2

Не по теме:

Спасибо вам, начал изучать указатели.


Сделал вот такой набросок, в 5 операции создание и сортировка массива, пока вот так неуклюже, но наглядно. Создается массив указателей, и сортируется только массив указателей.
Кликните здесь для просмотра всего текста
Pascal
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
//uses  crt;
const
  MaxBook = 20;
 
type
  Tstring = string[45];
  book = record
    udk: integer;
    fio: Tstring;
    title: Tstring;
    publ: integer;
    avail: integer;    
  end;
  Pbook = ^Tbook;
  Tbook = record
    data: book;  
    next: Pbook;
  end;
  libr = array [1..MaxBook] of Pbook;
 
var
  buf: book;
  start, list: Pbook;
  db: libr;
  i, num,count: integer;
  s: Tstring;
  //operate: Toperate;
 
procedure Add(z: book);
var
  temp: Pbook;
begin
  new(temp);
  temp^.data := z;
  temp^.next := nil;
  if start = nil then
  begin
    start := temp;
    list := temp;
  end else
  begin
    list := start;
    while list^.next <> nil do
      list := list^.next;
    list^.next := temp;
  end;  
end;
 
procedure Display();
begin
  if start = nil then 
  begin
    writeln('Список пустой!');
    exit; 
  end 
  else
    list := start;
  while list <> nil do
  begin
    write(list^.data, ' ');
    list := list^.next;
    writeln;
  end;  
end;
 
procedure CreAr(var z: libr);
var
  n: integer := 0;
begin
  if start = nil then 
  begin
    writeln('Список пустой!');
    exit; 
  end 
  else
    list := start;
  while (list <> nil) and (n <= MaxBook) do
  begin
    inc(n);inc(count);
    z[n] := list;
    list := list^.next;   
  end;  
end;
 
procedure SortAr(var z: libr);
var
  k: Pbook;
begin
  if z[2] = nil then exit;
  for var i := 1 to count   do
  begin
    for var j := i + 1 to count  do
      if z[i]^.data.publ > z[j]^.data.publ then 
      begin
        k := z[i];z[i] := z[j];z[j] := k;
      end;
      writeln(z[i]^.data);
  end;
end;
 
begin
  begin
    while true do
    begin
      // ClrScr;    
      writeLn('Программа для работы со списком');
      writeLn('1 - добавить элемент');
      writeLn('2 - найти и удалить элемент');
      writeLn('3 - очистить список');
      writeLn('4 - вывести список');
      writeLn('5 - Найти');
      writeLn('>>>>>');
      //Display;
      // gotoxy(7, 7);
      readln(i);
      //gotoxy(1, 9);
      
      case i of
        1:
          begin
            with buf do
            begin
              udk := ReadlnInteger('Номер УДК: ');
              fio := ReadlnString('Автор (ФИО): ');
              title := ReadlnString('Название: ');
              publ := ReadlnInteger('Год издания: ');
              avail := ReadlnInteger('Количество: ');
            end;                       
            Add(buf);
          end;
        2:begin
          end;
        3:begin
          end;
        4:begin
            //ClrScr;            
            Display;
            readLn;
          end;
        5:
          begin
            CreAr(db);
            SortAr(db);            
          end;             
      end
    end
  end;  
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2016, 10:15
Помогаю со студенческими работами здесь

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

Составить программу, которая содержит текущую информацию о книгах в библиотеке
Уважаемые форумчане, нужна ваша помощь. нужно составить программу, которая содержит текущую...

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

Используя двоичное дерево поиска, создать программу, которая содержит текущую информацию о книгах в библиотеке
Нужна помощь. Задание: Используя двоичное дерево поиска, создать программу, которая содержит...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru