bsc

Comprehensive codebase and cou...
Log | Files | Refs | Activity | README | LICENSE

root / semester_2 / tuition / apc_002.cpp

apc_002.cpp (4182B)


      1 /* Write a C++ program to add two polynomial equations and display the resultant polynomial. */
      2 
      3 #include<iostream>
      4 using namespace std;
      5 
      6 typedef struct Node { 
      7     double coeff;
      8     int expo;
      9     Node *next;
     10 } node;
     11 
     12 class mains {
     13 private: 
     14 node *head1 = nullptr, *head2 = nullptr, *rear = nullptr;
     15 public: 
     16     void input() {
     17         int n1;
     18         cout << "Enter the degree of first polynomial equation: ";
     19         cin >> n1;
     20         for(int i = 0; i <= n1; i++) {
     21             node *newNode = new node;
     22             cout << "Enter the coefficient for n^" << i << ": ";
     23             cin >> newNode -> coeff;
     24             newNode -> expo = i;
     25             newNode -> next = nullptr;
     26 
     27             if(head1 == nullptr) {
     28                 head1 = newNode;
     29                 rear = newNode;
     30             } else {
     31                 rear -> next = newNode;
     32                 rear = newNode;
     33             }
     34         }
     35         cout << "You entered: ";
     36         display(head1); 
     37         cout  << endl;
     38         
     39         int n2;
     40         cout << "\nEnter the degree of second polynomial equation: ";
     41         cin >> n2;
     42         for(int i = 0; i <= n2; i++) {
     43             node *newNode = new node;
     44             cout << "Enter the coefficient for n^" << i << ": ";
     45             cin >> newNode -> coeff;
     46             newNode -> expo = i;
     47             newNode -> next = nullptr;
     48 
     49             if(head2 == nullptr) {
     50                 head2 = newNode;
     51                 rear = newNode;
     52             } else {
     53                 rear -> next = newNode;
     54                 rear = newNode;
     55             }
     56         }
     57         cout << "You entered: ";
     58         display(head2); 
     59         cout << endl;
     60     }
     61 
     62     void display(node *head) {
     63         node *temp = head;
     64         bool first = true;
     65         bool second = true;
     66         while(temp != nullptr) {
     67             if(first) {
     68                 cout << temp -> coeff;
     69                 first = false;
     70                 temp = temp -> next;
     71             }
     72             if(second) {
     73                 if(temp -> coeff >= 0)
     74                     cout << " + " << temp -> coeff << "x";
     75                 else
     76                     cout << " - " << (-temp -> coeff) << "x";
     77                 second = false;
     78             } else {
     79                 if(temp -> coeff >= 0)
     80                     cout << " + " << temp -> coeff << "x^" << temp -> expo;
     81                 else
     82                     cout << " - " << (-temp -> coeff) << "x^" << temp -> expo;
     83             }
     84             temp = temp -> next;
     85         }
     86     }
     87 
     88     void calc() {
     89         node *head = nullptr, *temp1 = head1, *temp2 = head2, *rear = nullptr;
     90         while(temp1 != nullptr && temp2 != nullptr) {
     91             node *newNode = new node;
     92             newNode -> coeff = (temp1 -> coeff + temp2 -> coeff);
     93             newNode -> expo = temp1 -> expo;
     94             newNode -> next = nullptr;
     95 
     96             if(head == nullptr) {
     97                 head = newNode;
     98                 rear = newNode;
     99             } else {
    100                 rear -> next = newNode;
    101                 rear = newNode;
    102             }
    103 
    104             temp1 = temp1 -> next;
    105             temp2 = temp2 -> next;
    106         }
    107         
    108         while(temp1 != nullptr) {
    109             node *newNode = new node;
    110             newNode -> coeff = temp1 -> coeff;
    111             newNode -> expo = temp1 -> expo;
    112             newNode -> next = nullptr;
    113 
    114             rear -> next = newNode;
    115             rear = newNode;
    116 
    117             temp1 = temp1 -> next;
    118         }
    119 
    120         while(temp2 != nullptr) {
    121             node *newNode = new node;
    122             newNode -> coeff = temp2 -> coeff;
    123             newNode -> expo = temp2 -> expo;
    124             newNode -> next = nullptr;
    125 
    126             rear -> next = newNode;
    127             rear = newNode;
    128 
    129             temp2 = temp2 -> next;
    130         }
    131 
    132         cout << "\nSum: ";
    133         display(head);
    134         freeList(head);
    135     }
    136 
    137     void freeList(node *head) {
    138         node *temp;
    139         while(head != nullptr) {
    140             temp = head;
    141             head = head -> next;
    142             delete temp;
    143         }
    144     }
    145     void doAll() {
    146         input();
    147         calc();
    148         freeList(head1);
    149         freeList(head2);
    150     }
    151 };
    152 
    153 int main() {
    154     mains obj;
    155     obj.doAll();
    156     return 0;
    157 }
© notamitgamer • Site Built: 2026-09-05 01:53:16 UTC • git-mirror commit: c170d72 [view raw info]
Originally created with stagit • modified by notamitgamer
Forked from github.com/notamitgamer/git-mirror