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

                          if (out == 1)

                          {

                                 A[1]->Show();//Выводим результат на экран

                          }

                          if (out == 2)

                          {

                                 char CFile[30];

                                 cout<<"Введите путь к файлу:"<<endl;

                                 cin.getline(CFile,30); // вызов пропускаеться

                                 cin.getline(CFile,30);

                                 A[1]->SaveToFile(CFile);//Выводим результат в файл

                          }

                    }

                    A[1]->~CParent();//Деструктор

             }

       }

       system("PAUSE");

       return 0;

}

Parent.h

#pragma once

#include <iostream>

#include <math.h>

using namespace std;

class CParent

{

public:

       CParent(void);

       virtual void Show (void){};

       virtual void InputData (void)=0;// чистая виртуальная функция

       virtual void SaveToFile (char *FileName){};

       virtual void ReadFromFile (char *FileName){};

       virtual ~CParent(void); // виртуальный деструктор нужен чтобы в предках так же вызывался деструктор

};

Parent.cpp

#include "StdAfx.h"

#include "Parent.h"

CParent::CParent(void)

{

             setlocale (LC_ALL,".1251");// перевод на русский язык

}

CParent::~CParent(void)

{

}

Cstring.h

#pragma once

#include "parent.h"

class Cstring :

       public CParent

{

public:

       Cstring(void);// конструктор по умолчанию

       Cstring(char *file); // конструктор считывания с файла

       Cstring(char *a1,char *b1, char *c1,char *d1); // конструктор заполнения данных

       void Show (void) ; // метод вывода р-та

       void InputData (void) ; // метод заполнения с клавиатуры

       void SaveToFile (char *FileName) ; // метод сохранения в файл

       void ReadFromFile (char *FileName) ; // метод считывания с файла

       ~Cstring(void);

private:

       bool slovo();

       int Predl();

       void Zamena ();

       int Kolvo();

       char *a,*b,*c,*d;

};

Cstring.cpp

#include "StdAfx.h"

#include "Cstring.h"

#include <fstream>

char* Read1()//считывание без ограничения с клавиатуры в переменную указательного типа char

{

  int ch, str_size = 0;

  char * str = (char *) calloc(str_size, sizeof(char));

  while ((ch = getchar()) != '\n')

  {

    str = (char *) realloc(str, ++str_size);

    str[ str_size - 1 ] = (char) ch;

  }

  str = (char *) realloc(str, ++str_size);

  str[ str_size - 1 ] = '\0';

  return str;

}

Cstring::Cstring()// конструктор по умолчанию, ничего не делает

{

}

Cstring::Cstring(char *file)//конструктор считывания с файла

{

       ReadFromFile(file); // вызов функции считывания с файла

}

Cstring::Cstring(char *a1,char *b1, char *c1,char *d1)//конструктор ввода данных

{

       strcpy(a,a1);

       strcpy(b,b1);

       strcpy(c,c1);

       strcpy(d,d1);

}

bool Cstring::slovo()//функция проверки первого и последнего элемента

{

       return (a[0]==a[strlen(a)-1]) ? 1 : 0 ; // возрваращет правду если первый и последний элемент одинаковы

}

int Cstring::Predl()//ищет количество букв 'о'

{

       int k=0;

       for(int i=0;i<strlen(b);i++)

             if(b[i]=='o') k++;

       return k;

}

void Cstring::Zamena ()//функция замены ax на yx

{

       for(int i=0;i<strlen(c)-1;i++)

if(c[i]=='a') if(c[i+1]=='x') c[i]='y';// проверка условия

}

int Cstring::Kolvo()//функция счета количества цифр

{

       int k=0;

       for(int i=0;i<strlen(d);i++)

             if(d[i]>=char('0') && d[i]<=char('9')) k++;

       return k;

}

void Cstring::Show(void)// вывод результата

{

       cout<<"Ответ на первое задание:";