From 7b02ef5eda0b6308aabff95ff4968964f5cab7a2 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 16 Feb 2020 14:59:30 +0700 Subject: [PATCH] Fixed flaws --- 2sem/programming basics/15/100.cpp | 53 ++++++++++++------- .../15/additional/100_1.cpp | 29 +++++++--- .../15/additional/100_2.cpp | 29 +++++++--- .../15/additional/100_3.cpp | 29 +++++++--- .../15/additional/100_4.cpp | 29 +++++++--- .../15/additional/100_5.cpp | 29 +++++++--- 6 files changed, 150 insertions(+), 48 deletions(-) diff --git a/2sem/programming basics/15/100.cpp b/2sem/programming basics/15/100.cpp index cb7990f..2de2808 100644 --- a/2sem/programming basics/15/100.cpp +++ b/2sem/programming basics/15/100.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,49 +35,62 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; } - for (int i = 0; i < N; i++) { - for (int j = 1; j < M; j++) { - if (mtx[i][j-1] < mtx[i][j]) { - bool flag = false; - for (int v = 0; v < M; v++) { - if (mtx[i][v] == k) { - flag = true; - break; - } - } - if (flag) { - cout << "Line " << i + 1 << " contains k(k==" << k << ")\n"; + bool flag = false; + for (int j = 1; j < M; j++) { + if (mtx[k-1][j-1] > mtx[k-1][j]) { + for (int v = 0; v < M; v++) { + if (mtx[k-1][v] == k) { + flag = true; break; } } } + if (flag) { + break; + } + } + if (flag) { + cout << "Line " << k << " contains k(k==" << k << ")\n"; } } \ No newline at end of file diff --git a/2sem/programming basics/15/additional/100_1.cpp b/2sem/programming basics/15/additional/100_1.cpp index 63554a8..640e94e 100644 --- a/2sem/programming basics/15/additional/100_1.cpp +++ b/2sem/programming basics/15/additional/100_1.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,31 +35,44 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; } diff --git a/2sem/programming basics/15/additional/100_2.cpp b/2sem/programming basics/15/additional/100_2.cpp index 22a4b29..d5a5a7c 100644 --- a/2sem/programming basics/15/additional/100_2.cpp +++ b/2sem/programming basics/15/additional/100_2.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,31 +35,44 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; } diff --git a/2sem/programming basics/15/additional/100_3.cpp b/2sem/programming basics/15/additional/100_3.cpp index 386f7cb..87d5894 100644 --- a/2sem/programming basics/15/additional/100_3.cpp +++ b/2sem/programming basics/15/additional/100_3.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,31 +35,44 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; } diff --git a/2sem/programming basics/15/additional/100_4.cpp b/2sem/programming basics/15/additional/100_4.cpp index 6bf35f0..d8429f9 100644 --- a/2sem/programming basics/15/additional/100_4.cpp +++ b/2sem/programming basics/15/additional/100_4.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,31 +35,44 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; } diff --git a/2sem/programming basics/15/additional/100_5.cpp b/2sem/programming basics/15/additional/100_5.cpp index 9606c3b..915bb08 100644 --- a/2sem/programming basics/15/additional/100_5.cpp +++ b/2sem/programming basics/15/additional/100_5.cpp @@ -5,6 +5,10 @@ using namespace std; +int readBinInt(istream &ist); + +void writeBinInt(int num, ostream &ost); + void text2bin(istream &ist, ostream &ost); void my_task(istream &ist); @@ -31,31 +35,44 @@ int main() { return 0; } +int readBinInt(istream &ist) { + int x = 0; + ist.read(reinterpret_cast(&x), sizeof(int)); + return x; +} + +void writeBinInt(int num, ostream &ost) { + ost.write(reinterpret_cast(&num), sizeof(int)); +} + void text2bin(istream &ist, ostream &ost) { int N, M; ist >> N >> M; - ost << char(N) << char(M); + writeBinInt(N, ost); + writeBinInt(M, ost); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { int cv; ist >> cv; - ost << char(cv); + writeBinInt(cv, ost); } } } void my_task(istream &ist) { - ist.seekg(0, ios::beg); int k; cout << "k >>>"; cin >> k; - int N = int(ist.get()), - M = int(ist.get()); + int N = readBinInt(ist), + M = readBinInt(ist); + if (k-1 > M) { + return; + } int **mtx = new int*[N]; for (int i = 0; i < N; i++) { int *row = new int[M](); for (int j = 0; j < M; j++) { - *(row + j) = int(ist.get()); + *(row + j) = readBinInt(ist); } *(mtx + i) = row; }