
Лаба 1-8 Лабораторные работы 1 семестр [Вариант 4] / Лаба 7 по ОАиП
.docБелорусский государственный университет информатики и радиоэлектроники
Кафедра вычислительных методов и программирования
Лабораторная работа № 7
Тема: «Программирование с использованием структур»
Вариант 4
Выполнил студент группы № 922403
Олешкевич Андрей Сергеевич
Приняла: Коренская И.H
Минск 2009
Задание: в справочной автовокзала храниться расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.
Листинг программы:
#include <iostream>
#include <string.h>
#include <iomanip>
using std::cout;
using std::endl;
using std::cin;
using std::setw;
using std::fixed;
using std::setprecision;
const int MAX_TRIPS = 5;
struct Trip
{
public:
Trip(long int number, char *type,
char *point, double otT, double prT);
long int tripNumber;
char *tripType;
char *destractionPoint;
double otprTime;
double pribTime;
};
Trip::Trip(long int number, char *type,
char *point, double otT, double prT)
{
tripNumber = number;
tripType = type;
destractionPoint = point;
otprTime = otT;
pribTime = prT;
}
int main()
{
char dPoint[20];
double time = 0.0;
int indexes[MAX_TRIPS], p;
Trip *trips[MAX_TRIPS];
trips[0] = new Trip(12345, "Bus", "Metro station", 15.00, 16.00);
trips[1] = new Trip(12344, "Bus", "Independence Square", 15.20, 15.40);
trips[2] = new Trip(12343, "Streetcar", "Independence Square", 15.15, 15.30);
trips[3] = new Trip(12342, "Streetcar", "Metro station", 15.00, 15.30);
trips[4] = new Trip(12341, "Bus", "Independence Square", 15.10, 15.25);
cout <<"Enter a distraction point: ";
cin.getline(dPoint, 20, '\n');
cout <<"Enter a arrive time: ";
cin >> time;
cout <<endl <<"------------- Data of trips -------------------------" << endl;
for(int i = p = 0; i < MAX_TRIPS; i++)
{
char *str = trips[i]->destractionPoint;
if(strcmp(dPoint, str) == 0)
{
indexes[p] = i;
p++;
}
}
for(int j = 0; j < p; j++)
{
if(trips[indexes[j]]->pribTime < time)
{
cout <<setw(19)<<"Trip number: "<<trips[indexes[j]]->tripNumber<<endl
<<setw(19)<<"Trip type: "<<trips[indexes[j]]->tripType<< endl
<<setw(19)<<"Destraction point: "<<trips[indexes[j]]->destractionPoint
<<endl <<setw(19) <<"Time of dispatch: "<<fixed<<setprecision(2)
<<trips[indexes[j]]->otprTime<<endl<<setw(19)<<"Time of arrived: "
<< fixed<<setprecision(2)<< trips[indexes[j]]->pribTime << endl;
cout <<"-----------------------------------------------" << endl;
}
}
for(int k = 0; k < MAX_TRIPS; k++)
delete trips[k];
return 0;
}
Выводы: Проведя данную лабораторную работу, я научился использовать структуры при написании своих программ. Также научился использовать манипуляторы потоков fixed, setw, setprecision которые позволяют управлять форматным выводом данных.