1 火车卖票问题
#include<iostream>
#include<string>
#include<fstream>
#include <ctime>
using namespace std;
struct ticket
{
	string tNo;
	bool status;//0售出 1空闲
};
void writeFile(string result)
{
	ofstream ofs;
	ofs.open("result.txt", ios::out | ios::app);
	ofs << "\n" + result;
	ofs.close();
}
//传入买票数量,进行买票操作
void buyTicket(int count,ticket tArr[])
{
	srand((unsigned int)time(NULL));  // 产生随机种子
	cout << count << endl;
	switch (count)
	{
		case 1:
		{
			int num;
			while (true)
			{
				num = (rand() % 79) + 1;
				if (tArr[num].status)
				{
					tArr[num].status = 0;
					break;
				}
			}
			string result1 = "售出火车票1张 :" + 
				tArr[num].tNo + "号";
			writeFile(result1);
			cout << result1 << endl;
			break;
		}
		case 2:
			//遍历数组,如果i和i+1都没有卖出则进行售卖
			for ( int i=1; i < 81; i++ ) 
			{
				if (tArr[i-1].status && tArr[i].status )
				{
					tArr[i - 1].status = 0;
					tArr[i].status = 0;
					string result2 = "售出火车票2张 :" +
						tArr[i - 1].tNo + "号 和" + 
						tArr[i].tNo + "号";
					cout << result2 << endl;
					writeFile(result2);
					break;
				}
				else
				{
					i++;
				}
			}
			break;
		case 4:
			//遍历数组,如果一个房间都为空闲则全部售出,否则进入下个房间
			for (int i=0; i<80; i++) 
			{
				if (tArr[i].status && tArr[i+1].status 
					&& tArr[i+4].status && tArr[i+5].status)
				{
					string result4 = "售出火车票4张 :" + 
						tArr[i].tNo + "号 和" +
						tArr[i + 1].tNo + "号" +
						tArr[i + 4].tNo + "号" +
						tArr[i + 5].tNo + "号";
					cout << result4 << endl;
					writeFile(result4);
					tArr[i].status = 0;
					tArr[i + 1].status = 0;
					tArr[i + 4].status = 0;
					tArr[i + 5].status = 0;
					break;
				}
				else
				{
					//跳到下一个房间
					if (i/2%2!=0)
					{
						i += 5;
					}
					else {
						i++;
					}
				}
			}
			break;
	}
}
//读取buy.txt中数据 进行买票操作
void readTicketCount(ticket tArr[])
{
	ifstream ifs;
	ifs.open("buy.txt", ios::in);
	if (!ifs.is_open())
	{
		cout << "读取文件失败" << endl;
		return;
	}
	char c;
	while ((c = ifs.get()) != EOF)
	{
		//每次买票的数量
		int count = c - '0';
		if (c != ' ' && c != '\n') {
			//cout << count << endl;
			buyTicket(count,tArr);
		}
	}
	ifs.close();
}
int main()
{
	ticket tArr[80];
	for ( int i=0; i<80; i++ )
	{
		tArr[i] = { to_string( i + 1 ),1 };
	}
	readTicketCount(tArr);
	
	cout << "火车票购买结束" << endl;
	for (int i = 0; i < 80; i++)
	{
		cout << tArr[i].tNo << "号车票状态 " << tArr[i].status << endl;
	}
	
	system("pause");
	return 0;
}