-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathpolynomial.c
77 lines (70 loc) · 1.7 KB
/
polynomial.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
Author : Fakhra Najm
email : fnajm09@gmail.com
polynomial via linkedList
* 1. create.
* 2. evaluate.
* 3. display.
*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
struct polynomial
{
int coeff;
int exponent;
struct polynomial *next_term;
}*head_term = NULL, *last = NULL;
struct polynomial *createNode(int coefficient, int exp){
struct polynomial *node = (struct polynomial*)malloc(sizeof(struct polynomial));
if(head_term == NULL){
head_term = (struct polynomial *)malloc(sizeof(struct polynomial));
head_term->coeff = coefficient;
head_term->exponent = exp;
head_term->next_term = NULL;
last = head_term;
return head_term;
}
else{
last->next_term = node;
node->coeff = coefficient;
node->exponent = exp;
node->next_term = NULL;
last = node;
}
return node;
}
void createTerm(struct polynomial *head_term){
int terms, coefficient, exp;
printf("Enter number of terms\n");
scanf("%d", &terms);
printf("enter all terms details\n");
for (int i = 0; i < terms; ++i){
scanf("%d%d", &coefficient, &exp);
createNode(coefficient, exp);
}
}
int evaluateTerms(struct polynomial * head_term, int var_value){
int result = 0;
while(head_term){
result = result + (head_term->coeff)*pow(var_value, head_term->exponent);
head_term = head_term->next_term;
}
return result;
}
void printTerms(struct polynomial *head_term){
while(head_term){
printf("%dx%d+", head_term->coeff, head_term->exponent );
head_term = head_term->next_term;
}
printf("\n");
}
int main(){
int var_value;
createTerm(head_term);
printTerms(head_term);
printf("Enter variable value:\n");
scanf("%d", &var_value);
printf("Result : %d\n",evaluateTerms(head_term, var_value) );
return 0;
}