#include <iostream> #include <stdio> #include <string> using namespace std; class Node { public: int coefficient, exponent; Node *next; Node(int c, int e) { coefficient = c; exponent = e; next = NULL; } }; class PolynomialExpression { public: Node *head, *tail; PolynomialExpression() { head = NULL; tail = NULL; } void appendNode(int, int); void printPolynomial(); friend PolynomialExpression add(PolynomialExpression, PolynomialExpression); }; void PolynomialExpression::appendNode(int c, int e) { Node *newNode = new Node(c, e); if(head == NULL) { head = newNode; tail = newNode; } else { Node *prev = NULL, *curr = head; while(curr != NULL && curr->exponent>e) { prev = curr; curr = curr->next; } if(curr != NULL && curr->exponent == e) { curr->coefficient += c; if(curr->coefficient == 0) { if(curr == head) { head = curr->next; } else if(curr == tail) { tail = prev; prev->next = NULL; } else { prev->next = curr->next; } delete curr; } else { delete newNode; } } else { if(curr == head) { head = newNode; } else { prev->next = newNode; } newNode->next = curr; if(curr == NULL) { tail = newNode; } } } } PolynomialExpression add(PolynomialExpression exp1, PolynomialExpression exp2) { PolynomialExpression result; Node *temp1 = exp1.head, *temp2 = exp2.head; while(temp1 != NULL && temp2 != NULL) { if(temp1->exponent == temp2->exponent) { int sum = temp1->coefficient + temp2->coefficient; if(sum != 0) { result.appendNode(sum, temp1->exponent); } temp1 = temp1->next; temp2 = temp2->next; } else if(temp1->exponent>temp2->exponent) { result.appendNode(temp1->coefficient, temp1->exponent); temp1 = temp1->next; } else { result.appendNode(temp2->coefficient, temp2->exponent); temp2 = temp2->next; } } while(temp1 != NULL) { result.appendNode(temp1->coefficient, temp1->exponent); temp1 = temp1->next; } while(temp2 != NULL) { result.appendNode(temp2->coefficient, temp2->exponent); temp2 = temp2->next; } return result; } PolynomialExpression getPolynomialExpression(string polynomialStr) { PolynomialExpression exp; int len = polynomialStr.length(); int i = 0; while(i<len) { int sign = 1; if(polynomialStr[i] == ‘-‘) { sign = -1; i++; } else if(polynomialStr[i] == ‘+’) { sign = 1; i++; } int coefficient = 0, exponent = 0; while(i < len && polynomialStr[i]>=’0’ && polynomialStr[i] <= ‘9’) { coefficient = coefficient * 10 + (polynomialStr[i] - ’0’); i++; } if(i < len && polynomialStr[i] == ‘x’) { i++; if(i < len && polynomialStr[i] == ‘^’) { i++; while(i < len && polynomialStr[i] >= ‘0’ && polynomialStr[i] <= ‘9’) { exponent = exponent * 10 + (polynomialStr[i] – ‘0’); i++; } } else { exponent = 1; } } else { exponent = 0; } coefficient *= sign; exp.appendNode(coefficient, exponent); } return exp; } void PolynomialExpression::printPolynomial() { Node *temp = head; while(temp != NULL) { cout <<showpos <<temp->coefficient; cout <<noshowpos <<”x^”<<temp->exponent; temp = temp->next; } } int main() { string polynomialStr1, polynomialStr2; cin >>polynomialStr1>>polynomialStr2; int len1 = polynomialStr1.length(); int len2 = polynomialStr2.length(); if(len1<5 || len1>1000) { cout <<”Length of expression 1 not in boundary” ; } if(len2 <5 || len2>1000) { cout <<”Length of expression 2 not in boundary”; } PolynomialExpression exp1 = getPolynomialExpression(polynomialStr1); PolynomialExpression exp2 = getPolynomialExpression(polynomialStr2); PolynomialExpression result = add(exp1, exp2); printf(“Polynomial Addition: “ ); result.printPolynomial(); }
Write, Run & Share C Language code online using OneCompiler's C online compiler for free. It's one of the robust, feature-rich online compilers for C language, running the latest C version which is C18. Getting started with the OneCompiler's C editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'C' and start coding!
OneCompiler's C online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample C program which takes name as input and print your name with hello.
#include <stdio.h>
int main()
{
char name[50];
printf("Enter name:");
scanf("%s", name);
printf("Hello %s \n" , name );
return 0;
}
C language is one of the most popular general-purpose programming language developed by Dennis Ritchie at Bell laboratories for UNIX operating system. The initial release of C Language was in the year 1972. Most of the desktop operating systems are written in C Language.
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.
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;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
// code
}
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
}
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);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type array-name[size];
data-type array-name[size][size];
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.
Two types of functions are present in C
Library functions are the in-built functions which are declared in header files like printf(),scanf(),puts(),gets() etc.,
User defined functions are the ones which are written by the programmer based on the requirement.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
//code
}