C++ 按出发地和目的地对航班进行排序
c++ sort flights by departure and destination
我有一个学校项目。需要读取文件并按目的地、出发(24 小时格式)、航班号和登机口号进行排序。我试图排序,但没有用。. 我是编程新手,如果有人可以帮助我,我将不胜感激。
// Name : Flight.h
#pragma once
#include <iostream>
#include <string>
#include <vector>
using std::string;
class Flight
{
private:
string flightNo;
string destination;
string departure;
string gateNo;
public:
Flight(void);
~Flight(void);
void readingFile();
void writingFile();
};
// Flight.cpp
#include "Flight.h"
#include <fstream>
#include <cstring>
using namespace std;
Flight::Flight(void)
{
}
Flight :: ~Flight(void)
{
}
void Flight :: readingFile()
{
string FileName;
string line;
cout << "Enter a file name: " << endl;
cin >> FileName;
ifstream inFile(FileName.c_str());
if (inFile.is_open())
{
while (getline( inFile, line))
{
cout << line <<endl;
}
inFile.close();
}else
cout << "File is not open!" <<endl;
}
//Sort.h
#pragma once
#include "Flight.h"
#include <vector>
// Sort class
class Sort
{
protected:
// number of comparisons performed in sort function
unsigned long num_cmps;
public:
// main entry point
//virtual void sort(vector<Flight>& data) = 0;
void sortflights();
// returns number of comparisons
unsigned long getNumCmps();
// resets the number of comparisons
void resetNumCmps();
};
// SelectionSort class
class SelectionSort : public Sort
{
public:
// main entry point
void sort(std::vector<Flight>& data);
};
class MergeSort : public Sort
{
// main entry point
void sort(std::vector<Flight>& data);
};
//Sort.cpp
#include "Sort.h"
#include <iostream>
using namespace std;
unsigned long Sort::getNumCmps()
{
return num_cmps;
}
void Sort::resetNumCmps()
{
num_cmps = 0;
}
void Sort :: sortflights()
{
int choose;
cout<<"Choose an option!"<<endl;
cout<<"PRESS 1 FOR SORT BY DESTINATION"<<endl;
cout<<"PRESS 2 FOR SORT BY DEPARTURE"<<endl;
cout<<"PRESS 3 FOR SORT BY FLIGHT NUMBER"<<endl;
cout<<"PRESS 3 FOR SORT BY GATE NUMBER"<<endl;
cin>>choose;
if(choose==1)
{
vector<string> destination;
for(int i=0; i<destination.size(); i++)
{
string elem1=destination[i];
string elem2=destination[i+1];
if (strcmp(elem1.c_str(),elem2.c_str())>0)
{
cout << elem1<<endl ;
}
else
cout << elem2<<endl ;
cout << "Number of iteration = " << i << endl;
}
}
else if(choose==2)
{
vector<string> departure;
for(int i=0; i<departure.size(); i++)
{}
首先,航班号和登机口号没有理由是字符串。 它们只是数字。将字符串从文件转换为 int。如果你不能使用 stl,你只需要将日期时间保留为字符串,我想:(
把它分成几块。您需要三种不同的比较:数字、日期时间和词典,具体取决于您排序的内容。
数字排序只是数字比较:if( a < b )
。
词典排序相对简单。字符只是映射到存储在某处的字形的 8 位数字。您可以像比较整数一样逐个字符比较字符串。找到彼此不同的字符后,您可以比较字符并确定哪个更大。
没有 stl 的日期时间会很棘手。您必须找到一种方法将字符串解析为可以比较的内容。谷歌解析该字符串的方法。
唯一剩下的就是你的排序算法。访问维基百科关于插入排序、合并排序、快速排序和选择排序的页面。它们详细描述了每种算法的工作原理,并且在大多数情况下,它们的实现是伪代码。
关于这个问题,真的没什么好说的了。
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- C++ 按出发地和目的地对航班进行排序