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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 17:27   #1
artemi
 
Регистрация: 17.05.2010
Сообщений: 6
По умолчанию Сортровка структуры

Помогите найти ошибку не работает сортировка, Вот мой код:
#include <iostream>
#include <iterator>
#include <conio.h>
#include <fstream.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <vector>


using namespace std;

struct Perech
{int nomer;
char outpunkt[20];
char inpunkt[20];
int cost;
int mest;
int h,
min;
};
struct Bilet
{
Perech pe;
int col;
char tip;
};

template<class T>
class vokzal
{
private:
Perech *px;
int n;
int f;
std::vector<Perech> v;
struct NameSortPred { bool operator()(const Perech& a, const Perech& b) const { return a.outpunkt<b.outpunkt;}};
struct DateSortPred { bool operator()(const Perech& a, const Perech& b) const { return a.nomer<b.nomer;}};
public:
vokzal(){n=0;px=NULL;}
~vokzal(){n=0;if(px!=NULL)delete[]px;}
void inputfile();
void newBD();
void output();
void redaktor();
int vuibor();
void outputFile();
void add();
void delt();
void sortByName();
};


template<class T>
void vokzal<T>::newBD()
{
int i;
cout<<"Kolichestvo zapisey=";cin>>n;
if(px!=NULL)delete[] px;
px=new Perech[n];
if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
for(i=0;i<n;i++)
{cout<<"Nomer avtobusa:";cin>>px[i].nomer;
cout<<"Punkt otpravleniya: ";cin>>px[i].outpunkt;
cout<<"Punkt naznacheniya: ";cin>>px[i].inpunkt;
cout<<"Vremya otpravleniya: ";cin>>px[i].h>>px[i].min;
cout<<"Stoimost bileta: ";cin>>px[i].cost;
cout<<"Kolichestvo mest: ";cin>>px[i].mest;
cout<<endl;
v.push_back();
}cout<<"Baza dannuih sozdana";getch();
}
template<class T>
void vokzal<T>:utput(){
{int i;
if (v.size() == 0)
cout << "Empty" << endl;
clrscr();
cout.setf(ios::left);
cout<<endl<<"Baza dannuih 'Avtovokzal'\n"<<endl;
cout<<"N"<<" "<<setw(6)<<"Nomer"<<setw(12)<<"Otp ravlenie"<<setw (11)<<"Pribuitie"
<<setw(7)<<"Vremya"<<setw(17)<<"kol ichestvo mest"<<setw(8)<<"Stoimost"<<endl;

for ( i = 0; i < v.size(); i++){
if(v[i].h<10 && v[i].min<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].h<<":"<<"0"<<setw(3)<<px[i-1].min<<setw(17)<<px[i-1].mest<<setw(8)<<px[i-1].cost<<endl;
i--; }
else if(v[i].h<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].h<<":"<<setw(3)<<px[i-1].min<<setw(17)<<px[i-1].mest<<setw(8)<<px[i-1].cost<<endl;
i--; }
else if(v[i].min<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].h<<":"<<"0"<<setw(3)<<px[i-1].min<<setw(17)<<px[i-1].mest<<setw(8)<<px[i-1].cost<<endl;
i--; }
else
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].h<<":"<<setw(3)<<px[i-1].min<<setw(17)<<px[i-1].mest<<setw(8)<<px[i-1].cost<<endl;
i--; }
}
getch();
}
}
template<class T>
void vokzal<T>::sortByName()
{
sort(v.begin(),v.end(),DateSortPred ());
}
int main(){
vokzal<Perech> a;
a.newBD();
a.sortByName();
a.output();
return 0;
}
artemi вне форума Ответить с цитированием
Старый 17.05.2010, 17:40   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Как минимум оформите код в тег CODE (значок #)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 23.05.2010, 16:06   #3
artemi
 
Регистрация: 17.05.2010
Сообщений: 6
По умолчанию

Код:
#include <iostream>
#include <iterator>
#include <conio.h>
#include <fstream.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <vector>


using namespace std;

struct Perech
{int nomer;
char outpunkt[20];
char inpunkt[20];
int cost;
int mest;
};

template<class T>
class vokzal
{
 private:
  Perech *px;
  int n;
  int f;
    std::vector<Perech> v;
    struct NameSortPred   {  bool operator()(const Perech& a, const Perech& b) const { return a.outpunkt<b.outpunkt;}};
  struct DateSortPred   {  bool operator()(const Perech& a, const Perech& b) const { return a.nomer<b.nomer;}};
 public:
  vokzal(){n=0;px=NULL;}
  ~vokzal(){n=0;if(px!=NULL)delete[]px;} 
   void newBD();
   void output();
   void sortByName();
   void del();
  };


template<class T>
void vokzal<T>::newBD()
{
  int i;
cout<<"Kolichestvo zapisey=";cin>>n;
 if(px!=NULL)delete[] px;
  px=new Perech[n];
 if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
  //создание базы данных
 for(i=0;i<n;i++)
 {cout<<"Nomer avtobusa:";cin>>px[i].nomer;
  cout<<"Punkt otpravleniya: ";cin>>px[i].outpunkt;
  cout<<"Punkt naznacheniya: ";cin>>px[i].inpunkt;
   cout<<"Stoimost bileta: ";cin>>px[i].cost;
  cout<<"Kolichestvo mest: ";cin>>px[i].mest;
  cout<<endl;
  v.push_back(px[i]);
 }cout<<"Baza dannuih sozdana";getch();
}
template<class T>
void vokzal<T>::output(){
{
   if (v.size() == 0)
   cout << "Empty" << endl;
 clrscr();
 cout.setf(ios::left);
 cout<<endl<<"Baza dannuih 'Avtovokzal'\n"<<endl;
 cout<<"N"<<" "<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
 <<setw(7)<<"Vremya"<<setw(17)<<"kolichestvo mest"<<setw(8)<<"Stoimost"<<endl;
  for (size_t i = 0; i < v.size(); i++){
   {cout.setf(ios::left); i++;
 cout<<setw(3)<<i<<setw(6)<<v[i-1].nomer<<setw(12)<<v[i-1].outpunkt<<setw(11)<<v[i-1].inpunkt
 <<setw(17)<<v[i-1].mest<<setw(8)<<v[i-1].cost<<endl;
i--; }
 }
    getch();
}
}
template<class T>
void vokzal<T>::sortByName()
{
sort(v.begin(),v.end(),DateSortPred());
 }
template<class T>
void vokzal<T>::del(){
output();
cout<<"vvedite nomer stroki";cin>>n;
v.erase(v.begin(),v.begin()+n);
output();
}
int main(){
 vokzal<Perech> a;
 a.newBD();
 a.sortByName();
 a.output();
 return 0;
 }
с сортировкой разобрался помогите удолить заданную строку.

Последний раз редактировалось artemi; 23.05.2010 в 16:12.
artemi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры в С++ xnise Помощь студентам 2 06.04.2010 20:06
структуры в си euhenia Помощь студентам 0 31.03.2010 16:34
Структуры в C++ Wia Помощь студентам 7 18.04.2009 15:51
сортровка непростая! rcn БД в Delphi 1 27.01.2009 17:10
Структуры Centyrion Общие вопросы C/C++ 4 06.05.2008 20:33