В общем сабж - нужно переделать прогу под односвязный и двусвязный списки, а то у меня ни то и ни сё =) Вот код:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
struct BOOKS {
char Author; //автор
char Title; //название книги
int Year; //год
int Quantity; //количество экземпляров
BOOKS *next; //указатель на след элемент
};
class BOOK {
public:
BOOK();
void Input(char Author,char Title,int Year,int Quantity); //ввод данных
void Print(); //вывод введенных данных
void Output(int Year); //вывод результата
~BOOK();
private:
BOOKS *first; //указатель на перв элемент
BOOKS *prev; //указатель на пред элемент
};
BOOK::BOOK() {
first = NULL;
prev = NULL;
}
BOOK::~BOOK() {
while (first != NULL)
{
BOOKS *elem = first;
first = first->next;
delete elem;
}
}
void BOOK::Input(char Author,char Title,int Year,int Quantity) {
BOOKS *elem=new BOOKS();
if (first==NULL)
first = elem;
else
prev->next = elem;
elem->Author = Author;
elem->Title = Title;
elem->Year = Year;
elem->Quantity = Quantity;
elem->next = NULL;
prev = elem;
}
void BOOK::Print() {
int i = 0;
BOOKS *elem = first;
while (elem != NULL) {
cout << "Book #" << i+1 << "\n" << "Title: "
<< elem->Title << " Author: " << elem->Author << " Year: " << elem->Year
<< " Quanitity: " <<elem->Quantity << "\n";
elem = elem->next;
i++;
}
}
void BOOK::Output(int Year) {
int i = 0, k = 0;
BOOKS *elem = first;
while (elem != NULL)
{
if (elem->Year == Year) {
k++;
cout << "Book #" << i+1 << "\n" << "Title: " << elem->Title << " Author: "
<< elem->Author << " Year: " << elem->Year << " Quanitity: " << elem->Quantity << "\n";
}
elem = elem->next;
i++;
}
if (k==0)
cout << "No books of such year!\n";
cout << "--------------------------------------------------------------------------------\n";
cout << "Number of the books of " << Year << " = " << k << "\n";
}
int main() {
int i, n, year;
char Author; //автор
char Title; //название книги
int Year; //год
int Quantity; //количество экземпляров
BOOK MyLibrary;
cout << "Enter the number of the books: ";
cin >> n;
cout << "--------------------------------------------------------------------------------\n";
for (i=0; i<n; i++){
cout << "Book #" << i+1 << "\n";
cout << "Title: ";
cin >> Title;
cout << "Author: ";
cin >> Author;
cout << "Year: ";
cin >> Year;
cout << "Quanitity: ";
cin >> Quantity;
MyLibrary.Input(Author, Title, Year, Quantity);
}
cout << "--------------------------------------------------------------------------------\n";
cout << "Your library is consisted of next books:\n";
MyLibrary.Print();
cout << "--------------------------------------------------------------------------------\n";
cout << "Enter the year of the search: ";
cin >> year;
cout << "--------------------------------------------------------------------------------\n";
cout << "Your search results: \n";
MyLibrary.Output(year);
cout << "--------------------------------------------------------------------------------\n";
cout << "For exit press any key...";
getch();
return 0;
}