Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 64 стр.

UptoLike

Составители: 

64
class Text //класс «текстовый буфер»
{ protected:
int n,UsedN; //n-количество строк в буфере, UsedN – количество реально используемых
//строк буфера
char **str; //указатель на начало буфера в памяти
public:
Text(int ); //конструктор
~Text(); //деструктор
void Read(char *filename); //функция чтения информации из файла в буфер
void Write(); //функция вывода информации из буфера на экран
};
Text::Text(int k) //конструктор динамически выделяет память под k строк
{ n=k;UsedN=0;
str=new char*[n];
for(int i=0;i<n;i++)
str[i]=new char[80]; //…в каждой строке 80
символов
}
Text::~Text() //деструктор освобождает динамическую память из под буфера
{ for(int i=0;i<n;i++)
delete [] str[i];
delete [] str;
}
void Text::Read(char * filename)
{ UsedN=0;
FILE * fp;
if ((fp=fopen(filename,"r"))!=NULL) //открываем файл
{ while(!feof(fp)&&UsedN<n) //пока не конец файла или не заполнен весь буфер
{ fgets(str[UsedN],80,fp); //считываем очередную строку из файла в буфер
UsedN++;
}
for(int i=0;i<UsedN;i++)
for (int j=0;j<80;j++)
if (str[i][j]=='\n')
{for(int k=j;k<80;k++)
str[i][k]=' '; //пробелами заполняем неиспользуемую часть буфера
break;}
fclose(fp);
}
else {strcpy(str[0],"Ошибка открытия файла"); //если открыть указанный файл
//не удалось записываем информацию
об этом в буфер
for(int k=strlen(str[0]);k<80;k++)
str[0][k]=' ';
UsedN=1;
}}
void Text::Write() //функция постраничного вывода информации из буфера на экран
{if (UsedN)
{clrscr();
int i=0,ii=1;
while(i<UsedN)
class Text                                   //класс «текстовый буфер»
{ protected:
     int n,UsedN; //n-количество строк в буфере, UsedN – количество реально используемых
                        //строк буфера
char **str;           //указатель на начало буфера в памяти
    public:
     Text(int );       //конструктор
     ~Text();         //деструктор
     void Read(char *filename); //функция чтения информации из файла в буфер
     void Write();                        //функция вывода информации из буфера на экран
};
Text::Text(int k)                  //конструктор динамически выделяет память под k строк…
{ n=k;UsedN=0;
  str=new char*[n];
  for(int i=0;i