У меня есть структура данных
struct LIBRARY
{
char number[20];
char FIO[30];
char name[30];
int year;
int kolvo;
};
Подскажите пожалуйста как выполнить сортировку по годам и вывести информацию
Полный код:
#include <iostream>
using namespace std;
struct LIBRARY
{
char number[30];
char FIO[30];
char name[30];
int year;
int kolvo;
};
struct ITEM
{
LIBRARY* Library;
ITEM* next;
};
ITEM* create(LIBRARY* Library)
{
ITEM* head = new ITEM;
head->Library = Library;
head->next = NULL;
return head;
}
void add(LIBRARY* Library, ITEM* head)
{
while (head->next)
head = head->next;
head->next = new ITEM;
head->next->Library = Library;
head->next->next = NULL;
cout << endl;
}
LIBRARY* make()
{
LIBRARY* Library = new LIBRARY;
cin.ignore();
cout << "Введите УДК книги: ";
cin.getline(Library->number, 30);
cin.ignore();
cout << "Введите ФИО Автора: ";
cin.getline(Library->FIO, 30);
cin.ignore();
cout << "Введите название книги: ";
cin.getline(Library->name, 40);
cout << "Введите год книги: ";
cin >> Library->year;
cout << "Введите кол-во книг: ";
cin >> Library->kolvo;
cout <<endl << "-----------------------------------" << endl;
return Library;
}
void printLIBRARY(LIBRARY* Library) //вывод на экран
{
cout << "Номер книги: " << Library->number << endl;
cout << "ФИО Автора: " << Library->FIO << endl;
cout << "Название книги: " << Library->name << endl;
cout << "Год книги: " << Library->year << endl;
cout << "Количество книг: " << Library->kolvo << endl;
cout << endl << "-----------------------------------" << endl;
}
ITEM* remove(ITEM* str)
{
ITEM* tail = str, * head = str;
char nomer[30];
cin.ignore();
cout << "Введите название книги" << endl;
cin.getline(nomer, 30);
while (head)
{
if (!strcmp(nomer, head->Library->name))
{
head->Library = NULL;
if (tail == head)
str = head->next;
tail->next = head->next;
tail = head;
head = head->next;
}
else head = head->next;
}
cout << "Информация об этой книги удалена !" << endl;
cout << endl << "-----------------------------------" << endl;
return str;
}
int choice()
{
int answer;
cout << "Добавить новую книгу, введите: 1" << endl;
cout << "Вывести все книги, введите: 2" << endl;
cout << "Удалить информацию о книге, введите: 3" << endl;
cout << "Выход, введите 4" << endl << endl;
cout << "Ваш выбор: ";
cin >> answer;
cout << endl << "-----------------------------------" << endl;
if (answer >= 1 && answer <= 5)
return answer;
else
return 0;
}
int main()
{
setlocale(LC_ALL, "Russian");
ITEM* head = NULL;
int ch;
while (1)
{
ch = choice();
if (ch == 1)
{
cout << endl;
if (head == NULL)
head = create(make());
else
add(make(), head);
}
else if (ch == 2)
{
cout << endl;
int i = 0;
int N = 0;
ITEM* phead = head;
while (head)
{
N++;
head = head->next;
}
LIBRARY* buf;
LIBRARY** pLibrary = new LIBRARY * [N];
head = phead;
while (head)
{
pLibrary[i] = head->Library;
head = head->next;
i++;
}
head = phead;
for (i = 0;i < N;i++)
printLIBRARY(pLibrary[i]);
}
else if (ch == 3)
{
head = remove(head);
}
else if (ch == 4)
{
break;
cout << endl;
}
}
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть массив элементов типа int, например {-50, 2, 55, 985, 98515, -5354}
В vs 2017 и до него Intellisense работал просто отличноЯ набирал текст, не важно с большой буквы, с ошибкой - visual studio сам выбирал вариант, подсвечивал...