#include <bits/stdc++.h>
using namespace std;
class Publication
{
protected:
double price;
public:
Publication(double p)
{
price = p;
}
virtual double getTotalPrice() const = 0;
};
class Book : public Publication
{
private:
int pages;
public:
Book(double p,int n):Publication(p)
{
pages = n;
}
double getTotalPrice() const
{
return pages * price;
}
};
class Tape : public Publication
{
private:
int period;
public :
Tape(double p,int n):Publication(p)
{
period = n;
}
double getTotalPrice() const
{
return period * price;
}
};
class BookStore
{
private:
Publication **pub;
int num;
public:
BookStore(Publication **p,int n)
{
pub = new Publication*[n];
for (int i = 0; i < n; i++)
pub[i] = p[i];
num = n;
}
int getNumOfBook()
{
int numOfBook = 0;
for(int i = 0; i < num; i++)
{
if(typeid(*pub[i])==typeid(Book))
numOfBook++;
}
return numOfBook++;
}
int getNumOfTape()
{
int numOfTape = 0;
for( int i = 0; i < num; i++)
{
if(typeid(*pub[i])==typeid(Tape))
numOfTape++;
}
return numOfTape++;
}
};
int main()
{
ifstream in("input.txt");
cin.rdbuf(in.rdbuf());
int cases, date;
char type;
double total,price;
Publication **pub;
cin>>cases;
pub = new Publication*[cases];
for (int i = 0; i < cases; i++)
{
cin>>type>>price>>date;
switch(type)
{
case 'B':
pub[i] = new Book(price,date);
break;
case 'T':
pub[i] = new Tape(price,date);
break;
}
}
BookStore bookStore(pub, cases);
cout<<"There are "<<bookStore.getNumOfBook()<<" books and "<<bookStore.getNumOfTape()<<" tapes.";
total = 0;
for (int i = 0; i < cases; i++)
{
total += pub[i] -> getTotalPrice();
}
cout<<" Their total price is "<<setprecision(2)<<fixed<<total<<"."<<endl;
return 0;
}
using namespace std;
class Publication
{
protected:
double price;
public:
Publication(double p)
{
price = p;
}
virtual double getTotalPrice() const = 0;
};
class Book : public Publication
{
private:
int pages;
public:
Book(double p,int n):Publication(p)
{
pages = n;
}
double getTotalPrice() const
{
return pages * price;
}
};
class Tape : public Publication
{
private:
int period;
public :
Tape(double p,int n):Publication(p)
{
period = n;
}
double getTotalPrice() const
{
return period * price;
}
};
class BookStore
{
private:
Publication **pub;
int num;
public:
BookStore(Publication **p,int n)
{
pub = new Publication*[n];
for (int i = 0; i < n; i++)
pub[i] = p[i];
num = n;
}
int getNumOfBook()
{
int numOfBook = 0;
for(int i = 0; i < num; i++)
{
if(typeid(*pub[i])==typeid(Book))
numOfBook++;
}
return numOfBook++;
}
int getNumOfTape()
{
int numOfTape = 0;
for( int i = 0; i < num; i++)
{
if(typeid(*pub[i])==typeid(Tape))
numOfTape++;
}
return numOfTape++;
}
};
int main()
{
ifstream in("input.txt");
cin.rdbuf(in.rdbuf());
int cases, date;
char type;
double total,price;
Publication **pub;
cin>>cases;
pub = new Publication*[cases];
for (int i = 0; i < cases; i++)
{
cin>>type>>price>>date;
switch(type)
{
case 'B':
pub[i] = new Book(price,date);
break;
case 'T':
pub[i] = new Tape(price,date);
break;
}
}
BookStore bookStore(pub, cases);
cout<<"There are "<<bookStore.getNumOfBook()<<" books and "<<bookStore.getNumOfTape()<<" tapes.";
total = 0;
for (int i = 0; i < cases; i++)
{
total += pub[i] -> getTotalPrice();
}
cout<<" Their total price is "<<setprecision(2)<<fixed<<total<<"."<<endl;
return 0;
}