Write a C program to add two polynomials using structures.
#include <stdio.h>
#include <stdlib.h>
struct polynomial {
int power;
float coeff;
};
int main() {
struct polynomial *p1, *p2, *p3;
int i, pow1, pow2, max, flag = 0;
/* get the max powers of first and second polynomial */
printf("Maximum power in first polynomial:");
scanf("%d", &pow1);
printf("Maximum power in second polynomial:");
scanf("%d", &pow2);
/* dynamic memory allocation for input polynomials */
p1 = (struct polynomial *)calloc(sizeof(struct polynomial), pow1 + 1);
p2 = (struct polynomial *)calloc(sizeof(struct polynomial), pow2 + 1);
/* get the first polynomial input from the user */
printf("Enter your input for first polynomial:\n");
for (i = 0; i <= pow1; i++) {
printf("%dX^%d => ", i , i);
(p1 + i)->power = i;
printf("Coefficient:");
scanf("%f", &((p1 + i)->coeff));
}
#include <stdlib.h>
struct polynomial {
int power;
float coeff;
};
int main() {
struct polynomial *p1, *p2, *p3;
int i, pow1, pow2, max, flag = 0;
/* get the max powers of first and second polynomial */
printf("Maximum power in first polynomial:");
scanf("%d", &pow1);
printf("Maximum power in second polynomial:");
scanf("%d", &pow2);
/* dynamic memory allocation for input polynomials */
p1 = (struct polynomial *)calloc(sizeof(struct polynomial), pow1 + 1);
p2 = (struct polynomial *)calloc(sizeof(struct polynomial), pow2 + 1);
/* get the first polynomial input from the user */
printf("Enter your input for first polynomial:\n");
for (i = 0; i <= pow1; i++) {
printf("%dX^%d => ", i , i);
(p1 + i)->power = i;
printf("Coefficient:");
scanf("%f", &((p1 + i)->coeff));
}
/* get the second polynomial input from the user */
printf("Enter your input for second polynomial:\n");
for (i = 0; i <= pow2; i++) {
printf("%dX^%d => ", i , i);
(p2 + i)->power = i;
printf("Coefficient:");
scanf("%f", &((p2 + i)->coeff));
}
max = pow1 > pow2 ? pow1 : pow2;
/* dynamically allocate memory for output polynomial */
p3 = (struct polynomial *)calloc(sizeof(struct polynomial), max + 1);
/* add given two polynomials and store the result in output polynomial */
for (i = 0; i <= max; i++) {
if (i <= pow1 && i <= pow2) {
(p3 + i)->power = (p1 + i)->power;
(p3 + i)->coeff = (p1 + i)->coeff + (p2 + i)->coeff;
} else if (i <= pow1) {
(p3 + i)->power = (p1 + i)->power;
(p3 + i)->coeff = (p1 + i)->coeff;
} else {
(p3 + i)->power = (p2 + i)->power;
(p3 + i)->coeff = (p2 + i)->coeff;
}
}
/* print the results */
printf("Sum of the given two polynomials:\n");
for (i = max; i >= 0; i--) {
if (flag)
printf(" + ");
printf("%.1fX^%d", (p3 + i)->coeff, (p3 + i)->power);
flag = 1;
}
printf("\n");
return 0;
}
Output:
jp@jp-VirtualBox:~/$ ./a.out
Maximum power in first polynomial:5
Maximum power in second polynomial:3
Enter your input for first polynomial:
0X^0 => Coefficient:1
1X^1 => Coefficient:2
2X^2 => Coefficient:3
3X^3 => Coefficient:4
4X^4 => Coefficient:5
5X^5 => Coefficient:6
Enter your input for second polynomial:
0X^0 => Coefficient:1
1X^1 => Coefficient:2
2X^2 => Coefficient:3
3X^3 => Coefficient:4
Sum of the given two polynomials:
6.0X^5 + 5.0X^4 + 8.0X^3 + 6.0X^2 + 4.0X^1 + 2.0X^0
Maximum power in first polynomial:5
Maximum power in second polynomial:3
Enter your input for first polynomial:
0X^0 => Coefficient:1
1X^1 => Coefficient:2
2X^2 => Coefficient:3
3X^3 => Coefficient:4
4X^4 => Coefficient:5
5X^5 => Coefficient:6
Enter your input for second polynomial:
0X^0 => Coefficient:1
1X^1 => Coefficient:2
2X^2 => Coefficient:3
3X^3 => Coefficient:4
Sum of the given two polynomials:
6.0X^5 + 5.0X^4 + 8.0X^3 + 6.0X^2 + 4.0X^1 + 2.0X^0
No comments:
Post a Comment