Advertisement
Guest User

Untitled

a guest
Mar 27th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 2.99 KB | None | 0 0
  1. #include <fstream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5.  
  6. std::ifstream cin("input.txt");
  7. std::ofstream cout("output.txt");
  8.  
  9. char *getline();
  10.  
  11. int **create_array2d(size_t a, size_t b);
  12.  
  13. void free_array2d(int **arr);
  14.  
  15. char *resize(const char *string1, size_t size, size_t new_size);
  16.  
  17. void print_array2d(int **arr, size_t a, size_t b);
  18.  
  19. void swap_min(int **arr, size_t a, size_t b);
  20.  
  21. void task1();
  22.  
  23. void task2();
  24.  
  25. int main() {
  26.     task1();
  27.     task2();
  28.     return 0;
  29. }
  30.  
  31. void task1() {
  32.     using namespace std;
  33.     cout << endl << " <<<<<<<  TASK 1:  >>>>>>> " << endl << endl;
  34.     size_t a = 10;
  35.     size_t b = 10;
  36.     int **arr = create_array2d(a, b);
  37.     print_array2d(arr, a, b); // with trash
  38.     swap_min(arr, a, b);
  39.     print_array2d(arr, a, b);
  40.     free_array2d(arr);
  41. }
  42.  
  43. void task2() {
  44.     using namespace std;
  45.     cout << endl << " <<<<<<<  TASK 2:  >>>>>>> " << endl << endl;
  46.     char *str = getline();
  47.     while (str) {
  48.         cout << str << "::END::" << endl;
  49.         str = getline();
  50.     }
  51. }
  52.  
  53. void swap_min(int **arr, size_t a, size_t b) {
  54.     using namespace std;
  55.     int min = INT32_MAX;
  56.     size_t str = 1;
  57.     for (size_t i = 1; i != a; ++i) {
  58.         for (size_t j = 1; j != b; ++j) {
  59.             if (arr[i][j] < min) {
  60.                 min = arr[i][j];
  61.                 str = i;
  62.             }
  63.         }
  64.     }
  65.     cout << endl << " MIN: " << min << "  STR: " << str << endl << endl;
  66.     if (str == 0) return;
  67.     int *new_line = arr[1];
  68.     arr[1] = arr[str];
  69.     arr[str] = new_line;
  70. }
  71.  
  72. int **create_array2d(size_t a, size_t b) {
  73.     int **arr = new int *[a];
  74.     arr[0] = new int[a * b];
  75.     for (size_t i = 1; i != a; ++i)
  76.         arr[i] = arr[i - 1] + b;
  77.     return arr;
  78. }
  79.  
  80. void free_array2d(int **arr) {
  81.     delete[] arr[0];
  82.     delete[] arr;
  83. }
  84.  
  85. void print_array2d(int **arr, size_t a, size_t b) {
  86.     using namespace std;
  87.     for (size_t i = 1; i != a; ++i) {
  88.         for (size_t j = 1; j != b; ++j) {
  89.             cout << arr[i][j] << " ";
  90.         }
  91.         cout << endl;
  92.     }
  93. }
  94.  
  95. char *resize(const char *str, size_t size, size_t new_size) {
  96.     using namespace std;
  97.     char *newStr = new char[new_size];
  98.     for (int i = 0; i < min(size, new_size); ++i) {
  99.         newStr[i] = str[i];
  100.     }
  101.     delete[] str;
  102.     return newStr;
  103. }
  104.  
  105. char *getline() {
  106.     size_t size = 10;
  107.     char *str = new char[size];
  108.     size_t curLen = 0;
  109.     char c;
  110.     cin.get(c);
  111.     while (true) {
  112.         if (c == '\0') {
  113.             if (curLen != 0) {
  114.                 break;
  115.             }
  116.             return nullptr; // не пашет если в конце непробельный или не \n и застревает
  117.         }
  118.         if (c == '\n') {
  119.             break;
  120.         }
  121.         if (curLen == size - 1) {
  122.             str = resize(str, size, size * 2);
  123.             size *= 2;
  124.         }
  125.         str[curLen] = c;
  126.         curLen++;
  127.         cin.get(c);
  128.     }
  129.     str[curLen] = '\0';
  130.     return str;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement