diff options
| author | Syndamia <kamen@syndamia.com> | 2024-05-08 09:35:42 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2024-05-08 09:35:42 +0300 |
| commit | e6f1ba664667047c74436f4f35536293f02d846f (patch) | |
| tree | 6fc76bcdd2bc03aa740bab26645b072cacfd7c28 /week09/Exercise3/TrainNetwork.cpp | |
| parent | cbd6d3aa606b18dde3f203e6edfab04935bbbd59 (diff) | |
| download | oop-2023-solutions-e6f1ba664667047c74436f4f35536293f02d846f.tar oop-2023-solutions-e6f1ba664667047c74436f4f35536293f02d846f.tar.gz oop-2023-solutions-e6f1ba664667047c74436f4f35536293f02d846f.zip | |
[w9] Fixed and finished ex3
Diffstat (limited to 'week09/Exercise3/TrainNetwork.cpp')
| -rw-r--r-- | week09/Exercise3/TrainNetwork.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/week09/Exercise3/TrainNetwork.cpp b/week09/Exercise3/TrainNetwork.cpp index cf9b6a9..0e95a7b 100644 --- a/week09/Exercise3/TrainNetwork.cpp +++ b/week09/Exercise3/TrainNetwork.cpp @@ -2,6 +2,14 @@ #include <cstring> #include <fstream> +TrainNetwork::TrainNetwork(const char id[8], Train trains[512]) { + strcpy(this->id, id); + for (int i = 0; i < 512; i++) { + this->trains[i] = trains[i]; + collided[i] = false; + } +} + bool TrainNetwork::HaveCollided(int index1, int index2) { if (trains[index1].railID != trains[index2].railID) { return false; @@ -10,6 +18,9 @@ bool TrainNetwork::HaveCollided(int index1, int index2) { return false; } + // Остава да проверим дали currentRegion е последния ред във файла + + // Допускаме, че за конкретно railID съществува единствен конкретен файл (единствено съдържание) std::ifstream regionFile(trains[index1].regionsFileName); if (!regionFile.is_open()) { throw "Couldn't open region file!"; @@ -31,7 +42,7 @@ bool TrainNetwork::HaveCollided(int index1, int index2) { regionFile.seekg(-1, std::ios::cur); } - bool lastLineEqualsCurrent = (regionFile.tellg() == -1 || regionFile.peek() == '\n') && regionIndex == 0; + bool lastLineEqualsCurrent = (regionFile.fail() || regionFile.peek() == '\n') && regionIndex == 0; regionFile.close(); return !lastLineEqualsCurrent; @@ -46,7 +57,7 @@ int TrainNetwork::RunTrains() { if (collided[i]) continue; for (int j = 0; j < 512; j++) { - if (collided[j] || j == i) continue; + if (j == i) continue; if (HaveCollided(i, j)) { collided[i] = collided[j] = true; |
