Список используемых источников
Delete SecondData, SecondBool, TimeSecond, SecondNumber; If ((Indata == Indata) && (Indata == Indata — 1)). If ((Indata == Indata — 1) && (Indata == Indata)). If ((Indata == 1) && (Indata == Station + 1)). Первая стадия обработки. Модуль обработки данных. Вторая стадия обработки. Вычисление интервалов*/. Первичная обработка*/. Вторичная обработка*/. Модуль вывода данных. For (int i = 1; i… Читать ещё >
Список используемых источников (реферат, курсовая, диплом, контрольная)
- 1. Орлов, С. А. Технология разработки программ / С. А. Орлов. — СПб.: Питер, 2004. — 420с.
- 2. Лафоре Р. Объектно-ориентированное программирование в C++. — СПб: Питер, 2004. — 923с.
- 3. Гамма, Э., Хелм, Р., Джонсон, Р., Влиссидесс, Д. Приемы объектно-ориентированного программирования. Паттерны проектирования. — Спб: Питер, 2010. — 366 с.
- 4. Годунова Е. К.
Введение
в теорию графов. Индивидуальные задания. — МПГУ, 2012. — 44 с.
Приложение 1
Программная документация: файл листинг программы
#include.
#include.
using namespace std;
class train.
{.
private:
int Str = 0, Station;
public:
//Модуль считывания кол-ва станций.
void ReadStation ().
{.
cout <> Station;
Station = Station — 1;
}.
//Модуль считывания начальных данных.
void ReadIN ().
{.
ReadStation ();
char *str = new char[1024];
ifstream INS («D:input.txt»);
while (!INS.eof ()).
{.
INS.getline (str, 1024, ' ');
Str++;
}.
INS.close ();
float**Indata = new float*[Str];
for (int i = 0; i < Str; i++).
Indata[i] = new float[3];
ifstream IN;
IN.open («D:input.txt»);
for (int i = 0; i < Str; i++).
for (int j = 0; j < 3; j++).
IN >> Indata[i][j];
IN.close ();
SaveData (Indata);
}.
//Модуль обработки данных.
void SaveData (float**Indata).
{.
float*Data = new float[Station];
float*NumberData = new float[Station];
/*Первичная обработка*/.
int Number = 0, Shet = 0, Bool = 0;
for (int i = 0; i < Str; i++).
{.
if (Indata[i][0] + 1 == Indata[i][1]).
{.
Data[Number] = Indata[i][2];
NumberData[Number] = Indata[i][0];
}.
else if (Indata[i][0] - 1 == Indata[i][1]).
{.
Data[Number] = Indata[i][2];
NumberData[Number] = Indata[i][1];
}.
else.
Number—;
Number++;
}.
Number = 0;
float*TimeNumberData = new float[Station];
for (int i = 1; i < Station + 1; i++).
{.
Bool = 0;
for (int j = 0; j < Station; j++).
{.
if (i == NumberData[j]).
Bool = 1;
}.
if (Bool == 0).
{.
TimeNumberData[Number] = i;
Number++;
}.
}.
for (int i = 0; i < Number; i++).
NumberData[Station — i — 1] = TimeNumberData[i];
Bool = Number;
delete TimeNumberData;
float*TimeData = new float[Station];
for (int i = 0; i < Station; i++).
{.
Number = NumberData[i];
TimeData[Number — 1] = Data[i];
if (i >= Station — Bool).
TimeData[Number — 1] = 0;
}.
for (int i = 0; i < Station; i++).
Data[i] = TimeData[i];
delete TimeData;
/*Вычисление интервалов*/.
int Gap = 0, SecondGap = 0;
float AllLong;
for (int i = 0; i < Str; i++).
if ((Indata[i][0] == 1) && (Indata[i][1] == Station + 1)).
AllLong = Indata[i][2];
for (int i = 0; i < Str; i++).
{.
for (int j = 0; j < Str; j++).
{.
Gap = Indata[i][1] - 1;
SecondGap = Indata[i][0] - 1;
if ((Indata[i][0] == Indata[j][0]) && (Indata[i][1] == Indata[j][1] - 1)).
if (Data[Gap] == 0).
Data[Gap] = Indata[j][2] - Indata[i][2];
if ((Indata[i][0] == Indata[j][0] - 1) && (Indata[i][1] == Indata[j][1])).
if (Data[SecondGap] == 0).
Data[SecondGap] = Indata[i][2] - Indata[j][2];
if ((Indata[i][0] == 1)&&(Indata[j][1] == Station + 1)&&(Indata[i][1] == Indata[j][0] - 1)).
if (Data[Gap] == 0).
Data[Gap] = AllLong — (Indata[j][2] + Indata[i][2]);
}.
}.
/*Вторичная обработка*/.
//Подготовка.
float**SecondData = new float *[Str];
for (int i = 0; i < Str; i++).
SecondData[i] = new float[3];
Number = 0;
for (int i = 0; i < Str; i++).
{.
if (Indata[i][0] + 1 == Indata[i][1]).
Number—;
else if (Indata[i][0] - 1 == Indata[i][1]).
Number—;
else.
{.
SecondData[Number][0] = Indata[i][2];
SecondData[Number][1] = Indata[i][0];
if (Indata[i][0] < Indata[i][1]).
SecondData[Number][2] = Indata[i][1] - Indata[i][0];
if (Indata[i][0] > Indata[i][1]).
SecondData[Number][2] = Indata[i][0] - Indata[i][1];
}.
Number++;
}.
int Koll = 0, SecondBool = 0;
Koll = Number;
Number = 0;
Bool = 0;
float*TimeSecond = new float[Station];
float**SecondNumber = new float*[Station];
for (int i = 0; i < Station; i++).
SecondNumber[i] = new float[2];
for (int i = 0; i < Koll; i++).
{.
for (int j = 0; j < SecondData[i][2]; j++).
TimeSecond[j] = SecondData[i][1] + j;
for (int j = 0; j < SecondData[i][2]; j++).
{.
Shet = TimeSecond[j];
if (Data[Shet — 1] > 0).
Number++;
}.
Number = SecondData[i][2] - Number;
if (Number == 1).
{.
SecondNumber[Bool][0] = i;
Bool++;
}.
else.
{.
SecondNumber[SecondBool][1] = i;
SecondBool++;
}.
Number = 0;
}.
//Первая стадия обработки.
for (int i = 0; i < Bool; i++).
{.
Number = SecondNumber[i][0];
for (int j = 0; j < SecondData[Number][2]; j++).
TimeSecond[j] = SecondData[Number][1] + j;
for (int j = 0; j < SecondData[Number][2]; j++).
{.
Shet = TimeSecond[j];
if (Data[Shet — 1] > 0).
SecondData[Number][0] = SecondData[Number][0] - Data[Shet — 1];
else.
Koll = Shet — 1;
}.
Data[Koll] = SecondData[Number][0];
}.
//Вторая стадия обработки.
for (int i = 0; i < SecondBool; i++).
{.
Number = SecondNumber[i][1];
for (int j = 0; j < SecondData[Number][2]; j++).
TimeSecond[j] = SecondData[Number][1] + j;
for (int j = 0; j < SecondData[Number][2]; j++).
{.
Shet = TimeSecond[j];
if (Data[Shet — 1] > 0).
SecondData[Number][0] = SecondData[Number][0] - Data[Shet — 1];
else.
Koll = Shet — 1;
}.
Data[Koll] = SecondData[Number][0];
}.
delete SecondData, SecondBool, TimeSecond, SecondNumber;
WriteOUT (Data);
}.
//Модуль вывода данных.
void WriteOUT (float*Data).
{.
ofstream OUT;
OUT.open («D:OUT.txt», ios: out);
for (int i = 0; i < Station; i++).
{.
if (Data[i] == 0).
{.
OUT << i + 1 << «-» << i + 2 << «: Недостаточно данных» << endl;
cout << i + 1 << «-» << i + 2 << «: Недостаточно данных» << endl;
}.
else.
{.
OUT << i + 1 << «-» << i + 2 << «: „<< Data[i] <<“ км.» << endl;
cout << i + 1 << «-» << i + 2 << «: „<< Data[i] <<“ км.» << endl;
}.
}.
cout << «Файл сохранен в D: OUT. txt» << endl;
OUT.close ();
}.
};
void main ().
{.
setlocale (LC_ALL, «rus»);
float*Data = new float[3];
train ferst;
ferst.ReadIN ();
system («pause»);
}.