Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- using namespace std;
- struct node {
- int koeff;
- int power;
- struct node* next;
- };
- typedef struct node* list;
- void createList(list* phead)
- {
- *phead = NULL;
- }
- int checkIfExist(list* phead, int power, int koeff)
- {
- list p = *phead;
- while (p != NULL)
- {
- if (p->power == power)
- {
- p->koeff += koeff;
- return 1;
- }
- p = p->next;
- }
- return 0;
- }
- int addToHead(list* phead, int koeff, int power)
- {
- list p;
- if (checkIfExist(phead, power, koeff))
- {
- printf("Такая степень уже есть %d\n", power);
- return 0;
- }
- p = (list)malloc(sizeof(*p));
- p->koeff = koeff;
- p->power = power;
- p->next = *phead;
- *phead = p;
- printf("Добавлено: %d*x^%d\n", p->koeff, p->power);
- return 1;
- }
- void enterListElems(list* phead)
- {
- cout << "Введите степень многочлена: ";
- int k = 0;
- cin >> k;
- int i_koeff = 1, i_power = 0;
- for (int i = 0; i < k + 1; i++)
- {
- cout << "Введите коэффициент для x^" << i_power << ": ";
- cin >> i_koeff;
- if (i_koeff != 0)
- addToHead(phead, i_koeff, i_power);
- i_power++;
- }
- }
- void printList(list* phead)
- {
- list p;
- cout << "P(x) = ";
- for (p = *phead; p != NULL; p = p->next)
- {
- if (p->next != NULL)
- printf("%dx^%d + ", p->koeff, p->power);
- else
- printf("%dx^%d", p->koeff, p->power);
- }
- printf("\n");
- }
- bool checkEquality(list* phead1, list* phead2)
- {
- list p1 = *phead1;
- list p2 = *phead2;
- int len1 = 0, len2 = 0;
- for (p1; p1 != NULL; p1 = p1->next)
- len1++;
- for (p2; p2 != NULL; p2 = p2->next)
- len2++;
- if (len1 != len2)
- return false;
- p1 = *phead1;
- p2 = *phead2;
- for (p1, p2; p1 != NULL && p2 != NULL; p1 = p1->next, p2 = p2->next)
- if (p1->koeff != p2->koeff || p1->power != p2->power)
- return false;
- return true;
- }
- int main(void)
- {
- list L1, L2;
- int k;
- setlocale(LC_ALL, "RUSSIAN");
- createList(&L1);
- enterListElems(&L1);
- printf("\n------\n");
- printList(&L1);
- printf("------\n\n");
- createList(&L2);
- enterListElems(&L2);
- printf("\n------\n");
- printList(&L2);
- printf("------\n\n");
- if (checkEquality(&L1, &L2))
- cout << "Многочлены равны" << endl;
- else
- cout << "Многочлены не равны" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement