Program to find the indefinite Integration of the given Polynomial (original) (raw)

Last Updated : 27 Sep, 2022

Given a polynomial string str, the task is to integrate the given string and print the string after integrating it. Note: The input format is such that there is a whitespace between a term and the ‘+’ symbol. Examples:

Input: str = "4X3 + 3X1 + 2X2" Output: X4 + (3/2)X2 + (2/3)X3 + C Input: str = "5X3 + 7X1 + 2X2 + 1X0" Output: (5/4)X4 + (7/2)X2 + (2/3)X3 + Xq + C

Approach: The idea is to observe that when the given equation consists of multiple polynomials p(x) = p1(x) + p2(x) , the integration of the given polynomial P(x) = P1(x) + P2(x) . Also it is known that the indefinite integral of p(x) = AX^N is P(x) = \frac{A*X^{N + 1}}{N + 1 }+ C . Therefore, we split the given string and integrate every term in it. Below is the implementation of the above approach:

CPP `

// C++ program to find the indefinite // integral of the given polynomial

#include "bits/stdc++.h" #define MOD (1e9 + 7); using ll = int64_t; using ull = uint64_t; #define ll long long using namespace std;

// Function to perform the integral // of each term string inteTerm(string pTerm) { // Get the coefficient string coeffStr = "", S = ""; int i;

// Loop to iterate and get the
// Coefficient
for (i = 0; pTerm[i] != 'x'; i++)
    coeffStr.push_back(pTerm[i]);
long long coeff
    = atol(coeffStr.c_str());

string powStr = "";

// Loop to find the power
// of the term
for (i = i + 2; i != pTerm.size(); i++)
    powStr.push_back(pTerm[i]);

long long power
    = atol(powStr.c_str());
string a, b;
ostringstream str1, str2;

// For ax^n, we find a*x^(n+1)/(n+1)
str1 << coeff;
a = str1.str();
power++;
str2 << power;
b = str2.str();
S += "(" + a + "/" + b + ")X^" + b;

return S;

}

// Function to find the indefinite // integral of the given polynomial string integrationVal(string& poly) {

// We use istringstream to get the
// input in tokens
istringstream is(poly);

string pTerm, S = "";

// Loop to iterate through
// every term
while (is >> pTerm) {

    // If the token = '+' then
    // continue with the string
    if (pTerm == "+") {
        S += " + ";
        continue;
    }

    if (pTerm == "-") {
        S += " - ";
        continue;
    }

    // Otherwise find
    // the integration of
    // that particular term
    else
        S += inteTerm(pTerm);
}
return S;

}

// Driver code int main() { string str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; cout << integrationVal(str) << " + C "; return 0; }

Java

// Java program to find the indefinite // integral of the given polynomial import java.util.*;

class GFG {

// Function to perform the integral // of each term static String inteTerm(String pTerm) { // Get the coefficient String coeffStr = "", S = ""; int i;

// Loop to iterate and get the
// Coefficient
for (i = 0; pTerm.charAt(i) != 'x'; i++)
  coeffStr += (pTerm.charAt(i));
long coeff = Long.valueOf(coeffStr);

String powStr = "";

// Loop to find the power
// of the term
for (i = i + 2; i != pTerm.length(); i++)
  powStr += (pTerm.charAt(i));

long power = Long.valueOf(powStr);
String a, b;

// For ax^n, we find a*x^(n+1)/(n+1)
a = String.valueOf(coeff);
power++;
b = String.valueOf(power);
S += "(" + String.valueOf(a) + "/"
  + String.valueOf(b) + ")X^"
  + String.valueOf(b);

return S;

}

// Function to find the indefinite // integral of the given polynomial static String integrationVal(String poly) {

// We use iStringstream to get the
// input in tokens
String[] is1 = poly.split(" ");

String S = "";

// Loop to iterate through
// every term
for (String pTerm : is1) {

  // If the token = '+' then
  // continue with the String
  if (pTerm.equals("+")) {
    S += " + ";
    continue;
  }

  if (pTerm.equals("-")) {
    S += " - ";
    continue;
  }

  // Otherwise find
  // the integration of
  // that particular term
  else
    S += inteTerm(pTerm);
}
return S;

}

// Driver code public static void main(String[] args) { String str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; System.out.println(integrationVal(str) + " + C "); } }

// This code is contributed by phasing17

Python3

Python3 program to find the indefinite

integral of the given polynomial

MOD = 1000000007

Function to perform the integral

of each term

def inteTerm( pTerm):

# Get the coefficient
coeffStr = ""
S = "";

# Loop to iterate and get the
# Coefficient
i = 0
while pTerm[i] != 'x':
    coeffStr += (pTerm[i]);
    i += 1
coeff = int(coeffStr)

powStr = "";

# Loop to find the power
# of the term
for j in range(i + 2, len(pTerm)):
    powStr += (pTerm[j]);

power = int(powStr)
a = ""
b = "";

# For ax^n, we find a*x^(n+1)/(n+1)
str1 = coeff;
a = str1
power += 1
str2 = power;
b = str2
S += "(" + str(a) + "/" + str(b) + ")X^" + str(b);

return S;

Function to find the indefinite

integral of the given polynomial

def integrationVal(poly):

# We use istringstream to get the
# input in tokens
is1 = poly.split();

S = "";

# Loop to iterate through
# every term
for pTerm in is1:

    # If the token = '+' then
    # continue with the string
    if (pTerm == "+") :
        S += " + ";
        continue;
    

    if (pTerm == "-"):
        S += " - ";
        continue;
    

    # Otherwise find
    # the integration of
    # that particular term
    else:
        S += inteTerm(pTerm);

return S;

Driver code

str1 = "5x^3 + 7x^1 + 2x^2 + 1x^0"; print(integrationVal(str1) + " + C ");

This code is contributed by phasing17

C#

// C# program to find the indefinite // integral of the given polynomial

using System; using System.Collections.Generic;

class GFG {

// Function to perform the integral
// of each term
static string inteTerm(string pTerm)
{
    // Get the coefficient
    string coeffStr = "", S = "";
    int i;

    // Loop to iterate and get the
    // Coefficient
    for (i = 0; pTerm[i] != 'x'; i++)
        coeffStr += (pTerm[i]);
    long coeff = Convert.ToInt64(coeffStr);

    string powStr = "";

    // Loop to find the power
    // of the term
    for (i = i + 2; i != pTerm.Length; i++)
        powStr += (pTerm[i]);

    long power = Convert.ToInt64(powStr);
    string a, b;

    // For ax^n, we find a*x^(n+1)/(n+1)
    a = Convert.ToString(coeff);
    power++;
    b = Convert.ToString(power);
    S += "(" + Convert.ToString(a) + "/"
         + Convert.ToString(b) + ")X^"
         + Convert.ToString(b);

    return S;
}

// Function to find the indefinite
// integral of the given polynomial
static string integrationVal(string poly)
{

    // We use istringstream to get the
    // input in tokens
    string[] is1 = poly.Split(" ");

    string S = "";

    // Loop to iterate through
    // every term
    foreach(string pTerm in is1)
    {

        // If the token = '+' then
        // continue with the string
        if (pTerm == "+") {
            S += " + ";
            continue;
        }

        if (pTerm == "-") {
            S += " - ";
            continue;
        }

        // Otherwise find
        // the integration of
        // that particular term
        else
            S += inteTerm(pTerm);
    }
    return S;
}

// Driver code
public static void Main(string[] args)
{
    string str = "5x^3 + 7x^1 + 2x^2 + 1x^0";
    Console.WriteLine(integrationVal(str) + " + C ");
}

}

// This code is contributed by phasing17

JavaScript

// JavaScript program to find the indefinite // integral of the given polynomial

let MOD = (1e9 + 7);

// Function to perform the integral // of each term function inteTerm( pTerm) { // Get the coefficient let coeffStr = "", S = ""; let i;

// Loop to iterate and get the
// Coefficient
for (i = 0; pTerm[i] != 'x'; i++)
    coeffStr += (pTerm[i]);
let coeff
    = parseInt(coeffStr)

let powStr = "";

// Loop to find the power
// of the term
for (i = i + 2; i != pTerm.length; i++)
    powStr += (pTerm[i]);

let power
    = parseInt(powStr)
let a = "", b = "";
let str1, str2;

// For ax^n, we find a*x^(n+1)/(n+1)
str1 = coeff;
a = str1
power++;
str2 = power;
b = str2
S += "(" + a + "/" + b + ")X^" + b;

return S;

}

// Function to find the indefinite // integral of the given polynomial function integrationVal(poly) {

// We use istringstream to get the
// input in tokens
let is = poly.split(" ");

let pTerm, S = "";

// Loop to iterate through
// every term
for (pTerm of is)
{
    // If the token = '+' then
    // continue with the string
    if (pTerm == "+") {
        S += " + ";
        continue;
    }

    if (pTerm == "-") {
        S += " - ";
        continue;
    }

    // Otherwise find
    // the integration of
    // that particular term
    else
        S += inteTerm(pTerm);
}
return S;

}

// Driver code let str = "5x^3 + 7x^1 + 2x^2 + 1x^0"; console.log(integrationVal(str) + " + C ");

// This code is contributed by phasing17

`

Output:

(5/4)X^4 + (7/2)X^2 + (2/3)X^3 + (1/1)X^1 + C