Составление спецификаций. Изучение строковых типов данных и функций для их обработки, страница 3

             A[i]->data=0;//заполняем по умолчанию

       }

       ReadFromFile(FileName);//вызываем считывания с файла

}

ostream & operator<< (ostream & output, Knigi *A)//перегрузка потока вывода

{

       output<<"Фамилия: "<<A->name<<endl;

       output<<"Название: "<<A->title<<endl;

       output<<"Количество страниц = "<<A->stran<<endl;

       output<<"Год книги = "<<A->data<<endl<<endl;

       return output;

}

istream & operator>> (istream & input, Knigi *B)//перегрузка потока ввода

{

       cout<<"Введите фамилию автора книги: ";

       B->name=Read();

       B->name=Read();

       cout<<"Введите название книги: ";

       B->title=Read();

       cout<<"Введите количество страниц в книге = ";

       input>>B->stran;

       cout<<"Введите год издания книги = ";

       input>>B->data;

       return input;

}

void CStruct::sort()//сортировка

{

       for(int i=0;i<n;i++)

             for(int j=i+1;j<n;j++)

                    if(A[i]->data<A[j]->data)

                    {

                          Knigi *temp=A[i];

                          A[i]=A[j];

                          A[j]=temp;

                    }

}

void CStruct::Show()//функция вывода результатов

{

       sort();

       cout<<"Отстортированная структура:"<<endl;

       for(int i = 0;i < n; i++)

             cout<<A[i];

}

void CStruct::InputData ()//функция заполнения с клавиатуры

{

       for(int i = 0;i < n; i++)

       {

             cin>>A[i];

       }

}

void CStruct::SaveToFile (char *FileS)//функция сохранение результатов в файл

{

       ofstream f(FileS);//создаём файл

       sort();

       f<<"Отстортированная структура:"<<endl;

       for(int i = 0;i < n; i++)

       f<<A[i];

       f.close();//закрываем файл

}

void CStruct::ReadFromFile (char *FileR)//Считывание данных с файла

{

       ifstream f(FileR);//открываем файл

       for(int i = 0;i < n; i++)

       {

             f>>A[i]->stran;

             f>>A[i]->data;

       }

       for(int i = 0;i < n; i++)

       {

             int  str_size = 0;

             char ch;

             A[i]->name = (char *) calloc(str_size, sizeof(char));

             f>>ch;

             while (!f.eof() && int(ch)!=10)//если не конце файла и если не абзац

             {

                    f.unsetf(ios_base:: skipws);

                    A[i]->name = (char *) realloc(A[i]->name, ++str_size);

                    A[i]->name[ str_size - 1 ] = int(ch);

                    f>>ch;

             }

             A[i]->name = (char *) realloc(A[i]->name, ++str_size);

             A[i]->name[ str_size - 1 ] = '\0';

             str_size = 0;

             A[i]->title = (char *) calloc(str_size, sizeof(char));

             f>>ch;

             while (!f.eof() && int(ch)!=10)//если не конце файла и если не абзац

             {

                    f.unsetf(ios_base:: skipws);

                    A[i]->title = (char *) realloc(A[i]->title, ++str_size);

                    A[i]->title[ str_size - 1 ] = int(ch);

                    f>>ch;

             }

             A[i]->title = (char *) realloc(A[i]->title, ++str_size);

             A[i]->title[ str_size - 1 ] = '\0';

       }

       f.close();//закрываем файл

}

CStruct::~CStruct(void)//Декструктор

{

       for(int i=0;i<n;i++)

       delete A[i];

}

Lab 6

#include "stdafx.h"

#include "Parent.h"

#include "Struct.h"