#include <iostream>
using namespace std;
class Polynomial{
  public:
  int *degCoeff;
  int capacity;
  
  
  // Default constructor
 Polynomial (){
   this->degCoeff = new int[6]{0};
   this->capacity = 6;
  // for(int i = 0;i<capacity;i++){
  //   cout<<degCoeff[i]<<" ";
  // }
  // cout<<endl;
 }
 // Copy constructor
 Polynomial (Polynomial const & p1){
   this->degCoeff = new int[p1.capacity];
   this->capacity = p1.capacity;
   for(int i = 0;i<capacity;i++){
     this->degCoeff[i] = p1.degCoeff[i];
   }
 }
 //Function to set the coefficient
 void setCoefficient(int degree , int coefficient){
   if(degree>=this->capacity){
     int*newdegCoeff = new int[degree+this->capacity];
     int newCapacity = degree+this->capacity;
     for(int i = 0;i<this->capacity;i++){
       newdegCoeff[i] = this->degCoeff[i];
     }
     this->degCoeff = newdegCoeff;
     this->capacity = newCapacity;
     
   }
   this->degCoeff[degree] = coefficient;
   
  
 }
 //Overloading the + operator
 Polynomial operator + (Polynomial  & p3){
   Polynomial p4;
   int*newdegCoeff = new int[max(this->capacity , p3.capacity)]{0};
   p4.degCoeff = newdegCoeff; 
   p4.capacity = max(this->capacity , p3.capacity);
   
   for(int i = 0;i<p4.capacity;i++){
     if(i == this->capacity ){
       p4.degCoeff[i] = p3.degCoeff[i];
     }
     else if(i == p3.capacity){
       p4.degCoeff[i] = this->degCoeff[i];
     }
     else{
     p4.degCoeff[i] = this->degCoeff[i]+p3.degCoeff[i];
    
     
     }
   
   }
   
   return p4;
 }
 Polynomial operator * (Polynomial const & p5){
   int maxCapacity = max(this->capacity,p5.capacity);
   Polynomial p6;
   p6.capacity = 2*maxCapacity;
   p6.degCoeff = new int[2*maxCapacity];
   for(int i = 0;i<this->capacity;i++){
     int degree = 0;
     for(int j = 0;j<p5.capacity;j++){
       degree = i+j;
       p6.degCoeff[degree] += this->degCoeff[i]*p5.degCoeff[j];
       
     }
   }
   return p6;
 }
 Polynomial operator - (Polynomial const & p3){
   Polynomial p4;
   int*newdegCoeff = new int[max(this->capacity , p3.capacity)]{0};
   p4.degCoeff = newdegCoeff; 
   p4.capacity = max(this->capacity , p3.capacity);
   
   for(int i = 0;i<p4.capacity;i++){
     if(i == this->capacity ){
       p4.degCoeff[i] = p3.degCoeff[i];
     }
     else if(i == p3.capacity ){
       p4.degCoeff[i] = this->degCoeff[i];
     }
     else{
     p4.degCoeff[i] = this->degCoeff[i]-p3.degCoeff[i];
       
     }
   }
   return p4;
 }
 Polynomial operator == (Polynomial  &p6){
   int * newdegCoeff = new int[this->capacity];
   p6.degCoeff = newdegCoeff;
   p6.capacity = this->capacity;
   for(int i = 0;i<this->capacity;i++){
     p6.degCoeff[i] = this->degCoeff[i];
   }
 }
 void print(){
   for(int i = 0;i<this->capacity;i++){
     if(this->degCoeff[i]!=0){
       cout<<this->degCoeff[i]<<"x"<<i<<" ";
     }
     
   }
   cout<<endl;
 }
  
  
};

int main() 
{
    int count1,count2,choice;
    cin >> count1;
    
    int *degree1 = new int[count1];
    int *coeff1 = new int[count1];
    
    for(int i=0;i < count1; i++) {
        cin >> degree1[i];
    }
    
    for(int i=0;i < count1; i++) {
        cin >> coeff1[i];
    }
    
    Polynomial first;
    for(int i = 0; i < count1; i++){
        first.setCoefficient(degree1[i],coeff1[i]);
    }
    first.print();
    cin >> count2;
    
    int *degree2 = new int[count2];
    int *coeff2 = new int[count2];
    
    for(int i=0;i < count2; i++) {
        cin >> degree2[i];
    }
    
    for(int i=0;i < count2; i++) {
        cin >> coeff2[i];
    }
    
    Polynomial second;
    for(int i = 0; i < count2; i++){
        second.setCoefficient(degree2[i],coeff2[i]);
    }
   second.print();
    cin >> choice;
    
    Polynomial result;
    switch(choice){
            // Add
        case 1:
            result = first + second;
            result.print();
            break;
            // Subtract
        case 2 :
            result = first - second;
            result.print();
            break;
            // Multiply
        case 3 :
            result = first * second;
            result.print();
            break;
            
        case 4 : // Copy constructor
        {
            Polynomial third(first);
            if(third.degCoeff == first.degCoeff) {
                cout << "false" << endl;
            }
            else {
                cout << "true" << endl;
            }
            break;
        }
            
        case 5 : // Copy assignment operator
        {
            Polynomial fourth(first);
            if(fourth.degCoeff == first.degCoeff) {
                cout << "false" << endl;
            }
            else {
                cout << "true" << endl;
            }
            break;
        }
            
    }
    
    return 0;
} 
by

C++ Online Compiler

Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++ and start coding!

Read inputs from stdin

OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string name;
    cout << "Enter name:";
    getline (cin, name);
    cout << "Hello " << name;
    return 0;
}

About C++

C++ is a widely used middle-level programming language.

  • Supports different platforms like Windows, various Linux flavours, MacOS etc
  • C++ supports OOPS concepts like Inheritance, Polymorphism, Encapsulation and Abstraction.
  • Case-sensitive
  • C++ is a compiler based language
  • C++ supports structured programming language
  • C++ provides alot of inbuilt functions and also supports dynamic memory allocation.
  • Like C, C++ also allows you to play with memory using Pointers.

Syntax help

Loops

1. If-Else:

When ever you want to perform a set of operations based on a condition If-Else is used.

if(conditional-expression) {
   //code
}
else {
   //code
}

You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.

2. Switch:

Switch is an alternative to If-Else-If ladder.

switch(conditional-expression){    
case value1:    
 // code    
 break;  // optional  
case value2:    
 // code    
 break;  // optional  
......    
    
default:     
 code to be executed when all the above cases are not matched;    
} 

3. For:

For loop is used to iterate a set of statements based on a condition.

for(Initialization; Condition; Increment/decrement){  
  //code  
} 

4. While:

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while (condition) {  
// code 
}  

5. Do-While:

Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.

do {  
 // code 
} while (condition); 

Functions

Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.

How to declare a Function:

return_type function_name(parameters);

How to call a Function:

function_name (parameters)

How to define a Function:

return_type function_name(parameters) {  
 // code
}