DacCum

Спорт. прог. лаб 2(in dev...)

Sep 21st, 2021 (edited)
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #define N 10
  4.  
  5. using namespace std;
  6.  
  7. int* createArr(int size) {
  8.     int* arr = new int[size];
  9.     for (int i = 0; i < size; i++)
  10.         arr[i] = 0;
  11.  
  12.     return arr;
  13. }
  14.  
  15. int* convertToArr(string s, int size) {
  16.     int* arr = createArr(size);
  17.  
  18.     for (int i = 0; i < s.size(); i++) {
  19.         arr[size - 1 - i] = s[s.size() - 1 - i] - '0';
  20.     }
  21.  
  22.     return arr;
  23. }
  24.  
  25. int sign(int *a) {
  26.     return 1;
  27. }
  28.  
  29. int rank_num(int *c) {
  30.     int c_rank = 0;
  31.     int i = 0;
  32.     bool f = 0;
  33.     while (!f || i < N) {
  34.         i++;
  35.         if (c[i] == 0)
  36.             c_rank++;
  37.         else
  38.             f = 1;
  39.     }
  40.     return c_rank;
  41. }
  42.  
  43. int compare(int *a, int *b, int q) {
  44.     int rank_a = rank_num(a),
  45.         rank_b = rank_num(b);
  46.    
  47.     if (q + rank_a == N - 1)
  48.         return 0;
  49.     if (rank_a < rank_b)
  50.         return 1;
  51.     else if (rank_a > rank_b)
  52.         return -1;
  53.     else {
  54.         if (a[rank_a + 1 + q] > b[rank_b + 1 + q])
  55.             return 1;
  56.         else if (a[rank_a + 1 + q] < b[rank_b + 1 + q])
  57.             return -1;
  58.         else {
  59.             return compare(a, b, q + 1);
  60.         }
  61.     }
  62. }
  63.  
  64. void swap_t(int* a, int* b) {
  65.     int tmp;
  66.     for (int i = 0; i < N; i++) {
  67.         tmp = a[i];
  68.         a[i] = b[i];
  69.         b[i] = tmp;
  70.     }
  71. }
  72.  
  73. int* sum(int *a, int *b) {
  74.     int* c = createArr(N);
  75.     for (int i = N - 1; i > 0; i--) {
  76.         c[i] = c[i] + a[i] + b[i];
  77.         if (c[i] > 9) {
  78.             c[i - 1] = 1;
  79.             c[i] -= 10;
  80.         }
  81.     }
  82.  
  83.     return c;
  84. }
  85.  
  86. int* minus_t(int *a, int *b) {
  87.     int* c = createArr(N);
  88.     for (int i = N - 1; i > 0; i--) {
  89.         c[i] = a[i] - b[i] - c[i];
  90.         if (c[i] < 0) {
  91.             c[i - 1] = 1;
  92.             c[i] += 10;
  93.         }
  94.     }
  95.  
  96.     return c;
  97. }
  98.  
  99. void printArr(int *arr, int size) {
  100.     for (int i = 0; i < size; i++)
  101.         cout << arr[i] << " ";
  102.     cout << endl;
  103. }
  104.  
  105. int main() {
  106.  
  107.     int *a = convertToArr("85185", N);
  108.  
  109.     int *b = convertToArr("8182", N);
  110.  
  111.     int *c = minus_t(a, b);
  112.    
  113.     printArr(a, N);
  114.     printArr(b, N);
  115.  
  116.     swap_t(a, b);
  117.  
  118.     cout << endl;
  119.     printArr(a, N);
  120.     printArr(b, N);
  121.  
  122.     return 0;
  123. }
Add Comment
Please, Sign In to add comment