Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 07:04   #1
ammaximus
 
Регистрация: 07.11.2006
Сообщений: 3
По умолчанию STL Сортировка

Почему-то не работает функция сортировки, подскажите в чем проблема (MSV C++)
Код:
#include <iostream>
#include <vector>
#include <conio.h>
#include <string>
#include <algorithm>
#include <conio.h>
#include <windows.h>
#include <process.h>
using namespace std;
void cls(){
HANDLE hConsole;
 CONSOLE_SCREEN_BUFFER_INFO csInfo;
 DWORD dummy;
 COORD Home={0,0};
 hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
 GetConsoleScreenBufferInfo(hConsole, &csInfo);
 FillConsoleOutputCharacter(hConsole,' ',csInfo.dwSize.X*csInfo.dwSize.Y,Home,&dummy);
 SetConsoleCursorPosition(hConsole,Home);
};
class base{
protected:
	string name;
public:
	void set_name(string n){
		this -> name=n;
	}

	string get_name(){
		return this->name;
	}
	virtual void print()=0{
		cout << "Error, Virtual print - " << name;
	}
};
class country: public base{
protected:
	float square;
	float mens;
	float shamp;
public:
	void print(){
		cout << name << "       "<< square << "         " << mens << "        " << shamp << endl;
	}

	void set_square(float f){
		this->square=f; 
	}

	float get_square(){
		return this->square;
	}
	void set_mens(float f){
		this->mens=f; 
	}
	float get_mens(){
		return this->mens;
	}
	void set_shamp(float f){
		this->shamp=f; 
	}

	float get_shamp(){
		return this->shamp;
	}
};
class city:public country{
	float oc;
public:

	void print(){
		 
		cout << name << "       "<< square << "         " << mens << "        " << shamp << "         " << oc << endl;
	}

	void set_oc(float f){
		this->oc=f; 
	}

	float get_oc(){
		return this->oc;
	}
};

/////FUNCTIONAL OBJECTS///////////

class compareCity{
public:
	bool operator()(city a1, city a2){
		return a1.get_name()>a2.get_name();
	}
};
class menu{
		string sTemp;
		float fTemp;
		country* cTemp;
		city* tTemp;
		vector<country> countrys;
		vector<city> citys;
		
public:

	void use(){
		int c;
		while(1){
			cout << "\n F1   F2   F3   F4   F5   F6   F7   F10\n";
			cout << " add  del  cler sort vse  cou  cit  exit\n";  
			c=getch();
			cls();
			switch (c){
			case 59: add(); break;
			case 60: del(); break;
			case 61: clr(); break;
			case 62: sort(); break;
			case 63: print('a'); break;
			case 64: print(); break;
			case 65: print(1); break;
			case 68: exit(0); break;
			default: break;
			}
		}
	}
	void add(){
		char c;
		cout << "Type 1 - towers, 2 - country, Anykey - cancel\n";
		cin >> c;
		switch (c){
		case '1': 
			cout << "NEW TOWER\n";
			tTemp = new city;

			cout << "name?";
			cin >> sTemp;
			(*tTemp).set_name(sTemp);

			cout << "SQUARE?\n";
			cin >> fTemp;
			(*tTemp).set_square(fTemp);

			cout <<"MENS?";
			cin >> fTemp;
			(*tTemp).set_mens(fTemp);

			cout <<"SHAMP?";
			cin >> fTemp;
			(*tTemp).set_shamp(fTemp);

			cout << "OC?\n";
			cin >> fTemp;
			(*tTemp).set_oc(fTemp);


			citys.push_back(*tTemp);
			cls();
			break;

		case '2': 
			cls();
			break;

		default: cout << "nevern command\n"; break;
		}
	}

	void print(int a){
		cout << "NAME    SQUARE    MENS,%   SHAMP%    OC%\n";
		for (int i=0; i<citys.size(); i++)
			citys[i].print();
	}

	void print(){
		cout << "NAME    SQUARE    MENS,%   SHAMP% \n";
		for (int i=0; i<countrys.size(); i++)
			countrys[i].print();
	}

	void print(char a){
		cout << "NAME    SQUARE    MENS,%   SHAMP%    OC%\n";
		for (int i=0; i<citys.size(); i++)
			citys[i].print();
		cout << "---------------\n";
		cout << "NAME    SQUARE    MENS,%   SHAMP% \n";
		for (i=0; i<countrys.size(); i++)
			countrys[i].print();
	}

	void del(){
		print('a');
		cout << " WHAT DEL TOWER - 1, COUNTRY - 2";
		char c;
		int i;
		cin >> c;
		cout << "number element"; 
		cin >> i;
		i--;
		switch (c){
		case '1': 
			if ((citys.size()<i) || (i<0)){
				cout << " ERROr, NO ELEMENT HERE";
				getch();
			}
			else
				citys.erase(citys.begin() +i);
			break;

		case 2:
			if ((countrys.size()<i) || (i<0)){
				cout << " ERROr, NO ELEMENT HERE";
				getch();
			}
			else
				countrys.erase(citys.begin()+i);
			break;
		}
	}

	void clr(){
		cout << " WHAT ERASE? 1- tower 2-country anykey - cancel\n";
		char c;
		cin >> c;
		switch(c){
		case '1':
			while(!citys.empty()){
				citys.pop_back();
			}
			break;
		case '2': 
			while(!countrys.empty()){
				countrys.pop_back();
			}
			break;
		}
	}

	void sort(){
		print(1);
		cout << "BY NAME";
		getch();
		sort(citys.begin(), citys.end(), compareCity());
		print(1);
		getch();
	}
};











////////////////

int main(){
	menu MyMenu;
	MyMenu.use();

return 0;
}
ammaximus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STL Cpluser Общие вопросы C/C++ 4 07.05.2009 12:21
STL цыкличиский список ("")(Э_Є)("") Общие вопросы C/C++ 6 07.05.2009 02:23
STL Cpluser Общие вопросы C/C++ 2 22.02.2009 23:35
[C++]STL Mumriksnus Общие вопросы C/C++ 1 02.07.2008 20:43
Сортировка в STL xz121 Общие вопросы C/C++ 3 09.06.2008 19:30