2.2-2、车厢重组(carry.pas)

该博客讨论了一个火车站职工如何使用一座可旋转桥来重新排列车厢顺序的问题。任务是编写程序,自动化这一过程,输入车厢总数及初始顺序,输出最小的旋转次数以完成排序。输入输出样例给出了具体的操作例子。
摘要由CSDN通过智能技术生成

2、车厢重组(carry.pas)
【问题描述】
在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。
【输入文件】
输入文件有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。
【输出文件】
一个数据,是最少的旋转次数。
【输入样例】carry .in
4
4 3 2 1
【输出样例】carry .out
6

#include<iostream>
using namespace std;

int a[10001]
好的,这是一个基本的车厢调度系统代码,按照您的要求实现了输入车厢、查找、修改、删除等功能,代码共计152行,如下所示: ```c++ #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; struct TrainCar { int carNum; // 车厢编号 string startTime; // 进站时间 string endTime; // 出站时间 string handler; // 执手人 }; vector<TrainCar> trainCars; // 车厢列表 // 添加车厢 void addTrainCar() { TrainCar trainCar; cout << "请输入车厢编号:"; cin >> trainCar.carNum; cout << "请输入进站时间:"; cin >> trainCar.startTime; cout << "请输入出站时间:"; cin >> trainCar.endTime; cout << "请输入执手人:"; cin >> trainCar.handler; trainCars.push_back(trainCar); cout << "添加成功!" << endl; } // 根据编号查找车厢 int findTrainCar(int carNum) { for (int i = 0; i < trainCars.size(); i++) { if (trainCars[i].carNum == carNum) { return i; } } return -1; } // 修改车厢信息 void modifyTrainCar() { int carNum; cout << "请输入要修改的车厢编号:"; cin >> carNum; int index = findTrainCar(carNum); if (index != -1) { TrainCar& trainCar = trainCars[index]; cout << "请输入新的进站时间:"; cin >> trainCar.startTime; cout << "请输入新的出站时间:"; cin >> trainCar.endTime; cout << "请输入新的执手人:"; cin >> trainCar.handler; cout << "修改成功!" << endl; } else { cout << "没有找到对应的车厢!" << endl; } } // 删除车厢 void deleteTrainCar() { int carNum; cout << "请输入要删除的车厢编号:"; cin >> carNum; int index = findTrainCar(carNum); if (index != -1) { trainCars.erase(trainCars.begin() + index); cout << "删除成功!" << endl; } else { cout << "没有找到对应的车厢!" << endl; } } // 显示所有车厢信息 void showTrainCars() { cout << "车厢编号\t进站时间\t出站时间\t执手人" << endl; for (int i = 0; i < trainCars.size(); i++) { cout << trainCars[i].carNum << "\t\t" << trainCars[i].startTime << "\t\t" << trainCars[i].endTime << "\t\t" << trainCars[i].handler << endl; } } int main() { while (true) { cout << "请选择操作:" << endl; cout << "1. 添加车厢" << endl; cout << "2. 查找车厢" << endl; cout << "3. 修改车厢信息" << endl; cout << "4. 删除车厢" << endl; cout << "5. 显示所有车厢信息" << endl; cout << "6. 退出程序" << endl; int choice; cin >> choice; switch (choice) { case 1: addTrainCar(); break; case 2: { int carNum; cout << "请输入要查找的车厢编号:"; cin >> carNum; int index = findTrainCar(carNum); if (index != -1) { TrainCar trainCar = trainCars[index]; cout << "车厢编号:" << trainCar.carNum << endl; cout << "进站时间:" << trainCar.startTime << endl; cout << "出站时间:" << trainCar.endTime << endl; cout << "执手人:" << trainCar.handler << endl; } else { cout << "没有找到对应的车厢!" << endl; } break; } case 3: modifyTrainCar(); break; case 4: deleteTrainCar(); break; case 5: showTrainCars(); break; case 6: return 0; default: cout << "输入有误,请重新输入!" << endl; break; } } return 0; } ``` 代码中使用了一个结构体 `TrainCar`,表示一个车厢的信息,包括车厢编号、进站时间、出站时间和执手人。使用一个 `vector` 来存储所有的车厢信息。 代码中实现了添加车厢、查找车厢、修改车厢信息、删除车厢和显示所有车厢信息等功能。其中,查找车厢、修改车厢信息和删除车厢都需要先根据车厢编号进行查找,所以实现了一个 `findTrainCar` 函数来查找对应的车厢。 另外,代码中使用了一个 `while` 循环,不断让用户选择操作,直到用户选择退出程序。这样可以让程序保持运行状态,让用户自由选择操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值