KuPbI4
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Даны исходники - сортировка Хоара и процедура сама сортировки. Контейнер map. И замена контейнера на <vector>. mesto.cpp Код: #include "stdafx.h" #include "mesto.h" #include <iostream> #include <string.h> #include <windows.h> using namespace std; mesto::mesto() { name=""; } mesto::mesto(const mesto& a) { name=a.name; } mesto::mesto(string N) { name=N; } mesto::~mesto() {} void mesto::show() {} void mesto::input() {} void mesto::SetName(string N) { name=N; } string mesto::GetName() { return name; } | mesto.h Код: #pragma once #include "abstruct_class.h" #include <string> using namespace std; class mesto : public abstruct_class { protected: string name; public: mesto(); mesto(string); mesto(const mesto&); string GetName(); void SetName(string); virtual void show(); virtual void input(); virtual ~mesto(); friend bool operator==(const mesto&,const mesto&); }; | Далее... main.cpp Код: typedef map<string,mesto*,less<string>> M; typedef vector<mesto*> V; | Код: //сортировка Хоара (быстрая сортировка) V QSort(int l,int r){ int i,j; mesto*x; V dop; i=l; j=r; do { while (dop[i]<dop[r]) i++; while (dop[j]>dop[l]) j--; if (i<=j) { x=dop[i]; dop[i]=dop[j]; dop[j]=x; i++; j--; } } while (i<=j); // рекурсивные вызовы, если есть, что сортировать if (j>l) QSort(l,j); if (r>i) QSort(i,r); //указатель на массив, который начинается с i-го элемента первоначального массива x //return dop; } | Код: //сама процедура сортировки (программная), а STL чего то не работает. int Sort(M& fact) { cout<<"Сортировка (программная)"<<endl; if(fact.begin()==fact.end()) { cout<<"Контейнер пуст.."<<endl; return 0;} M::iterator j=fact.begin(); j++; if(j==fact.end()) { cout<<"Сортировка не имеет смысла, так как в контейнере всего один элемент..."<<endl; return 0; } V dop=QSort(fact); int i=0; cout<<"Печать дополнительного контейнера:"<<endl; for(i=0;i<dop.size();i++) {dop[i]->show();} return 0; } | Требуется - я чего то криво написал сортировку Хоара, а может и правильно, возникают ошибки и Код: и эта ошибка в процедуре сортировки. пишет что QSort не принимает 1 аргумента... Помогите исправить где что как... заранее буду вам благодарен | Всего записей: 212 | Зарегистр. 13-10-2008 | Отправлено: 16:05 26-11-2009 | Исправлено: KuPbI4, 18:08 26-11-2009 |
|