From e9d7aa3900b5a512fbec30ad1dd93ae8bf78fbc8 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 5 Dec 2019 16:02:59 +0700 Subject: [PATCH] Additions and updates in 1sem/PB --- 1sem/programming basics/12/100.cpp | 43 +++++++++++++++++++++++++ 1sem/programming basics/13/100.cpp | 50 ++++++++++++++++++++++++++++++ 1sem/programming basics/14/100.cpp | 35 +++++++++++++++++++++ 1sem/programming basics/README.md | 10 ++---- 1sem/programming basics/z15/43.cpp | 28 +++++++++++++++++ 1sem/programming basics/z15/44.cpp | 30 ++++++++++++++++++ 1sem/programming basics/z15/45.cpp | 0 7 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 1sem/programming basics/12/100.cpp create mode 100644 1sem/programming basics/13/100.cpp create mode 100644 1sem/programming basics/14/100.cpp create mode 100644 1sem/programming basics/z15/43.cpp create mode 100644 1sem/programming basics/z15/44.cpp create mode 100644 1sem/programming basics/z15/45.cpp diff --git a/1sem/programming basics/12/100.cpp b/1sem/programming basics/12/100.cpp new file mode 100644 index 0000000..e232377 --- /dev/null +++ b/1sem/programming basics/12/100.cpp @@ -0,0 +1,43 @@ +// pb_12_100.cpp +// Горбацевич Андрей +#include + +using namespace std; + +void print_mtx(int **mtx, int w, int h); +int **generate_mtx(int n); + +int main() +{ + int n; + cout << "n >>>"; + cin >> n; + int **mtx = generate_mtx(n); + print_mtx(mtx, n, n); +} + +void print_mtx(int **mtx, int w, int h) { + for (int i = 0; i < w; i++) { + for (int j = 0; j < h; j++) { + cout << *(*(mtx + i) + j) << " "; + } + cout << endl; + } + cout << endl; +} + +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; +} diff --git a/1sem/programming basics/13/100.cpp b/1sem/programming basics/13/100.cpp new file mode 100644 index 0000000..fe6fee2 --- /dev/null +++ b/1sem/programming basics/13/100.cpp @@ -0,0 +1,50 @@ +// pb_13_100.cpp +// Горбацевич Андрей +#include + +using namespace std; + +void print_mtx(int **mtx, int w, int h, ostream &ost); +int **generate_mtx(int n); + +int main() +{ + ofstream fout("out.txt", ios::trunc); + if (!fout.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); +} + +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; +} + +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; +} diff --git a/1sem/programming basics/14/100.cpp b/1sem/programming basics/14/100.cpp new file mode 100644 index 0000000..e2a0e56 --- /dev/null +++ b/1sem/programming basics/14/100.cpp @@ -0,0 +1,35 @@ +// pb_14_100.cpp +// Горбацевич Андрей +#include +#include +#include +#define MAX_STRING 1000 + +using namespace std; + +void my_task(istream &ist, ostream &ost); + +int main() +{ + ifstream inf("in.txt"); + ofstream fout("out.txt", ios::trunc); + if (!inf.is_open() || !fout.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + my_task(inf, fout); +} + +void my_task(istream &ist, ostream &ost) { + while (!ist.eof() && ist.good()) { + string r; + getline(ist, r); + size_t i; + while ((i = r.find("YES")) != string::npos) { + r.replace(i, 3, "NO"); + } + ost << r << endl; + } +} diff --git a/1sem/programming basics/README.md b/1sem/programming basics/README.md index 1979980..5a8612f 100644 --- a/1sem/programming basics/README.md +++ b/1sem/programming basics/README.md @@ -41,16 +41,12 @@ * _`11`_ - [Практическая работа № 11 «Строки символов»](./11) 10. Двумерные массивы. * _`z11`_ - [Z11. Задачи на двумерные массивы](./z11) + * _`12`_ - [Практическая работа № 12 «Двумерные массивы»](./12) 11. Текстовые файлы. * _`z12`_ - [Z12. Задачи на текстовые файлы](./z12) - * _`13`_ - Практическая работа № 13 «Текстовые файлы» + * _`13`_ - [Практическая работа № 13 «Текстовые файлы»](./12) * _`z13`_ - [Z13. Задачи на обработку текстов](./z13) - * _`14`_ - Практическая работа № 14 «Обработка текстов» - 12. Двоичные файлы. - * _`z14`_ - [Z14. Задачи на двоичные файлы](./z14) - * _`15`_ - Практическая работа № 15 «Двоичные файлы» - * _`z15`_ - Z15. Задачи на обработку двоичных файлов - * _`16`_ - Практическая работа № 16 «Обработка двоичных файлов» + * _`14`_ - [Практическая работа № 14 «Обработка текстов»](./14) > Два девятых пункта во втором разделе. Nuff said. diff --git a/1sem/programming basics/z15/43.cpp b/1sem/programming basics/z15/43.cpp new file mode 100644 index 0000000..67be14a --- /dev/null +++ b/1sem/programming basics/z15/43.cpp @@ -0,0 +1,28 @@ +// pb_z15_43.cpp +// Горбацевич Андрей +#include +#include +#include + +using namespace std; + +void reverse_uchar(std::iostream &ost); + +int main() { + fstream iof("out.bin", ios::in|ios::out|ios::binary); + if (!iof.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + reverse_uchar(iof); + return 0; +} + +void reverse_uchar(std::iostream &ost) { + unsigned char cval = UCHAR_MAX; + for (int i = 0; i <= cval; i++) { + ost << cval--; + } +} diff --git a/1sem/programming basics/z15/44.cpp b/1sem/programming basics/z15/44.cpp new file mode 100644 index 0000000..12be17d --- /dev/null +++ b/1sem/programming basics/z15/44.cpp @@ -0,0 +1,30 @@ +// pb_z15_44.cpp +// Горбацевич Андрей +#include +#include + +using namespace std; + +void uchar_add(std::iostream &ost, unsigned char v); + +int main() { + fstream iof("out.bin", ios::in|ios::out|ios::binary); + if (!iof.is_open()) + { + cerr << "Unable to open file" << endl; + return 1; + } + + unsigned char v; + cout << "Char >>>"; + cin >> v; + uchar_add(iof, v); + return 0; +} + +void uchar_add(std::iostream &ost, unsigned char v) { + while (!ost.eof() && ost.good()) { + unsigned int out = (unsigned char)ost.get() + v; + ost << (unsigned char)(out > 255? char(255) : char(out)); + } +} diff --git a/1sem/programming basics/z15/45.cpp b/1sem/programming basics/z15/45.cpp new file mode 100644 index 0000000..e69de29