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

Быстрая сортировка и объекты класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Односвязный список, запись и чтение из файла http://www.cyberforum.ru/cpp-beginners/thread309021.html
Здравствуйте уважаемые форумчане. Имееться реализация односвязного списка из книги Дейтлов "Как программировать на С++" Нужно сделать запись, чтение и просмотр из файла, т.е. файл использовать как базу данных. Почему то не могу справиться с этим заданием, прошу вашей помощи. Программа реализует телефонный справочник. // test.cpp // Тестовая программа для класса List.
C++ прога при компиляции ругаеться на "unit1.h" вся проблема в том,что у меня єтого файла нет,так как прога с нета качаная.можно ли его как нить востановить?? #include <vcl.h> #pragma hdrstop #include «Unit1.h» // – #pragma package (smart_init) #pragma resource «*.dfm» #include<math.h> http://www.cyberforum.ru/cpp-beginners/thread308854.html
Подсчитывание количество марок в коллекции C++
День добрый. задали сделать задачу на 2х языках программирования( на паскале и на си). на паскале я сделал, на си не могу( так только начинающий). помогите сделать эту программу на языке СИ. благодарю. ЭВМ используется при разборе коллекции марок. Составить программу, подсчитывающую число марок по спорту, по искусству и прочих. Подсчитать общее количество марок в коллекции. Использовать...
не работают условия кроме sravnenie[i].kozer==1 && sravnenie[j].kozer==1 C++
int sravnenie_kart_v_massive_sravnenie(KARTA *kart,KARTA *sravnenie,int *nsravnenie,int *sravnenie11,int *sravnenie12,int *fsravnenie) {int n,i,j,f1=0,f2=0; n=0; for(i=*sravnenie11;i<9 && f1==1;i=i+2) for(j=*sravnenie12;j<10 && f2==1;j=j+2) if(sravnenie.kozer==5 && sravnenie.kozer==1) {n=n+1; f1=1; f2=1; printf("%d пара карт бита\n",n);
C++ Работа с классами по матрице http://www.cyberforum.ru/cpp-beginners/thread307117.html
8. В (0, 1)-матрице подсчитать число изолированных 0-областей, т.е. областей, состоящих из одних нулей. Отметим, что 0-область может состоять не только из одного нулевого элемента. Например, для (0, 1)-матрицы вида А5х5 : 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 таких областей будет три, эти области я отмечу 2ками чтобы было понятно 1 2 1 2 2 1 1 1 1 2 2 2 2 1 2
C++ СЛАУ методом Гаусса с поиском главного элемента Вот наконец написал курсовую. Каряво, грубо, но собственными силами, чем собственно и горжусь) Программа считает СЛАУ методом Гаусса (с поиском главного элемента по строке). Считает все отлично, находит корни и тд. Проблема: препад захотел, что бы в програмулине был ввод с файла. Дело в том, что массивы я использую статические, а везде где не искал в основном описывают ввод/вывод динамических... подробнее

Показать сообщение отдельно
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,819
Завершенные тесты: 2
31.05.2011, 13:26     Быстрая сортировка и объекты класса
На днях столкнулся с такой задачей. Попробую ее сформулировать.
Дан класс.
C++
1
2
3
4
5
6
7
8
class A
{
...
vector<double> x;
vector<double> y;
void output(); // вывод на экран
...
}
x,y - используются как массивы координат точек. т.е. x[i], y[i] - это относится к одной точке.
Нужно вывести, например на экран, координаты точек так, чтобы x-координата выводилась по возрастанию. В качестве алгоритма сортировки использовать только быструю сортировку.

Придумал следующее решение.
Вспомогательное пространство имен:
C++
1
2
3
4
5
6
7
8
9
10
11
12
namespace junkspace
{
    vector<double>* x;
 
    int compare(const void* aa, const void* bb)
    {
        int a = *(int*)aa;
        int b = *(int*)bb;
        if (x->at(a)<x->at(b)) return 1;
        else return -1;
    }
};
Реализация метода вывода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void A::output()
{
        size_t* na;
    size_t n = x.size();
 
    if (n==0) return;
 
    na = new size_t [n];
 
    for (size_t i=0; i<n; i++)
        na[i] = i;
 
    junkspace::x = &x;
    qsort(na, n, sizeof(size_t), junkspace::compare);
 
    for (size_t i=0; i<n; i++)
    {
        cout <<  x[na[i]] << " " << y[na[i]] << endl;
    }
}
na - массив индексов. Я его сортирую с помощью qsort. B качестве функции сортировки использую compare из junkspace. compare как метод класса использовать я не смогу.

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