Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Number {
- public:
- virtual double doubleValue()=0;
- virtual int intValue()=0;
- virtual void print()=0;
- };
- class Integer :public Number{
- private:
- int broj;
- public:
- Integer(){
- }
- Integer(int broj){
- this->broj=broj;
- }
- Integer(const Integer &i){
- this->broj=i.broj;
- }
- void setBroj(int broj){
- this->broj=broj;
- }
- int getBroj(){
- return broj;
- }
- ~Integer(){
- }
- double doubleValue(){
- return broj;
- }
- int intValue(){
- return (double) broj;
- }
- void print(){
- cout<<"Integer: "<<broj<<endl;
- }
- };
- class Double : public Number {
- private:
- double br;
- public:
- Double(){
- }
- Double(double br){
- this->br=br;
- }
- Double(const Double &d){
- this->br=d.br;
- }
- ~Double(){
- }
- double doubleValue(){
- return br;
- }
- int intValue(){
- return br;
- }
- void print(){
- cout<<"Double: "<<br<<endl;
- }
- };
- class Numbers{
- private:
- Number **numbers;
- int brojach;
- public:
- Numbers(){
- }
- Numbers( Number *numbers, int brojach){
- this->numbers=new Number*[(brojach)+1];
- for(int i=0;i<brojach;i++)
- numbers[i]=numbers[i];
- this->brojach=brojach;
- }
- Numbers( const Numbers &n){
- this->brojach=n.brojach;
- this->numbers=new Number*[(n.brojach)+1];
- for(int i=0;i<n.brojach;i++)
- numbers[i]=n.numbers[i];
- }
- Numbers &operator += (Number * n){
- Number ** tmp = new Number * [this->brojach+1];
- for (int i=0;i<brojach;i++)
- tmp[i]=numbers[i];
- tmp[brojach++]=n;
- delete [] numbers;
- numbers=tmp;
- return *this;
- }
- Numbers &operator = (const Numbers &n){
- if (this!=&n){
- delete [] numbers;
- this->brojach=n.brojach;
- this->numbers=new Number*[(n.brojach)+1];
- for(int i=0;i<n.brojach;i++)
- numbers[i]=n.numbers[i];
- }
- return *this;
- }
- ~Numbers(){
- delete []numbers;
- }
- void statistics() {
- int integers=0,doubles=0;
- int sumInt=0;
- double sumAll=0.0;
- double sumDouble=0.0;
- for (int i=0;i<brojach;i++){
- Integer * integer = dynamic_cast<Integer *>(numbers[i]);
- if (integer!=0){
- integers++;
- sumInt+=numbers[i]->intValue();
- }
- Double * doublee = dynamic_cast<Double *>(numbers[i]);
- if (doublee!=0){
- doubles++;
- sumDouble+=numbers[i]->doubleValue();
- }
- sumAll+=numbers[i]->doubleValue();
- }
- cout<<"Count of numbers: "<<brojach<<endl;
- cout<<"Sum of all numbers: "<<sumAll<<endl;
- cout<<"Count of integer numbers: "<<integers<<endl;
- cout<<"Sum of integer numbers: "<<sumInt<<endl;
- cout<<"Count of double numbers: "<<doubles<<endl;
- cout<<"Sum of double numbers: "<<sumDouble<<endl;//[сума на сите децимални броеви (Double)]
- }
- void integersLessThan (Integer n) {
- bool flag = true;
- for (int i=0;i<brojach;i++){
- Integer * integer = dynamic_cast<Integer *>(numbers[i]);
- if (integer!=0&&numbers[i]->intValue()<n.intValue()){
- numbers[i]->print();
- flag=false;
- }
- }
- if (flag)
- cout<<"None"<<endl;
- }
- void doublesBiggerThan (Double n) {
- bool flag = true;
- for (int i=0;i<brojach;i++){
- Double * doublee = dynamic_cast<Double *>(numbers[i]);
- if (doublee!=0 && numbers[i]->doubleValue()>n.doubleValue()){
- numbers[i]->print();
- flag=false;
- }
- }
- if (flag)
- cout<<"None"<<endl;
- }
- };
- int main() {
- int n;
- cin>>n;
- Numbers numbers;
- for (int i=0;i<n;i++){
- int type;
- double number;
- cin>>type>>number;
- if (type==0){//Integer object
- Integer * integer = new Integer((int) number);
- numbers+=integer;
- }
- else {
- Double * doublee = new Double(number);
- numbers+=doublee;
- }
- }
- int lessThan;
- double biggerThan;
- cin>>lessThan;
- cin>>biggerThan;
- cout<<"STATISTICS FOR THE NUMBERS\n";
- numbers.statistics();
- cout<<"INTEGER NUMBERS LESS THAN "<<lessThan<<endl;
- numbers.integersLessThan(Integer(lessThan));
- cout<<"DOUBLE NUMBERS BIGGER THAN "<<biggerThan<<endl;
- numbers.doublesBiggerThan(Double(biggerThan));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement