Guard Опубликовано 25 декабря, 2005 Жалоба Поделиться Опубликовано 25 декабря, 2005 Имею проблему. На входе есть массив a с максимальным количеством элементов n=8. Листинг сортировки: double * quick(double *s,int low,int hi) { double cnt,aux; int i,j; if (hi>low) { i=low; j=hi; cnt=s; while(i < j) { if (s[i+1]<=cnt) { s=s[i+1]; s[i+1]=cnt; i++; } else { if (s[j]<=cnt) { aux=s[j]; s[j]=s[i+1]; s[i+1]=aux; } j--; } } quick(s,low,i-1); quick(s,i+1,hi); } return(s); } Как увязать с имеющимися данными? Буду признателен за конечный код. Сдача завтра.( Поиск в Инете ничего не дал... P/S/ Мне главное рабочий пример. Дальше сам разберусь.) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 25 декабря, 2005 Жалоба Поделиться Опубликовано 25 декабря, 2005 Примера не дам, могу так прикинуть Судя по коду, функции скармливается указатель на начало массива, индекс элемента, с которого надо начинать сортировку и индекс элемента, на котором сортировку надо заканчивать. Для сортировки всего массива a[n] вызов ф-ии должен выглядеть как quick (a, 0, n - 1). И что Вас тут смущает? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Guard Опубликовано 25 декабря, 2005 Автор Жалоба Поделиться Опубликовано 25 декабря, 2005 #include <iostream.h> #include <stdio.h> #include <stdlib.h> const n=8; int a[n],i,w; void main() { printf("Введите 8 численных элементов массива: \n"); {for(i=0;i<n;i++) scanf("%d",&a);} double * qsort (a, 0, n - 1) { double cnt,aux; int i,j; if (hi>low) { i=low; j=hi; cnt=s; while(i < j) { if (s[i+1]<=cnt) { s=s[i+1]; s[i+1]=cnt; i++; } else { if (s[j]<=cnt) { aux=s[j]; s[j]=s[i+1]; s[i+1]=aux; } j--; } } qsort(s,low,i-1); qsort(s,i+1,hi); } return(s); } } Не пашет.((( P/S/ Благодарю за внимание.))) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 25 декабря, 2005 Жалоба Поделиться Опубликовано 25 декабря, 2005 Ой, извините, не удержался. Вы, наверное, с Паскалем раньше работали? Вложенные описания функций - это ж просто ахтунг Или это у Вас не описания, а вызовы??? Вот Вам работающий исходник: #include <stdio.h> double* quick (double *s, int low, int hi) { double cnt,aux; int i,j; if (hi > low) { i = low; j = hi; cnt = s; while (i < j) { if (s[i+1] <= cnt) { s = s[i+1]; s[i+1] = cnt; i++; } else { if (s[j] <= cnt) { aux = s[j]; s[j] = s[i+1]; s[i+1] = aux; } j--; } } quick(s,low,i-1); quick(s,i+1,hi); } return (s); } int main () { double a[8] = {1, 3, 2, 76, 123, 0, 4, 1}; int i; int n = 8; quick (a, 0, n - 1); for (i = 0; i < n; i++) printf ("%f\n", a); } Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Guard Опубликовано 25 декабря, 2005 Автор Жалоба Поделиться Опубликовано 25 декабря, 2005 Благодарю. Мой опыт программирования практически заканчивается на школьном Барсике. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Guard Опубликовано 30 декабря, 2005 Автор Жалоба Поделиться Опубликовано 30 декабря, 2005 Чтоб темы не плодить - проблемка с графикой. Ошибки не пишет компилятор, но не работает. Работа этого же кода на другом компе - корректна. Видюха - GeForce 4mx 440 - может у кого есть библиотека под нее? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 2 января, 2006 Жалоба Поделиться Опубликовано 2 января, 2006 Вы думаете, все, кто может Вам ответить, читают все темы подряд? Вряд ли. И задав в этом треде вопрос, темы треда не касающийся, Вы рискуете быть просто незамеченным . Если вопрос по графике - создайте соотв. тему. Один тред - для одной проблемы. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.