Форум программистов, компьютерный форум CyberForum.ru

Сортировка методом "быстрая сортировка" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано n точек в пространстве, упорядочить точки по неубыванию их расстояний до начала координат http://www.cyberforum.ru/cpp-beginners/thread1179620.html
Доброго времени суток всем. Прошу помочь с этими заданиям, написать код в c++ 1. Дано n точек в пространстве. Упорядочить точки по неубыванию их расстояний до начала координат.
C++ Найти строки матрицы, где есть эл-т для которого сумма предшествующих равна сумме следующих за ним элементов Доброго времени суток всем. Прошу помочь с этими заданиям, написать код в c++ 2. Вывести строки матрицы, в которых есть такой элемент, что сумма предшествующих равна сумме следующих за ним элементов. http://www.cyberforum.ru/cpp-beginners/thread1179615.html
C++ В заданной матрице найти сумму элементов строки, в которой расположен элемент с наименьшим значением
В данной действительной квадратной матрице порядка N найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный. Про-грамма должна быть составлена с использованием функций. Написал код, который находит наименьшее и его индексы. Помогите, как нужно сделать код, чтобы он считал сумму элементов строки, в которой расположен...
C++ Вычислить среднее арифметическое четных элементов каждой отдельной строки матрицы
Вычислить среднее арифметическое четных элементов каждой отдельной строки матрицы У(4, 5).
C++ Определить, кратна ли сумма элементов вектора У числу пять http://www.cyberforum.ru/cpp-beginners/thread1179607.html
Разработать алгоритм, составить и отладить программу по формированию, обработке и печати одномерного массива . В векторе У(m) поменять местами максимальный и минимальный элементы. Определить, кратна ли сумма элементов вектора У числу пять
C++ Запись и чтение из файла Требуется программа, которая будет требовать ввод данных ( допустим создается 3 структуры): 1) Имя 2) Фамилия 3) Отчество 4) Год рождения 5) Страна проживания Поочередно вбивается с клавиатуры, 3 раза ( 3 разных человека будет) Это все сохраняется в файл ( в любом порядке хоть построчно хоть столбцами) - Вторая программа чтоб читала всю эту информацию и выводила на экран. подробнее

Показать сообщение отдельно
Gendalf147
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 97
18.05.2014, 19:52     Сортировка методом "быстрая сортировка"
Здравствуйте!

Имеется структура:

C++
1
2
3
4
5
6
7
8
9
struct BMS_Data
{
    int* SortNodesList;
    double* NodesX;
    double* NodesY;
    double* NodesZ;
    int SizeMKE;
};
BMS_Data *BMSData;
Описывается в глобальных переменных класса формы ... как то так.

Есть функция сортировки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void QuickSort_Int_Test_Up(int* sarr,int j)
{
    int size;
    size=j;
    int k;
    k=0;
    int c;
    c=sarr[(int)(j/2)];
    int tmp;
    tmp=0;
    do
    {
        while (sarr[k]<c)
        {
            k++;
        }
        while (sarr[j]>c)
        {
            j--;
        }
        if (k<=j)
        {
            tmp=sarr[k];
            sarr[k]=sarr[j];
            sarr[j]=tmp;
            k++;
            j--;
        }
    }
    while (k<=j);
    if (j>0)
    {
        QuickSort_Int_Test_Up(sarr,j);
    }
    if (size>k)
    {
        QuickSort_Int_Test_Up(sarr+k,size-k);
    }
}
С обычным массивом типа int все работает прекрасно - алгоритм понятен.
Но вот с вещественными числами не хочет работать - выдает ошибку. Вот функция для double типа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void QuickSort_Double_Test_Up(double* sarr,int j)
{
    int size;
    size=j;
    int k;
    k=0;
    double c;
    c=sarr[(int)(j/2)];
    double tmp;
    tmp=0;
    do
    {
        while (sarr[k]<c)
        {
            k++;
        }
        while (sarr[j]>c)
        {
            j--;
        }
        if (k<=j)
        {
            tmp=sarr[k];
            sarr[k]=sarr[j];
            sarr[j]=tmp;
            k++;
            j--;
        }
    }
    while (k<=j);
    if (j>0)
    {
        QuickSort_Double_Test_Up(sarr,j);
    }
    if (size>k)
    {
        QuickSort_Double_Test_Up(sarr+k,size-k);
    }
}
Наверняка адрес неправильно передается:

C++
1
QuickSort_Double_Test_Up(sarr+k,size-k);
Что делать, подскажите плиз=) ...

Добавлено через 2 часа 1 минуту
Почему же с int работает а с double нет? ... Я в builder 2006 работаю. С шаблонами код пробовал - тоже программа с ума сходит ...

Добавлено через 3 часа 30 минут
Как передать адрес на какой то элемент массива, чтобы функция понимала это?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru