#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( ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bG9jYWxlLmg+CiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y29uaW8uaD4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmNsYXNzIGNsaWVudHsKcHJvdGVjdGVkOgogIGNoYXIgbmFtZVs1MF07CgogIGludCBiTW9udGgsIGJEYXksIGJZZWFyLAoJICAgICAgICAgICBlTW9udGgsIGVEYXksIGVZZWFyOwogIGludCBhbW91bnQsIGNvc3Q7CiAgaW50IGlkOwpwdWJsaWM6CiAgY2xpZW50OjpjbGllbnQoaW50IGZiTW9udGgsIGludCBmYkRheSwgaW50IGZiWWVhciwgaW50IGZlTW9udGgsIGludCBmZURheSwgaW50IGZlWWVhciwgaW50IGZjb3N0LCBpbnQgZmlkKTsKICB2aXJ0dWFsIHZvaWQgZkFtb3VudCgpPTA7CiAgdm9pZCBwcmludE5hbWUoKXtjb3V0PDxuYW1lO307CiAgdm9pZCBwcmludElkKCl7Y291dDw8aWQ7fTsKICB2b2lkIHByaW50QW1vdW50KCl7Y291dDw8YW1vdW50O307CiAgdm9pZCBwcmludENvc3QoKXtjb3V0PDxjb3N0O307CiAgdm9pZCBwcmludFBlcmlvZCgpe2NvdXQ8PGJEYXk8PCcuJzw8Yk1vbnRoPDwnLic8PGJZZWFyPDwnLSc8PGVEYXk8PCcuJzw8ZU1vbnRoPDwnLic8PGVZZWFyO307CiAgdm9pZCBwcmludEZyb21GaWxlKCk7Cn07CgoKCmNsYXNzIGFkdWx0IDogcHVibGljIGNsaWVudHsKcHVibGljOgogIGFkdWx0KGludCBmYk1vbnRoLCBpbnQgZmJEYXksIGludCBmYlllYXIsIGludCBmZU1vbnRoLCBpbnQgZmVEYXksIGludCBmZVllYXIsIGludCBmY29zdCwgaW50IGZpZCk6Y2xpZW50KGZiTW9udGgsIGZiRGF5LCBmYlllYXIsIGZlTW9udGgsIGZlRGF5LCBmZVllYXIsIGZjb3N0LCBmaWQpe307CiAgdm9pZCBmQW1vdW50KCl7YW1vdW50PWNvc3QqNTt9Owp9OwoKY2xhc3MgdW5kZXJhZ2UgOiBwdWJsaWMgY2xpZW50ewpwdWJsaWM6CiAgdW5kZXJhZ2UoaW50IGZiTW9udGgsIGludCBmYkRheSwgaW50IGZiWWVhciwgaW50IGZlTW9udGgsIGludCBmZURheSwgaW50IGZlWWVhciwgaW50IGZjb3N0LCBpbnQgZmlkKTpjbGllbnQoZmJNb250aCwgZmJEYXksIGZiWWVhciwgZmVNb250aCwgZmVEYXksIGZlWWVhciwgZmNvc3QsIGZpZCl7fTsKICB2b2lkIGZBbW91bnQoKXthbW91bnQ9Y29zdCo3O307Cn07CgpjbGFzcyBwZW5zaW9uZXIgOiBwdWJsaWMgY2xpZW50ewpwdWJsaWM6CiAgcGVuc2lvbmVyKGludCBmYk1vbnRoLCBpbnQgZmJEYXksIGludCBmYlllYXIsIGludCBmZU1vbnRoLCBpbnQgZmVEYXksIGludCBmZVllYXIsIGludCBmY29zdCwgaW50IGZpZCk6Y2xpZW50KGZiTW9udGgsIGZiRGF5LCBmYlllYXIsIGZlTW9udGgsIGZlRGF5LCBmZVllYXIsIGZjb3N0LCBmaWQpe307CiAgdm9pZCBmQW1vdW50KCl7YW1vdW50PWNvc3QqMTA7fTsKfTsKCmNsaWVudDo6Y2xpZW50KGludCBmYk1vbnRoLCBpbnQgZmJEYXksIGludCBmYlllYXIsIGludCBmZU1vbnRoLCBpbnQgZmVEYXksIGludCBmZVllYXIsIGludCBmY29zdCwgaW50IGZpZCl7CgkgYk1vbnRoPWZiTW9udGg7IGJEYXk9ZmJEYXk7ICBiWWVhcj1mYlllYXI7ICAKCSBlTW9udGg9ZmVNb250aDsgZURheT1mZURheTsgIGVZZWFyPWZlWWVhcjsgCgkgY29zdD1mY29zdDsKCSBpZD1maWQ7Cn0KCgoKCmludCBtYWluKCkKewogIHNldGxvY2FsZShMQ19DVFlQRSwiUnVzc2lhbiIpOwogIGNsaWVudCAqcFsxMDBdOyBpbnQgaT0wOwogIGludCBjbGllbnRfdHlwZSwgdF9pZCwgdF9hbW91bnQsIHRfY29zdCwgdF9iTW9udGgsIHRfYkRheSwgdF9iWWVhciwgdF9lTW9udGgsIHRfZURheSwgdF9lWWVhcjsKICBjaGFyIHNbNTBdOwogIGNoYXIgdF9uYW1lWzUwXTsKICBpZnN0cmVhbSBpbmZpbGUoImNsaWVudHMudHh0Iik7CiAgd2hpbGUoIWluZmlsZS5lb2YoKSl7CiAgICBzdHJjcHkocywgIiAiKTsKICAgIHN0cmNweSh0X25hbWUsICIgIik7CiAgICBjbGllbnRfdHlwZT10X2lkPXRfYW1vdW50PXRfY29zdD10X2JNb250aD10X2JEYXk9dF9iWWVhcj10X2VNb250aD10X2VEYXk9dF9lWWVhcj0wOwoKICAgIGluZmlsZT4+czsKICAgIGZvcihpbnQgaT0wO2k8c3RybGVuKHMpO2krKykgdF9uYW1lW2ldPXNbaV07CiAgICBzdHJjYXQodF9uYW1lLCAiICIpOwogICAgaW5maWxlPj5zOwogICAgc3RyY2F0KHRfbmFtZSwgcyk7CiAgICBzdHJjYXQodF9uYW1lLCAiICIpOwogICAgaW5maWxlPj5zOwogICAgc3RyY2F0KHRfbmFtZSwgcyk7IAoKICAgIGluZmlsZT4+dF9iRGF5OyBpbmZpbGU+PnRfYk1vbnRoOyBpbmZpbGU+PnRfYlllYXI7CiAgICBpbmZpbGU+PnRfZURheTsgaW5maWxlPj50X2VNb250aDsgaW5maWxlPj50X2VZZWFyOwogICAgaW5maWxlPj50X2Nvc3Q7IGluZmlsZT4+Y2xpZW50X3R5cGU7CgoJc3dpdGNoKGNsaWVudF90eXBlKXsKCWNhc2UgMTogcFtpXT1uZXcgYWR1bHQodF9iTW9udGgsdF9iRGF5LHRfYlllYXIsdF9lTW9udGgsdF9lRGF5LHRfZVllYXIsdF9jb3N0LCBpKTsKCQkgICAgYnJlYWs7CgljYXNlIDI6IHBbaV09bmV3IHVuZGVyYWdlKHRfYk1vbnRoLHRfYkRheSx0X2JZZWFyLHRfZU1vbnRoLHRfZURheSx0X2VZZWFyLHRfY29zdCwgaSk7CgkJICAgIGJyZWFrOwogICAgY2FzZSAzOiBwW2ldPW5ldyBwZW5zaW9uZXIodF9iTW9udGgsdF9iRGF5LHRfYlllYXIsdF9lTW9udGgsdF9lRGF5LHRfZVllYXIsdF9jb3N0LCBpKTsKCQkgICAgYnJlYWs7CglkZWZhdWx0OiBjb3V0PDwiRVJST1IiOwogICAgfQoKCQogIGkrKzsKfQogIAogIGluZmlsZS5jbG9zZSgpOwogIGdldGNoKCk7Cn0=