Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- #include <string>
- #include <algorithm>
- using namespace std;
- ifstream cin("input.txt");
- ofstream cout("output.txt");
- char *getline();
- int **create_array2d(size_t a, size_t b);
- void free_array2d(int **arr);
- char *resize(const char *string1, size_t size, size_t new_size);
- void print_array2d(int **arr, size_t a, size_t b);
- void swap_min(int **arr, size_t a, size_t b);
- void task1();
- void task2();
- int main() {
- task1();
- task2();
- return 0;
- }
- void task1() {
- cout << endl << " <<<<<<< TASK 1: >>>>>>> " << endl << endl;
- size_t a = 10;
- size_t b = 10;
- int **arr = create_array2d(a, b);
- print_array2d(arr, a, b); // with trash
- swap_min(arr, a, b);
- print_array2d(arr, a, b);
- free_array2d(arr);
- }
- void task2() {
- cout << endl << " <<<<<<< TASK 2: >>>>>>> " << endl << endl;
- char *str = getline();
- while (str) {
- cout << str << "::END::" << endl;
- str = getline();
- }
- }
- void swap_min(int **arr, size_t a, size_t b) {
- int min = INT32_MAX;
- size_t str = 1;
- for (size_t i = 1; i != a; ++i) {
- for (size_t j = 1; j != b; ++j) {
- if (arr[i][j] < min) {
- min = arr[i][j];
- str = i;
- }
- }
- }
- cout << endl << " MIN: " << min << " STR: " << str << endl << endl;
- if (str == 0) return;
- int *new_line = arr[1];
- arr[1] = arr[str];
- arr[str] = new_line;
- }
- int **create_array2d(size_t a, size_t b) {
- int **arr = new int *[a];
- arr[0] = new int[a * b];
- for (size_t i = 1; i != a; ++i)
- arr[i] = arr[i - 1] + b;
- return arr;
- }
- void free_array2d(int **arr) {
- delete[] arr[0];
- delete[] arr;
- }
- void print_array2d(int **arr, size_t a, size_t b) {
- for (size_t i = 1; i != a; ++i) {
- for (size_t j = 1; j != b; ++j) {
- cout << arr[i][j] << " ";
- }
- cout << endl;
- }
- }
- char *resize(const char *str, size_t size, size_t new_size) {
- char *newStr = new char[new_size];
- for (int i = 0; i < min(size, new_size); ++i) {
- newStr[i] = str[i];
- }
- delete[] str;
- return newStr;
- }
- char *getline() {
- size_t size = 10;
- char *str = new char[size];
- size_t curLen = 0;
- char c;
- cin.get(c);
- while (true) {
- if (c == '\0') {
- if (curLen != 0) {
- break;
- }
- return nullptr; // не пашет если в конце непробельный или не \n и застревает
- }
- if (c == '\n') {
- break;
- }
- if (curLen == size - 1) {
- str = resize(str, size, size * 2);
- size *= 2;
- }
- str[curLen] = c;
- curLen++;
- cin.get(c);
- }
- str[curLen] = '\0';
- return str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement