diff --git a/1sem/programming basics/13/100.cpp b/1sem/programming basics/13/100.cpp index fe6fee2..3294d59 100644 --- a/1sem/programming basics/13/100.cpp +++ b/1sem/programming basics/13/100.cpp @@ -1,50 +1,75 @@ -// pb_13_100.cpp +// pb_15_100.cpp // Горбацевич Андрей #include +#include using namespace std; -void print_mtx(int **mtx, int w, int h, ostream &ost); -int **generate_mtx(int n); +void text2bin(istream &ist, ostream &ost); -int main() -{ - ofstream fout("out.txt", ios::trunc); - if (!fout.is_open()) +void my_task(istream &ist); + +int main() { + ifstream ifs("in.txt"); + ofstream ofs("out.bin", ios::trunc|ios::binary); + if (!ifs.is_open()) { cerr << "Unable to open file" << endl; return 1; } - - int n; - cout << "n >>>"; - cin >> n; - int **mtx = generate_mtx(n); - print_mtx(mtx, n, n, fout); + + text2bin(ifs, ofs); + my_task(ifs); + + return 0; } -void print_mtx(int **mtx, int w, int h, ostream &ost) { - for (int i = 0; i < w; i++) { - for (int j = 0; j < h; j++) { - ost << *(*(mtx + i) + j) << " "; - } - ost << endl; - } - ost << endl; +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << N << ' ' << M; + for (int i = 0; i < N; i++) { + ost << endl; + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << cv << ' '; + } + } } -int **generate_mtx(int n) { - int **mtx = new int*[n]; - for (int i = 0; i < n; i++) { - int *row = new int[n](); - int pos = n; - for (int j = -n+i; j < 0; j++) { - *(row + pos--) = abs(j); - } - for (int j = 0; pos >= 0; j++) { - *(row + pos--) = abs(j); - } - *(mtx + i) = row; - } - return mtx; -} +void my_task(istream &ist) { + ist.seekg(0, ios::beg); + int k; + cout << "k >>>"; + cin >> k; + int N, M; + ist >> N >> M; + int **mtx = new int*[N]; + for (int i = 0; i < N; i++) { + int *row = new int[M](); + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + *(row + j) = cv; + } + *(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"; + } + break; + } + } + } +} \ No newline at end of file diff --git a/2sem/programming basics/15/100.cpp b/2sem/programming basics/15/100.cpp new file mode 100644 index 0000000..c68200b --- /dev/null +++ b/2sem/programming basics/15/100.cpp @@ -0,0 +1,79 @@ +// pb_15_100_v5.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(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"; + break; + } + } + } + } +} \ 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 new file mode 100644 index 0000000..63554a8 --- /dev/null +++ b/2sem/programming basics/15/additional/100_1.cpp @@ -0,0 +1,90 @@ +// pb_15_100_v1.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(mtx + i) = row; + } + for (int i = 0; i < N; i++) { + bool flag = true; + int *row = mtx[i]; + for (int j = 1; j < M; j++) { + if (row[j-1] < row[j]) { + flag = false; + break; + } + } + if (flag) { + int l = 0, + r = M-1; + int m; + while (l<=r) { + m = (l+r) / 2; + if (k < row[m]) { + l = m+1; + } + else if (k > row[m]) { + r = m-1; + } + else { + cout << "Line " << i + 1 << " is descending and contains k(k==" << k << ")\n"; + break; + } + } + } + } +} \ No newline at end of file diff --git a/2sem/programming basics/15/additional/100_2.cpp b/2sem/programming basics/15/additional/100_2.cpp new file mode 100644 index 0000000..22a4b29 --- /dev/null +++ b/2sem/programming basics/15/additional/100_2.cpp @@ -0,0 +1,83 @@ +// pb_15_100_v2.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(mtx + i) = row; + } + for (int i = 0; i < N; i++) { + bool flag = true; + int *row = mtx[i]; + int *ic = new int[M](); + for (int j = 0; j < M; j++) { + for (int k = j+1; k < M; k++) { + if (row[j] == row[k]) { + ic[j] += 1; + } + } + } + int mx = ic[0], + mxp = 0; + for (int j = 1; j < M; j++) { + if (mx < ic[j]) { + mx = ic[j]; + mxp = j; + } + } + cout << "Most common on line " << i+1 << ": " << row[mxp] << endl; + } +} \ No newline at end of file diff --git a/2sem/programming basics/15/additional/100_3.cpp b/2sem/programming basics/15/additional/100_3.cpp new file mode 100644 index 0000000..386f7cb --- /dev/null +++ b/2sem/programming basics/15/additional/100_3.cpp @@ -0,0 +1,90 @@ +// pb_15_100_v3.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(mtx + i) = row; + } + for (int i = 0; i < N; i++) { + bool flag = true; + int *row = mtx[i]; + for (int j = 1; j < M; j++) { + if (row[j-1] > row[j]) { + flag = false; + break; + } + } + if (flag) { + int l = 0, + r = M-1; + int m; + while (l<=r) { + m = (l+r) / 2; + if (k > row[m]) { + l = m+1; + } + else if (k < row[m]) { + r = m-1; + } + else { + cout << "Line " << i + 1 << " is ascending and contains k(k==" << k << ")\n"; + break; + } + } + } + } +} \ No newline at end of file diff --git a/2sem/programming basics/15/additional/100_4.cpp b/2sem/programming basics/15/additional/100_4.cpp new file mode 100644 index 0000000..6bf35f0 --- /dev/null +++ b/2sem/programming basics/15/additional/100_4.cpp @@ -0,0 +1,82 @@ +// pb_15_100_v4.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(mtx + i) = row; + } + for (int i = 0; i < N; i++) { + int *row = mtx[i]; + bool flag = true; + for (int sk = 1; sk <= k; sk++) { + bool cc = false; + for (int j = 0; j < M; j++) { + if (row[j] == sk) { + cc = true; + break; + } + } + if (!cc) { + flag = false; + break; + } + } + if (flag) { + cout << "Line " << i+1 << " contains every number in 1..." << k << endl; + } + } +} \ No newline at end of file diff --git a/2sem/programming basics/15/additional/100_5.cpp b/2sem/programming basics/15/additional/100_5.cpp new file mode 100644 index 0000000..9606c3b --- /dev/null +++ b/2sem/programming basics/15/additional/100_5.cpp @@ -0,0 +1,79 @@ +// pb_15_100_v5.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void text2bin(istream &ist, ostream &ost); + +void my_task(istream &ist); + +int main() { + string path_in = "in.txt"; // путь до входного файла + string path_out = "out.bin"; // путь до выходного файла + + ifstream ifs(path_in); + ofstream ofs(path_out, ios::binary); + if (!ifs.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + text2bin(ifs, ofs); + ifs.close(); + ofs.close(); + + ifstream binfs(path_out, ios::binary); + my_task(binfs); + + return 0; +} + +void text2bin(istream &ist, ostream &ost) { + int N, M; + ist >> N >> M; + ost << char(N) << char(M); + for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + int cv; + ist >> cv; + ost << char(cv); + } + } +} + +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 **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()); + } + *(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"; + break; + } + } + } + } +} \ No newline at end of file