Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*4. Napisati program za zbrajanje i množenje polinoma.
- Koeficijenti i eksponenti se čitaju iz datoteke.
- Napomena: Eksponenti u datoteci nisu nužno sortirani. */
- #define _CRT_SECURE_NO_WARNINGS
- #define MAX_FILENAME 50
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- //Struct poli
- struct node;
- typedef struct node* Pnode;
- struct node
- {
- int koef;
- int exp;
- Pnode Next;
- };
- //Functions
- //Main
- int main()
- {
- struct node P1, P2, P3, P4;
- P1.Next = NULL;
- P2.Next = NULL;
- P3.Next = NULL;
- P4.Next = NULL;
- FILE *fp = NULL;
- Pnode q, temp,temp1,temp2;
- char ime_dat[MAX_FILENAME];
- //Prva
- printf("Upisi ime prve datoteke:\n");
- scanf(" %s", ime_dat);
- fp = fopen(ime_dat, "r");
- if (NULL == fp)
- printf("Greska tokom otvaranja datoteke");
- while (!feof(fp))
- {
- q = (Pnode)malloc(sizeof(struct node));
- fscanf(fp, " %d %d", &q->koef, &q->exp);
- temp = &P1;
- while (temp->Next != NULL && temp->Next->exp > q->exp)
- temp = temp->Next;
- if (temp->Next != NULL && temp->Next->exp == q->exp)
- {
- temp->Next->koef =temp->Next->koef + q->koef;
- free(q);
- if (temp->Next->koef == 0)
- {
- q = temp->Next;
- temp->Next = q->Next;
- free(q);
- }
- }
- else
- {
- q->Next = temp->Next;
- temp->Next = q;
- }
- }
- fclose(fp);
- //Druga
- printf("Upisi ime druge datoteke:\n");
- scanf(" %s", ime_dat);
- fp = fopen(ime_dat, "r");
- if (NULL == fp)
- printf("Greska tokom otvaranja datoteke");
- while (!feof(fp))
- {
- q = (Pnode)malloc(sizeof(struct node));
- fscanf(fp, " %d %d", &q->koef, &q->exp);
- temp = &P2;
- while (temp->Next != NULL && temp->Next->exp > q->exp)
- temp = temp->Next;
- if (temp->Next != NULL && temp->Next->exp == q->exp)
- {
- temp->Next->koef = temp->Next->koef + q->koef;
- free(q);
- if (temp->Next->koef == 0)
- {
- q = temp->Next;
- temp->Next = q->Next;
- free(q);
- }
- }
- else
- {
- q->Next = temp->Next;
- temp->Next = q;
- }
- }
- fclose(fp);
- //Ispis prve
- printf("Ispis prvog polinoma:\n");
- temp = P1.Next;
- while (temp != NULL)
- {
- if (temp->koef > 0)
- printf(" +%dx^%d", temp->koef, temp->exp);
- else
- printf(" %dx^%d", temp->koef, temp->exp);
- temp = temp->Next;
- }
- //Ispis druge
- printf("\nIspis drugog polinoma:\n");
- temp = P2.Next;
- while (temp != NULL)
- {
- if (temp->koef > 0)
- printf(" +%dx^%d", temp->koef, temp->exp);
- else
- printf(" %dx^%d", temp->koef, temp->exp);
- temp = temp->Next;
- }
- printf("\nZbrajanje polioma:\n");
- //Zbrajanje polinoma
- temp = P1.Next;
- temp1 = P2.Next;
- temp2 = P3.Next;
- while (temp != NULL && temp1 != NULL)
- {
- q = (Pnode)malloc(sizeof(struct node));
- if (temp->exp > temp1->exp)
- {
- q->exp = temp->exp;
- q->koef = temp->koef;
- temp = temp->Next;
- }
- else if (temp->exp < temp1->exp)
- {
- q->exp = temp1->exp;
- q->koef = temp1->koef;
- temp1 = temp1->Next;
- }
- else
- {
- q->exp = temp->exp;
- q->koef = temp->koef + temp1->koef;
- temp = temp->Next;
- temp1 = temp1->Next;
- }
- q->Next = temp2->Next;
- temp2->Next = q;
- temp2 = q;
- }
- //Ispis sume
- printf("\nIspis sume:\n");
- temp = P3.Next;
- while (temp != NULL)
- {
- if (temp->koef > 0)
- printf(" +%dx^%d", temp->koef, temp->exp);
- else
- printf(" %dx^%d", temp->koef, temp->exp);
- temp = temp->Next;
- }
- getchar();
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement