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;
}