Mail.RuПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискВсе проекты

Нужна помощь с програмкой на С++ =))

Профи (536), на голосовании 2 года назад
Разработать программу обработки данных железнодорожного
расписания. Известно расписание поездов, проходящих через станцию: номер поез­да, назначение (откуда куда, например, Москва — Омск) , часы и мину­ты прибытия, часы и минуты отправления. Значения часов и минут це­лые, положительные числа; число часов не превышает 23, число минут – 59. Общее количество проходящих поездов равно 25. Поезда приходят каждый день по
одному расписанию. По заданному времени определить, какие поезда (номер и назначе­ние) стоят в этот момент на станции и сколько времени осталось до отправления каждого.
Голосование за лучший ответ
#include <iostream>
#include <ctime>

using namespace std;

struct train{
public:
int trNum; // номер поезда
char dest[30]; // название поезда
int arH; // часы прихода поезда
int arM; // минут прихода поезда
int depH; // минуты отхода поезда
int depM; // часы отхода поезда
//int standing_TimeH; // часы на пероне
//int standing_TimeM; // минуты на пероне
int inWhatTimeH; // через сколько часов поезд отправится
int inWhatTimeM; // через сколько минут поезд отправится
};

int main(){

srand(time(0));
char str[7][10] = {"Odessa","Kiev","Donetsk","Lviv","Gitomer","Mariupol","Lugansk"};
int ha = 0, hb = 23, ma = 0, mb = 59; // для заполнения рандомным временем часов и минут
const int N = 25; // количество поездов
train ar[N]; // объявляем массив структур

int b;

for(int i(0); i < N; i++){ // рандомим названия поездов
b = rand()%(6-0+1)+0;
strcpy(ar[i].dest,str[b]);
strcat(ar[i].dest," - ");
b = rand()%(7);
strcat(ar[i].dest,str[b]);
}

int current_timeH, current_timeM; // объявляем переменные для хранения текущех часов и минут

for(int i(0); i < N; i++){ // в этом цикле заполняем данными массив структур
ar[i].trNum = i+1; //номер поезда
ar[i].arH = rand()%(hb - ha + 1) + ha; // рандомим часы прихода
ar[i].arM = rand()%(mb - ma + 1) + ma; // рандомим минуты прихода
while (ar[i].depH < ar[i].arH) ar[i].depH = rand() % (hb - ha + 1) + ha; // нужно сделать что бы время отхода было больше времени прихода. Поэтому, рандомим часы отхода, пока не получим большие или равные часам прихода.
if(ar[i].arH == ar[i].depH) while(ar[i].arM > ar[i].depM){ ar[i].depM = rand() % (mb - ma + 1) + ma;} // Если часы прихода и отхода равны, то минуты отхода поезда должны быть больше.
else ar[i].depM = rand() % (mb - ma + 1) + ma; // тут пофиг
//ar[i].standing_TimeH = ar[i].arH - ar[i].depH; // находим сколько часов поезд простоит на станции
//ar[i].standing_TimeM = ar[i].arM - ar[i].depM; // находим сколько минут поезд простоит на станции
cout.width(5);
cout << "Trn " << ar[i].dest << "\tNum " << ar[i].trNum; // выводим данные поезда
cout << "\t ATM: " << ar[i].arH << "H "
<< ar[i].arM << "M.\t Time of departure: "
<< ar[i].depH << "H " << ar[i].depM << "M.\n";
}

cout << "=========================" << endl;
cout << "Enter current time: \n"; // вводим текущее время
do{
cout << "Enter hours (0-23): ";
cin >> current_timeH; // вводим текущие часы
}while (current_timeH < 0 || current_timeH > 23);
do{
cout << "Enter minutes (0-59): ";
cin >> current_timeM; // вводим текущие минуты
}while(current_timeM < 0 || current_timeM > 59);

cout << endl << endl;

for(int i(0); i < N; i++){ // тут определяем поезда, которые находятся на станции в текущий момент и выводим данные по ним.
// поезд должен прийти раньше текущего часа и уйти позже. Или, если часы прихода и нанешние одинаковые, то минуты прихода должны быть меньше. Или, если часы отхода и нынешние одинаковые, то минуты отхода должны быть больше.
if(((current_timeH > ar[i].arH) && (current_timeH < ar[i].depH)) || ((current_timeH == ar[i].arH && current_timeM > ar[i].arM) || (current_timeH == ar[i].depH && current_timeM < ar[i].depM))){
ar[i].inWhatTimeH = ar[i].depH - current_timeH;
ar[i].inWhatTimeM = ar[i].depM - current_timeM;
if(ar[i].inWhatTimeM < 0) {ar[i].inWhatTimeM += 60; ar[i].inWhatTimeH--;}
cout << "Train number " << ar[i].trNum << " is on the station." // It will departure at "<< ar[i].depH << "H " << ar[i].depM <<
<< "M. He'll be departed in " << ar[i].inWhatTimeH << "H "
<< ar[i].inWhatTimeM << "M" << endl;
}
}

system("pause > nul");
return 0;
}
Похожие вопросы
Также спрашивают