#include <iostream>
#include <fstream>
using namespace std;
class PhoneNumber
{
protected :
int area;
long number;
public :
friend istream& operator>> ( istream& is, PhoneNumber & p) ;
friend ostream& operator<< ( ostream& os, PhoneNumber & p) ;
} ;
istream& operator>> ( istream& is, PhoneNumber & p)
{
if ( is== cin )
cout << "Enter area code : " ;
is >> p.area ;
if ( is== cin )
cout << "Enter number telephone number : " ;
is >> p.number ;
return is;
} ;
ostream& operator<< ( ostream& os, PhoneNumber & p)
{
return os << p.area << "-" << p.number ;
} ;
class IntPhoneNumber: public PhoneNumber
{
protected :
int reg;
public :
friend istream& operator>> ( istream& is, IntPhoneNumber & p) ;
friend ostream& operator<< ( ostream& os, IntPhoneNumber & p) ;
} ;
istream& operator>> ( istream& is, IntPhoneNumber & p)
{
if ( is== cin )
cout << "Enter area code : " ;
is >> p.reg ;
return is >> static_cast < PhoneNumber& > ( p) ;
} ;
ostream& operator<< ( ostream& os, IntPhoneNumber & p)
{
return os << "(" << p.reg << ")" << static_cast < PhoneNumber& > ( p) ;
} ;
int main( ) {
// your code goes here
PhoneNumber n,n2;
cout << "Request phone number" << endl;
cin >> n;
cout << n<< endl;
ifstream ifs( "test.txt" ) ; // just to check that in this case there is no cout
ifs >> n2;
cout << "Request phone int number" << endl;
IntPhoneNumber ni;
cin >> ni;
cout << ni<< endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFBob25lTnVtYmVyCnsKcHJvdGVjdGVkOiAKICAgIGludCBhcmVhOwogICAgbG9uZyBudW1iZXI7CnB1YmxpYzogCiAgICAgZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaXMsIFBob25lTnVtYmVyICZwKTsKICAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgUGhvbmVOdW1iZXIgJnApOwp9OwoKaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBpcywgUGhvbmVOdW1iZXIgJnApIAp7CglpZiAoaXM9PWNpbikKICAgICAgICBjb3V0IDw8ICJFbnRlciBhcmVhIGNvZGUgOiAiOwogICAgaXMgPj4gcC5hcmVhOwoJaWYgKGlzPT1jaW4pCiAgICAgICAgY291dCA8PCAiRW50ZXIgbnVtYmVyIHRlbGVwaG9uZSBudW1iZXIgOiAiOwogICAgaXMgPj4gcC5udW1iZXI7CiAgICByZXR1cm4gaXM7Cn07Cgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG9zLCBQaG9uZU51bWJlciAmcCkgCnsKICAgIHJldHVybiBvcyA8PCBwLmFyZWE8PCItIjw8cC5udW1iZXI7Cn07CgoKY2xhc3MgSW50UGhvbmVOdW1iZXI6cHVibGljIFBob25lTnVtYmVyCnsKcHJvdGVjdGVkOgogICAgaW50IHJlZzsKcHVibGljOiAKICAgIGZyaWVuZCBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mIGlzLCBJbnRQaG9uZU51bWJlciAmcCk7CiAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgSW50UGhvbmVOdW1iZXIgJnApOwp9OwoKaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBpcywgSW50UGhvbmVOdW1iZXIgJnApIAp7CiAJaWYgKGlzPT1jaW4pCiAgICAgICAgY291dCA8PCAiRW50ZXIgYXJlYSBjb2RlIDogIjsKICAgIGlzID4+IHAucmVnOwogCXJldHVybiBpcyA+PiBzdGF0aWNfY2FzdDxQaG9uZU51bWJlciY+KHApOwp9Owpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG9zLCBJbnRQaG9uZU51bWJlciAmcCkgCnsKICAgIHJldHVybiBvcyA8PCIoIjw8cC5yZWc8PCIpIjw8IHN0YXRpY19jYXN0PFBob25lTnVtYmVyJj4ocCkgOwp9OwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglQaG9uZU51bWJlciBuLG4yOwoJY291dDw8ICJSZXF1ZXN0IHBob25lIG51bWJlciI8PGVuZGw7IAoJY2luID4+IG47ICAKCWNvdXQgPDxuPDxlbmRsOyAKICAgIGlmc3RyZWFtIGlmcygidGVzdC50eHQiKTsgIC8vIGp1c3QgdG8gY2hlY2sgdGhhdCBpbiB0aGlzIGNhc2UgdGhlcmUgaXMgbm8gY291dAoJaWZzID4+IG4yOwoJCgljb3V0PDwgIlJlcXVlc3QgcGhvbmUgaW50IG51bWJlciI8PGVuZGw7IAoJSW50UGhvbmVOdW1iZXIgbmk7IAoJY2luPj5uaTsgCgljb3V0IDw8bmk8PGVuZGw7IAoJCglyZXR1cm4gMDsKfQ==