#include <iostream>
#include <cmath>
#include <stdexcept>
#include <string.h>
using namespace std;
class Array {
public:
Array() {
size = max_size;
ptr = new unsigned char[size];
}
Array(int size) {
if(size <= max_size)
this->size = size;
else
this->size = max_size;
ptr = new unsigned char[size];
for(int i = 0; i < size; i++)
ptr[i] = '0';
}
Array(const Array &obj) {
size = obj.size;
ptr = new unsigned char[size];
for(int i = 0; i < size; i++)
ptr[i] = obj.ptr[i];
}
~Array() {
delete []ptr;
}
unsigned char &operator[](int index) {
if(index >= 0 && index < size)
return ptr[index];
else
throw out_of_range("out_of_range");
}
friend ostream &operator <<(ostream &os, const Array &obj) {
for(int i = 0; i < obj.size; i++)
os << obj.ptr[i];
return os;
}
virtual Array operator +(const Array &obj2) {
for(int i = 0; i < obj2.size; i++)
{this->ptr[i] = (int)this->ptr[i] + (int)obj2.ptr[i] +'0';}
return *this;
}
protected:
static const int max_size = 10;
unsigned char *ptr;
int size;
};
class Money:public Array {
protected:
static const int max_size = 100;
};
int main() {
int n = 5;
Array table(n);
Array t(n);
cout << table <<'\n';
for(int i = 0; i < n; i++)
{table[i] = i +'0';
t[i] = i + 3 +'0';}
cout << table <<'\n';
cout << t <<'\n';
table = table+t;
cout << table <<'\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+IAojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8c3RyaW5nLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjbGFzcyBBcnJheSAgewpwdWJsaWM6CiAgICBBcnJheSgpICB7CiAgICAgICAgc2l6ZSA9IG1heF9zaXplOwogICAgICAgIHB0ciA9IG5ldyB1bnNpZ25lZCBjaGFyW3NpemVdOyAgICAgIAogICAgfQogICAgQXJyYXkoaW50IHNpemUpICB7CiAgICAgICAgaWYoc2l6ZSA8PSBtYXhfc2l6ZSkKICAgICAgICAgICAgdGhpcy0+c2l6ZSA9IHNpemU7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aGlzLT5zaXplID0gbWF4X3NpemU7CiAgICAgICAgcHRyID0gbmV3IHVuc2lnbmVkIGNoYXJbc2l6ZV07CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKICAgICAgICAgICAgcHRyW2ldID0gJzAnOwogICAgfQogICAgQXJyYXkoY29uc3QgQXJyYXkgJm9iaikgIHsKICAgICAgICBzaXplID0gb2JqLnNpemU7CiAgICAgICAgcHRyID0gbmV3IHVuc2lnbmVkIGNoYXJbc2l6ZV07CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKICAgICAgICAgICAgcHRyW2ldID0gb2JqLnB0cltpXTsKICAgIH0KICAgIH5BcnJheSgpICB7CiAgICAgICAgZGVsZXRlIFtdcHRyOwogICAgfQogICAgdW5zaWduZWQgY2hhciAmb3BlcmF0b3JbXShpbnQgaW5kZXgpICB7CiAgICAgICAgaWYoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNpemUpCiAgICAgICAgICAgIHJldHVybiBwdHJbaW5kZXhdOwogICAgICAgIGVsc2UKICAgICAgICAgICAgdGhyb3cgb3V0X29mX3JhbmdlKCJvdXRfb2ZfcmFuZ2UiKTsKIAogICAgfQogICAgZnJpZW5kIG9zdHJlYW0gJm9wZXJhdG9yIDw8KG9zdHJlYW0gJm9zLCBjb25zdCBBcnJheSAmb2JqKSAgewogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBvYmouc2l6ZTsgaSsrKQogICAgICAgICAgICBvcyA8PCBvYmoucHRyW2ldOwogICAgICAgIHJldHVybiBvczsKICAgIH0KICAgIAogICAgdmlydHVhbCBBcnJheSBvcGVyYXRvciArKGNvbnN0IEFycmF5ICZvYmoyKSAgewogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBvYmoyLnNpemU7IGkrKykKICAgICAgICAgICAge3RoaXMtPnB0cltpXSA9IChpbnQpdGhpcy0+cHRyW2ldICsgKGludClvYmoyLnB0cltpXSArJzAnO30KICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKcHJvdGVjdGVkOgogICAgc3RhdGljIGNvbnN0IGludCBtYXhfc2l6ZSA9IDEwOwogICAgdW5zaWduZWQgY2hhciAqcHRyOwogICAgaW50IHNpemU7Cn07CgpjbGFzcyBNb25leTpwdWJsaWMgQXJyYXkgIHsKcHJvdGVjdGVkOgogICAgc3RhdGljIGNvbnN0IGludCBtYXhfc2l6ZSA9IDEwMDsKCn07CiAKaW50IG1haW4oKSAgewoJaW50IG4gPSA1OwogICAgQXJyYXkgdGFibGUobik7CiAgICBBcnJheSB0KG4pOwogICAgY291dCA8PCB0YWJsZSA8PCdcbic7CiAKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAge3RhYmxlW2ldID0gaSArJzAnOwogICAgICAgIHRbaV0gPSBpICsgMyArJzAnO30KIAogICAgY291dCA8PCB0YWJsZSA8PCdcbic7CiAgICBjb3V0IDw8IHQgPDwnXG4nOwogICAgdGFibGUgPSB0YWJsZSt0OwogICAgY291dCA8PCB0YWJsZSA8PCdcbic7CgogICAgcmV0dXJuIDA7Cn0=