Untitled

 avatar
unknown
plain_text
a year ago
2.5 kB
4
Indexable
#include<iostream>

using namespace std;

class Term{
private:
    int value;
    int position;
    char sign;
    bool isLast = false;

public:
    Term(){

    }

    Term(int value, int position, char sign){
        this->value = value;
        this->position = position;
        this->sign = sign;
    }

    ~Term(){
        cout << "Getting Destructed!!!!" << endl;
    }

    void setValue(int value){
        this->value = value;
    }

    int getValue(){
        return this->value;
    }

    void setPosition(int position){
        this->position = position;
    }

    int getPosition(){
        return this->position;
    }

    void setSign(char sign){
        this->sign = sign;
    }

    char getSign(){
        return this->sign;
    }

    void setIsLast(bool isLast){
        this->isLast = isLast;
    }

    bool getIsLast(){
        return this->isLast;
    }

    void printTerm(){
        //cout << "Value of is Last: " << this->isLast << endl;
        if(this->isLast){
            cout << this->sign << " " << this->value << " = ";
        }
        else{
            if(this->position == 0){
                cout << this->value << " ";
            }
            else{
                cout << this->sign << " " << this->value << " ";
            }
        }
    }


};

int main(void){
    int number,sum=0;
    cout << "Enter The Number of Terms You want to Sum:" << endl;
    cin >> number;

    Term* termBeforePreviousTerm = new Term();
    Term* previousTerm = new Term();

    for(int index = 0; index < number; index++){
        bool isEvenPosTerm = (index % 2 == 0);
        Term* currentTerm = new Term();

        if(index < 2){
            currentTerm = new Term(index, index, isEvenPosTerm ? '+' : '-');
        }
        else{
            int value = previousTerm->getValue() + termBeforePreviousTerm->getValue();
            currentTerm = new Term(value, index, isEvenPosTerm ? '+' : '-');
        }

        if(index == number - 1){
            currentTerm->setIsLast(true);
        }

        currentTerm->printTerm();

        if(currentTerm->getSign() == '+'){
            sum += currentTerm->getValue();
        }
        else{
            sum -= currentTerm->getValue();
        }

        termBeforePreviousTerm = previousTerm;
        previousTerm = currentTerm;

        if(index == number - 1){
            cout << sum << endl;

            delete termBeforePreviousTerm;
            delete previousTerm;
            delete currentTerm;
        }
    }

    return 0;
}
Editor is loading...
Leave a Comment