aboutsummaryrefslogtreecommitdiff
path: root/week09/Exercise3/TrainNetwork.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-05-08 09:35:42 +0300
committerSyndamia <kamen@syndamia.com>2024-05-08 09:35:42 +0300
commite6f1ba664667047c74436f4f35536293f02d846f (patch)
tree6fc76bcdd2bc03aa740bab26645b072cacfd7c28 /week09/Exercise3/TrainNetwork.cpp
parentcbd6d3aa606b18dde3f203e6edfab04935bbbd59 (diff)
downloadoop-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.cpp15
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;