Задача на структуру TRAIN, с сортировкой по алфавиту и введенного с клавиатуры времени (реализовать через файлы)

О задаче:

По книге:C/C++ Программирование на языке высокого уровня: Учебник для вузов
Автор книги: Павловская Татьяна Александровна
Задача на тему: Структуры
Цель задачи дополнена: заполнить структуры из файла и реализовать вывод результатов в файл
Вариант задачи: 7 — (на странице 146)

[свернуть]
Условия задачи:

1. Описать структуру с именем TRAIN, содержащую следующие поля:
  • NAZN — название пункта назначения;
  • NUMR — номер поезда;
  • TIME — время отправления.

[свернуть]

2. Написать программу, выполняющую следующие действия:
  • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
  • вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;
  • если таких поездов нет, выдать на дисплей соответствующее сообщение.

[свернуть]

[свернуть]
Листинг(исходник) программы:

Struct.cpp

#define Num 8
struct TRAIN	{
char NAZN[20];
int NUMR;
float TIME;
};

[свернуть]
main.cpp

#include <iostream>
#include <fstream>
#include <locale>
#include "Struct.cpp"
using namespace std;
TRAIN RASP[Num];

void main(){
setlocale(LC_ALL,"Russian");
/////////////////////Заполнение структуры данными//////////////////////////////////////////////////////////////
ifstream fin("Struct.txt");
for(int i=0; i<Num;i++)
{
fin>>RASP[i].NAZN>>RASP[i].NUMR>>RASP[i].TIME;
}
fin.close();

/////////////////////Сортировка по Алфавиту//////////////////////////////////////////////////////////////
for (int i=0; i<Num; i++)
{
for(int j=0; j<Num;j++)
{
if(RASP[i].NAZN[0] < RASP[j].NAZN[0])
{
swap(RASP[i], RASP[j]);
}
else if(RASP[i].NAZN[0] == RASP[j].NAZN[0])
{
if(RASP[i].NAZN[1] < RASP[j].NAZN[1])
{
swap(RASP[i], RASP[j]);
}
}
}
}
//////////////////////////Поиск и вывод поездов по введенному с клавиатуры времени//////////////////
cout<<"\\t\\tВведите время отправления: ";	float UserIn_TIME;
cin>>UserIn_TIME;cout<<endl;
bool flag1 = true ,flag2 = false;
ofstream fout("File.txt");

for(int i=0; i<Num;i++)
{
if( UserIn_TIME > RASP[i].TIME)
{
flag1 = false;
}
else 
{
fout<<" Место назначения: "<<RASP[i].NAZN<<" Номер поезда: "<<RASP[i].NUMR<<" Время отправления: "<<RASP[i].TIME<<endl;
flag1 = true;
flag2 = true;
}
}
if( flag1 == false && flag2 == false) fout<<"\\n\\t\\tНет поездов отправляющихся после этого времени!\\n";
fout.close();
system("pause");
}

[свернуть]

[свернуть]

Автор: Павел Кадыров

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *