Упорядочить список без разницы в каком порядке - C (СИ)
Формулировка задачи:
здраствуйте
пожалуйста сделать одно задание
мы вводим коэфициенты полинома (первое число коэфициент при х второе степень х) не по порядку вводим (тоесть может идти сначала для 3-го элемента полинома потом для 20-го и т.д.)
надо упорядочить список без разницы в каком порядки возростания степеней или убывания.
а потом найти производную полинома .
и вывести новый полином.
помогите пожалуйста сделать
заранее спасибо
Решение задачи: «Упорядочить список без разницы в каком порядке»
textual
Листинг программы
#include <stdio.h> #include <malloc.h> struct cell { int c; int p; cell *next; }; int main(int argc, char* argv[]) { cell *Begin, *Curr, *Prev, *Poly, *Max, *Next; int cc,pp,pmax,n,i,j; // Ввод списка (степень - коэффициент) Begin = NULL; n=0; while (1) { printf("Enter degre (-1 - end) :"); scanf("%d",&pp); if (pp < 0) break; printf("Enter coeff :"); scanf("%d",&cc); Curr = (cell *) malloc(sizeof(cell)); Curr->c=cc; Curr->p=pp; Curr->next=NULL; if (Begin == NULL) { Begin=Curr; Prev=Begin; } else { Prev->next=Curr; Prev=Curr; } n++; } // Сортировка выбором Poly=NULL; for (j=0; j<n; j++) { Curr=Begin; pmax=-1; for (i=0; i<n; i++) { if (Curr->p > pmax) { pmax=Curr->p; Max=Curr; } Curr=Curr->next; } Curr = (cell *) malloc(sizeof(cell)); Curr->c=Max->c ; Curr->p=pmax; Curr->next=NULL; Max->p =-1; if (Poly == NULL) { Poly=Curr; Prev=Poly; } else { Prev->next=Curr; Prev=Curr; } } // Печать производной: Curr=Poly; while (1) { cc=Curr->c ; pp=Curr->p; if (pp > 0) printf("%dx^%d \n",cc*pp,pp-1); if (Curr->next == NULL) break; Curr=Curr->next; } // Удаление Curr=Poly; while (1) { Next=Curr->next; free(Curr); Curr=Next; if (Curr==NULL) break; } Curr=Begin; while (1) { Next=Curr->next; free(Curr); Curr=Next; if (Curr==NULL) break; } return 0; }
Объяснение кода листинга программы
Код представлен на языке C и решает задачу упорядочивания списка, где элементы списка - это структуры типа cell
с полями c
(коэффициент) и p
(степень).
Список вводится пользователем с помощью цикла while, где каждое введенное значение степени и коэффициента добавляется в список.
Затем происходит сортировка списка выбором, где находится максимальная степень.
Далее происходит печать производной списка, где выводятся все элементы списка в порядке возрастания степени.
В конце происходит удаление списка, где все элементы освобождаются с помощью функции free.
Ввод списка:
- Вводите степень (-1 - конец) : 2
- Вводите коэффициент : 3
- Вводите степень (-1 - конец) : 3
- Вводите коэффициент : 4
- Вводите степень (-1 - конец) : 1
- Вводите коэффициент : 2 Сортированный список:
- 3x^2
- 4x^3
- 2x^1 Производная списка:
- 3x^2
- 4x^3
- 2x^1 Удаление списка:
- all done.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д