-
Сортиране чрез вмъкване на C
Алгоритъмът стъпва на всеки елемент от масива, взима го и го избутва назад/в началото като го поставя/набутва между вече предишните избутани елемент, ефективно оставяйки сортиран масив "зад" текущия елемент! Оф, има и много по-добри обяснения от моето! Примерът в Wikipedia доста добре го илюстрира!
-
Програма на С
Според мен решението на задачата изисква генерирането на всички комбинации на N елемента (множеството точки) от 3-ти клас (точките като върхове на триъгълника)! Това не е много просто, а ти казваш, че с указатели и структури се бъркаш... Мисля, че трябва да се пренапише void proverka(tochka*t[],int*U) функцията....
-
Ако можете помогнете. Трябва ми задача със свързани списъци в C.
Пак не си ми написал структурата ти, та ми се налага да си измислям аз!typedef struct { char name[64]; float grade; unsigned int year; node * next; } node; int compare_by_name (const void * a, const void * b) { return strcmp( ( *((node **) a) )->name, ( *((node **) b) )->name ); } node * sort_linked_list(node const * l, unsigned int * const size) { node ** arr = NULL; int index = 0; *size = 0; while (l) { // Linked list to array! arr = (node **) realloc(arr, sizeof(node*) * ++(*size)); // Array of pointers to nodes! arr[(*size)-1] = l; l = l->next; } qsort( (void *) arr, (size_t) *size, sizeof(student *), compare_by_name ); for (index = 0; index < (*size)-1; ++index) { // Array to linked list arr[index]->next = arr[index+1]; } l = arr[0]; free(arr); return l; }Идеята е да създадеш динамичен масив от указатели към всеки един от nodе-овете в свързания ти списък! След това сортираш масива от указатели на базата на това, даден указател към какъв node сочи! След това просто навръзваш node-овете в реда, в който са ти указателите в динамичния масив! node * delete_node(node * target) // Delete SINGLY linked list node, return next node. { node * n = terget->next; free(target); return n; } node * del_below_average(node const * head) { node * iterator = head; unsigned int num = 0; float average_grade = 0.0; while (iterator) { // First pass, determine average grade num++; average_grade += iterator->grade; iterator = iterator->next; } average_grade /= (float) num; // We now have the average grade! iterator = head; // Rewind list while (iterator) { // Second pass if (iterator->grade < average_grade) { if (iterator == head) head = iterator->next; // Special case for head node iterator = delete_node(iterator); // delete low-graded node, jump to next node continue; } iterator = iterator->next; } return head; } Нямам идея дали ще работи, писах го на Notepad++! Същото е като 1. но ще ти бъде друга сравняващата функция int compare_by_name (const void * a, const void * b)! Сортираш по година и отпечатваш! Бих желал с гласни разсъждения тук във форума да ми обесниш как би трябвало да изглежда тази друга сравняваща функция?
-
HTML оформление - въпрос.
Можеш iframe-ове да ползваш или CSS float за да си наредиш елементите! Дай по-конректно описание за да предложим по-точно решение! Дай картинки или примерни варианти на това, което искаш!
-
Помощ за две програми на C++
Aaaа ми, оправи се... mitkohr и georgedimov те оправиха! Разликата е, че double предлага двойно по-голяма прецизност/точност след десетичната запетая! float precision - 7 digits. double precision - 15 digits.
-
Задача,която трябва да се направи на С++
Решавана е вече → тук! Даже като гледам jarek я е копирал и кирилизирал! Решението на hubgobllin не отговаря на условието, защото: • не използва динамични масиви, а статични с дължина за не повече от 10 точки • при изчисляване на средната дължина в реда sr /= N-1; се извършва целочислено деление, като в sr се запаметява само цялата част от числото, резултат на делението! • програмата не принтира на края резултатите от цялата хамалогия
-
Помощ за функция със сортиране на свързан списък
Дай да видя как си си описал структурата и ще видим как се пише функция, която обръща списъка в масив (няколко теми на долу съм писал за това) и ще я сортираме с qsort() по който критерий искаш! Виж тук! Опитай сам, ако се запънеш пиши!
-
Свързан списък въпроси... на C
Програмата забива не защото освобождаваш елемента, а защото първо освобождавап паметта, към която сочи указателят crnt, а после два реда по-надолу се опитваш да го прочетеш, a той не сочи към нищо смислено: crnt=crnt->next;Предлагам while цикъла да изглежда така:while( crnt ) { if( !strcmp(crnt->st.fn, FN) ) { prev->next = crnt->next; free(crnt); crnt = prev->next; continue; // Или brake; или return; ако искаш да спреш търсенето! } prev = crnt; crnt = crnt->next; } Във void srtName(Node **ph) for(p=ph;*(p+1);p++)не можеш да разчиташ, че паметта след края на твоя масив е запълена с нули, някой друг процес може да се е разположил там! Подай number променлива на тази функция за да знае до кога да брои! Успех, да кажеш дали се получава!
-
Ако можете помогнете. Трябва ми задача със свързани списъци в C.
Аве така ли ми се стува или твоята void Trii_avtor(Spisuk ** list, int mode) си я взел от друга програма? Какъв е този fac number, 'дето искаш да въвеждаш? А после му правиш някаква валидация, 'дето не я разбирам... А защо memset-ваш паметта, която държи елемента на '\0' и тогава я освобождаваш? Направо free(), като преди т'ва връзваш предишния и следващия елемент за да прескочиш този, който освобождаваш! Изобщо целнта на void Trii_avtor(...) е да трие филм с определен автор? Структурата за филма пък има полета за ЕГН и курс, което пак свидетелства, че се опитваш да преправиш друга програма за твоите нужди! Според мен функцията за 3-та точка трябва да изглежда така в псевдокод, който няма да работи с твоята програма: void print_maxlen_movie(list const * l) { list * head = l; // Remember where the head is unsigned int max_len = head->len; while(l) { // First pass, find movie with max len if (l->len > max_len) max_len = l->len l = l->next; } l = head; // Rewind list while (l) { // Second pass, find movie with max_len and print it if (l->len == max_len) { print_movie(*l); // Use your own function break; } l = l->next; } }Това е идеята, трябва малко да я преправиш за твоята програма! Изтриване на елемент по критерий е аналогично, но вместо print_node() викаш delete_node() и няма нужда да обхождаш два пъти! За сортиране на списъци има специални алгоритми като Merge Sort, пригодени за списъци! Но в училищата обичат да ви карат да преобразувате списъка в масив, да го сортирате и да го принтирате! Преобразуването от списък в динамичен масив може да стане със следната функция, която можеш да използваш на готово, като преправиш типа на входящите променливи на функцията: list * list2arr(list const * l, unsigned int * const size) { list * arr = NULL; *size = 0; while (l) { arr = (list *) realloc(arr, sizeof(list) * ++(*size)); arr[(*size)-1] = l; arr[(*size)-1].next = NULL; //just in case, break the list! l = l->next; } return arr; }Тази функция, която също трябва да преправиш леко за твоите нужди (тина на променливата за списъка), работи като вкараш списъка и променлива за размера на масива, а тя ти връща динамичен масив! Не забравяй да го освободиш след употреба! Сортираш го с qsort() и го принтиш! За пореден път акцентирам, че кодът, който ти давам, НЕ работи за твоята програма конкретно, понеже ти нямаш работеща програма, за която да ти напиша код! Трябват леки корекции по типа на променливата за списъка!!!
-
Помощ за задача на C++
Колега, моля те, сложи си кода в таг и го табулирай за да е четлив!
-
Помощ за задача на C
1. Използваш глобална променлива (указателя към главата на списъка). Това даскалите не го обичат! 2. Във функцията за записване ще е добре да сложиш възможност потребителят да избира името на изходящия файл! 3. В client * vavejdane(void) имаш ред L;, което би трябвало да е синтактична грешка! 4. Във функцията за записване в бинарен файл, ги записваш от главата към опашката, а при четене ги добавяш като глава винаги (демек наобратно ги четеш)! 5. Във функцията за четене си писал: }while(fread(tmp, sizeof(*tmp), 1, f2));, което според мен означава, че пропускаш всеки втори записан клиент! Използвай while(!feof(f2)); 6. Не сортираш клиентите по година на раждане като им записваш адресите! Това са ми забележките на първо четене, може и да греша за нещо, защото съм малко уморен!
-
помощ за блок схема
Качваш си MS Visio от ######, правиш нов SDL документ и почваш да чертаеш, следвайки алгоритъма, по който ТИ си писал програмата!
-
C++ Файл
Какво не ти харесва на съвета на dvader?
-
Ако можете помогнете. Трябва ми задача със свързани списъци в C.
И на мен ми трябват няколко милиона ?, ма няма! Не очаквай някой да ти напише домашното и то безвъзмездно! Форумите помагат на хората, не им вършат работата! Почни сам и ако се запънеш някъде ще помагаме!
-
Помощ за задача на C
Научи се да използваш табулация и тага, че така на никой не му е приятно да ти чете кода или няма да го прочете изобщо!
Разглеждащи това в момента 0
- Няма регистрирани потребители разглеждащи тази страница.