Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Имею проблему.

На входе есть массив 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/

Мне главное рабочий пример. Дальше сам разберусь.)

Опубликовано

Примера не дам, могу так прикинуть Smile

Судя по коду, функции скармливается указатель на начало массива, индекс элемента, с которого надо начинать сортировку и индекс элемента, на котором сортировку надо заканчивать. Для сортировки всего массива a[n] вызов ф-ии должен выглядеть как quick (a, 0, n - 1). И что Вас тут смущает? Smile

Опубликовано
#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/
Благодарю за внимание.)))
Опубликовано

Very HappyLaughingVery HappyLaughingVery HappyLaughing

Ой, извините, не удержался. Вы, наверное, с Паскалем раньше работали? Вложенные описания функций - это ж просто ахтунг LaughingLaughingLaughing Или это у Вас не описания, а вызовы???

Вот Вам работающий исходник:

#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);
}
Опубликовано

Чтоб темы не плодить - проблемка с графикой. Ошибки не пишет компилятор, но не работает. Работа этого же кода на другом компе - корректна. Видюха - GeForce 4mx 440 - может у кого есть библиотека под нее?

Опубликовано

Вы думаете, все, кто может Вам ответить, читают все темы подряд? Вряд ли. И задав в этом треде вопрос, темы треда не касающийся, Вы рискуете быть просто незамеченным Smile. Если вопрос по графике - создайте соотв. тему. Один тред - для одной проблемы.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...