You will create a C program that can evaluate arithmetic ope
You will create a C++ program that can evaluate arithmetic operators with integer numbers having any number of digits. These numbers are an alternative to xed size integers or oating point numbers that always have a maximum number of accurate digits (dependent on size of CPU register).
The input is a regular text le, where each line is terminated with an end-of-line character(s). Each line will containanarithmeticoperationbetweentwonumbers. Theprogramshoulddisplaytheinputexpressionand the results, separated with =.
The main program should be called ”innitearithmetic”.
 infinitearithmetic \"input=<file name>;digitsPerNode=<number>\".
The following is the pseudocode
// DoubleLinkedList.h
 struct Node {
    long long num;
    Node* prev;
    Node* next;
 };
class DoubleLinkedList {
 public:
 DoubleLinkedList(); // default construct
    ~DoubleLinkedList(); // deconstruct
    DoubleLinkedList(const std::string& num, int digitsPerNode); // user defined construct
    DoubleLinkedList(const DoubleLinkedList& list); // copy construct
    DoubleLinkedList& operator = (const DoubleLinkedList& list); // assignment consturct
 public:
 DoubleLinkedList operator + (const DoubleLinkedList& list) const;
    DoubleLinkedList operator * (const DoubleLinkedList& list) const;
    // optional
    DoubleLinkedList operator - (const DoubleLinkedList& list) const;
    // 10% extra
    DoubleLinkedList operator / (const DoubleLinkedList& list) const;
    // 20% extra
    DoubleLinkedList Sqrt(const DoubleLinkedList& list) const;
 public:
 const Node* GetHead() const;
    const Node* GetTail() const;
    void Append(Node* node);
    void Print() const;
 private:
 Node* head;
 Node* tail;
 int m_digitsPerNode;
    long long remainder; // for / operator
    float decimal; // for sqrt() 7 valid digits.
 }
// main.cpp
 #include \"ArgumentManager.h\"
 int main(int argc, char* argv[])
 {
    if (argc < 2) {
        std::cerr(\"Usage: infinitearithmetic \\\"filename=xyz.txt;digitsPerNode=<number>\\\"\ \");
    }
    ArgumentManager am(argc, argv);
    std::string filename = am.get(\"filename\");
    int digitsPerNode = std::stoi(am.get(\"digitsPerNode\"));
    std::ifstream ifs(filename.c_str());
    std::string line;
    while (getline(ifs, line)){
        std::string num1;
        std::string num2;
        std::string op;
        // get num1 num2 and operator in line
 // ...
        DoubleLinkedList l1(num1, digitsPerNode); // DoubleLinkedList(const std::string& num, int digitsPerNode)
        DoubleLinkedList l2(num2, digitsPerNode);
        DoubleLinkedList l(); // DoubleLinkedList();
        if (/* plus */)
        {l = l1 + l2;} // DoubleLinkedList operator + (const DoubleLinkedList& list) const; DoubleLinkedList& operator = (const DoubleLinkedList& list);
        else if (/* mult */) // DoubleLinkedList operator * (const DoubleLinkedList& list) const;
        {l = l1 * l2;}
        else if (/* div */)
        {l = l1 / l2;} // DoubleLinkedList operator / (const DoubleLinkedList& list) const;
        else if (...)
        {//...}
        else {
            // ...
        }
       
        // output result
    }
       
    return 0;
 }
Solution
For this question we have the following program:
#include<iostream.h>
 #include<fstream.h>
 #include<stdio.h>
 #include<string.h>
int main() {
ifstream myReadFile;
 myReadFile.open(\"input.txt\"); //Name of Input File
 char input[100];
 String operand={\"\",\"\"};
 char operation;
 int n1,n2;
 int i=0;
 while (!myReadFile.eof()) {
 myReadFile >> input;
 if(input!=\"\ \")
 { cout<<input;
    if(input!=\'+\'|| input!=\'-\'|| input!=\'/\'|| input!=\'*\')
    {
    operand[i]=operand[i]+input;
    }
    else
    {
        operation=input;
        i=1;
    }
 else
 {
    cout<<\"=\";
    n1=atoi(operand[0]); // Convert String into number
    n2=atoi(operand[1]);
    if(operation==\"+\")
        cout<<n1+n2;
    elseif(operation==\"-\")
        cout<<n1-n2;
    elseif(operation==\"/\")
        cout<<n1/n2;
    else
        cout<<n1*n2;
    i=0;
 }
}
}
 myReadFile.close();
 getch();
 return 0;
 }



