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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 17:36   #1
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию Проблема с STL сортировкой

Помогите плиз исправить почему не хочет программа собраться
Код:
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <list>
#ifndef NS_H
#define NS_H
using namespace std;
typedef double DB;
typedef unsigned int USI;
class notebook
{
public:
	DB price;
	USI weigth,heigth;
	char *name;
	notebook(){}
	notebook(char*N,DB PRICE,USI WEIGTH,USI HEIGTH);
	notebook(const notebook &NT);
	virtual ~notebook(){}
	void print()const;
	friend bool operator <(const notebook &,const notebook &);
	friend bool operator ==(const notebook &,const notebook &);
};
void notebook::print() const
{
	cout<<name<<" "<<price<<" "<<heigth<<" "<<weigth<<endl;
}
notebook::notebook(char *N, DB PRICE, USI WEIGTH, USI HEIGTH)
{
	int size=strlen(N);
	name=new char[size+1];
	if (name==NULL)
		{
			cout<<"Memory blocked\n";
			exit(1);
		}
	strcpy(name,N);
	price=PRICE;
	weigth=WEIGTH;
	heigth=HEIGTH;
}
notebook::notebook(const notebook&NT)
{	
	name=new char [strlen(name)+1];
	if (name==NULL)
		{
			cout<<"Memory blocked\n";
			exit(1);
		}
	strcpy(name,NT.name);
	price=NT.price;
	weigth=NT.weigth;
	heigth=NT.heigth;
	
}
bool operator<(const notebook &p1, const notebook &p2)
{
	if (p1.price==p2.price)
	{
		return (p1.price<p2.price)?true:false;
	}
	return (p1.price>p2.price)?true:false;
}
bool operator ==(const notebook &p1,const notebook &p2)
{
	return ((p1.price==p2.price)&&(p1.weigth==p2.weigth))?true:false;
}
class compareNot
{
public:
	bool operator()(const notebook* pt1, const  notebook* pt2)
	{
		return *pt1< *pt2;
	}
};
class disp
{
public:
	void operator ()(const notebook* pt)const
	{
		pt->print();
	}
};
#endif
int main()
{
	list <notebook *>PL;
	list<notebook*>::iterator IT,IT2;
	notebook *pt1=new notebook("SAMSUNG",16000,1366,768);
	notebook *pt2=new notebook("ACER",13000,1024,768);
	notebook *pt3=new notebook("ASUS",17500,1366,768);
	notebook *pt4=new notebook("TOSHIBA",13500,1024,768);
	PL.push_back(pt1);
	PL.push_back(pt2);
	PL.push_back(pt3);
	PL.push_back(pt4);
	IT2=PL.end();
	IT=PL.begin();
	for_each(PL.begin(),PL.end(),disp());
	sort(PL.begin(),((*IT2)-(*IT)));
	for_each(PL.begin(),PL.end(),disp());
	cout<<PL.size()<<endl;
	IT=PL.begin();
	(*IT++);
	notebook *pt5=new notebook("LENOVO",25000,1440,840);
	PL.insert(IT,pt5);
	for_each(PL.begin(),PL.end(),disp());
	cout<<endl;
	IT=find(PL.begin(),PL.end(),pt3);
	(*IT)->print();
	PL.erase(PL.begin(),IT);
	cout<<endl;
	for_each(PL.begin(),PL.end(),disp());
	cout<<endl;
	return 0;
}
Skender вне форума Ответить с цитированием
Старый 01.11.2011, 17:41   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Помогите плиз исправить почему не хочет программа собраться

смотришь на ошибки, анализируешь что могло привести к их появлению, исправляешь, ... PROFIT!
Rififi вне форума Ответить с цитированием
Старый 01.11.2011, 17:47   #3
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Код:
	if (p1.price==p2.price)
	{
		return (p1.price<p2.price)?true:false;
	}
Я долго думал.
Son Of Pain вне форума Ответить с цитированием
Старый 01.11.2011, 18:05   #4
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А не собирается, вестимо, потому что списки не умеют так сортироваться. Там должно быть написано
Код:
PL.sort(compareNot());
Son Of Pain вне форума Ответить с цитированием
Старый 01.11.2011, 18:12   #5
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию

Всем огромное спасибо за помощь
Skender вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема в PASCALE с сортировкой в массиве elizar Помощь студентам 1 01.11.2011 01:01
Проблема с сортировкой matbe14 Помощь студентам 0 29.09.2011 11:16
Проблема с нестандартной сортировкой Depressive Microsoft Office Excel 9 21.05.2011 15:14
Проблема с сортировкой Anubys Помощь студентам 0 19.04.2011 17:10
проблема с сортировкой вставками Brabus Помощь студентам 4 27.06.2010 12:27