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

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
| #include "stdafx.h"
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
struct BOOK
{
char author[20];
char name[20];
int year;
int digit;
};
struct list
{
BOOK info;
list *next;
};
list *PH, *C, *PT;
int main(void)
{
setlocale(LC_ALL, "rus");
int i, n;
cout << "Введите кол-во книг: ";
cin >> n;
PH = 0;
for (i = 0; i < n; i++)
{
if (PH == 0)
{
PH = new list;
cout << "Введите фамилию автора: ";
cin >> PH->info.author;
cout << "Введите название книги: ";
cin >> PH->info.name;
cout << "Введите год книги: ";
cin >> PH->info.year;
cout << "Введите число копий книги: ";
cin >> PH->info.digit;
PH->next = 0;
}
else
{
C = PH;
while (C->next != 0)
C = C->next;
C->next = new list;
C = C->next;
cout << "Введите фамилию автора: ";
cin >> C->info.author;
cout << "Введите название книги: ";
cin >> C->info.name;
cout << "Введите год книги: ";
cin >> C->info.year;
cout << "Введите число копий книги: ";
cin >> C->info.digit;
C->next = 0;
}
}
PT = C;
list *P, *N;
while (PT != PH)
{
for (P = PH; P->next != PT; P = P->next)
if (P->next->info.year > P->next->next->info.year)
{
N = P->next->next;
P->next = N->next;
N->next = P->next;
P->next = N;
}
PT = P;
}
char nm[20];
cout << "Введите название книги которую хотите удалить: ";
cin >> nm;
{
if (strcmp(PH->info.name, nm) == 0)
{
C = PH->next;
delete PH;
PH = C;
}
else
{
for (P = PH; strcmp(P->next->info.name, nm);
P = P->next); {}
C = P->next->next;
delete P->next;
P->next = C;
}
}
for (C = PH; C != 0; C = C->next)
{
cout << C->info.author << endl;
cout << C->info.name << endl;
cout << C->info.year << endl;
cout << C->info.digit << endl;
}
_getch();
return 0;
} |
|