From de716bbb952e2060aff03d1ebfefcf9a1b711984 Mon Sep 17 00:00:00 2001 From: Manoj HV Date: Mon, 8 Dec 2025 20:14:05 +0530 Subject: [PATCH] polynomial addition --- a.out | Bin 0 -> 16424 bytes polynomial.c | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100755 a.out create mode 100644 polynomial.c diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..8e57379fc0ce334e72cd6fec66ce670c3993f002 GIT binary patch literal 16424 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 +#include + +#define MAX_TERMS 100 + +typedef struct { + float coef; + int expon; +} polynomial; + +polynomial terms[MAX_TERMS]; +int avail = 0; + +int COMPARE(int a, int b) +{ + if (a < b) + return -1; + if (a == b) + return 0; + else + return 1; +} + +void attach(float coefficient, int exponent) +{ + if (avail >= MAX_TERMS) { + fprintf(stderr, "Too many terms in the polynomial\n"); + exit(1); + } + terms[avail].coef = coefficient; + terms[avail++].expon = exponent; +} + +/* sort terms[start..finish] in DESCENDING order of exponent */ +void sort_poly(int start, int finish) +{ + int i, j; + polynomial temp; + for (i = start; i < finish; i++) { + for (j = i + 1; j <= finish; j++) { + if (terms[i].expon < terms[j].expon) { + temp = terms[i]; + terms[i] = terms[j]; + terms[j] = temp; + } + } + } +} + +void padd(int starta, int finisha, int startb, int finishb, + int *startd, int *finishd) +{ + float coefficient; + *startd = avail; + + while (starta <= finisha && startb <= finishb) { + switch (COMPARE(terms[starta].expon, terms[startb].expon)) { + case -1: + attach(terms[startb].coef, terms[startb].expon); + startb++; + break; + case 0: + coefficient = terms[starta].coef + terms[startb].coef; + if (coefficient) { + attach(coefficient, terms[starta].expon); + } + starta++; + startb++; + break; + case 1: + attach(terms[starta].coef, terms[starta].expon); + starta++; + break; + } + } + + for (; starta <= finisha; starta++) + attach(terms[starta].coef, terms[starta].expon); + for (; startb <= finishb; startb++) + attach(terms[startb].coef, terms[startb].expon); + + *finishd = avail - 1; +} + +int main(void) +{ + int i, j, ae, be, nA, nB, sa, sb, fa, fb, sc, fc = 0; + int *sd, *fd; + float ac, bc; + + printf("Enter number of terms in Polynomial A: "); + scanf("%d", &nA); + + printf("Enter terms for A (coefficient exponent), in ANY order:\n"); + for (i = 0; i < nA; i++) { + printf("A[%d]: ", i + 1); + scanf("%f%d", &ac, &ae); + attach(ac, ae); + } + + fa = avail - 1; // A ends here + + sb = avail; + printf("\nEnter number of terms in Polynomial B: "); + scanf("%d", &nB); + + printf("Enter terms for B (coefficient exponent), in ANY order:\n"); + for (i = 0; i < nB; i++) { + printf("B[%d]: ", i + 1); + scanf("%f%d", &bc, &be); + attach(bc, be); + } + fb = avail - 1; // B ends here + + // sort A and B by exponent so padd works correctly + sort_poly(0, fa); + sort_poly(sb, fb); + + printf("\n-----------------------------------------\n"); + printf("Polynomial A: "); + for (i = 0; i < nA; i++) { + printf("%.2fx^%d", terms[i].coef, terms[i].expon); + if (i < nA - 1) printf(" + "); + } + + printf("\nPolynomial B: "); + for (i = sb; i <= fb; i++) { + printf("%.2fx^%d", terms[i].coef, terms[i].expon); + if (i < fb) printf(" + "); + } + printf("\n-----------------------------------------\n"); + + sa = 0; + sc = avail; + sd = ≻ + fd = &fc; + + padd(sa, fa, sb, fb, sd, fd); + + printf("Result (A + B): "); + for (j = sc; j <= fc; j++) { + printf("%.2fx^%d", terms[j].coef, terms[j].expon); + if (j < fc) printf(" + "); + } + printf("\n-----------------------------------------\n"); + + return 0; +}