#include <iostream>
#include <locale.h>
#include <fstream>
#include <string>
#include <conio.h>


using namespace std;


class client{
protected:
  char name[50];

  int bMonth, bDay, bYear,
	           eMonth, eDay, eYear;
  int amount, cost;
  int id;
public:
  client::client(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid);
  virtual void fAmount()=0;
  void printName(){cout<<name;};
  void printId(){cout<<id;};
  void printAmount(){cout<<amount;};
  void printCost(){cout<<cost;};
  void printPeriod(){cout<<bDay<<'.'<<bMonth<<'.'<<bYear<<'-'<<eDay<<'.'<<eMonth<<'.'<<eYear;};
  void printFromFile();
};



class adult : public client{
public:
  adult(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid):client(fbMonth, fbDay, fbYear, feMonth, feDay, feYear, fcost, fid){};
  void fAmount(){amount=cost*5;};
};

class underage : public client{
public:
  underage(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid):client(fbMonth, fbDay, fbYear, feMonth, feDay, feYear, fcost, fid){};
  void fAmount(){amount=cost*7;};
};

class pensioner : public client{
public:
  pensioner(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid):client(fbMonth, fbDay, fbYear, feMonth, feDay, feYear, fcost, fid){};
  void fAmount(){amount=cost*10;};
};

client::client(int fbMonth, int fbDay, int fbYear, int feMonth, int feDay, int feYear, int fcost, int fid){
	 bMonth=fbMonth; bDay=fbDay;  bYear=fbYear;  
	 eMonth=feMonth; eDay=feDay;  eYear=feYear; 
	 cost=fcost;
	 id=fid;
}




int main()
{
  setlocale(LC_CTYPE,"Russian");
  client *p[100]; int i=0;
  int client_type, t_id, t_amount, t_cost, t_bMonth, t_bDay, t_bYear, t_eMonth, t_eDay, t_eYear;
  char s[50];
  char t_name[50];
  ifstream infile("clients.txt");
  while(!infile.eof()){
    strcpy(s, " ");
    strcpy(t_name, " ");
    client_type=t_id=t_amount=t_cost=t_bMonth=t_bDay=t_bYear=t_eMonth=t_eDay=t_eYear=0;

    infile>>s;
    for(int i=0;i<strlen(s);i++) t_name[i]=s[i];
    strcat(t_name, " ");
    infile>>s;
    strcat(t_name, s);
    strcat(t_name, " ");
    infile>>s;
    strcat(t_name, s); 

    infile>>t_bDay; infile>>t_bMonth; infile>>t_bYear;
    infile>>t_eDay; infile>>t_eMonth; infile>>t_eYear;
    infile>>t_cost; infile>>client_type;

	switch(client_type){
	case 1: p[i]=new adult(t_bMonth,t_bDay,t_bYear,t_eMonth,t_eDay,t_eYear,t_cost, i);
		    break;
	case 2: p[i]=new underage(t_bMonth,t_bDay,t_bYear,t_eMonth,t_eDay,t_eYear,t_cost, i);
		    break;
    case 3: p[i]=new pensioner(t_bMonth,t_bDay,t_bYear,t_eMonth,t_eDay,t_eYear,t_cost, i);
		    break;
	default: cout<<"ERROR";
    }

	
  i++;
}
  
  infile.close();
  getch();
}