Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.09 KB | None | 0 0
  1. int mant_diff(char *const mant1, const char *const mant2)
  2. {
  3.     if (!mant_more_eq(mant1, mant2))
  4.     { // невозможно сделать вычитание, так как второе число больше
  5.         return NO;
  6.     }
  7.     for (int i = strlen(mant2) - 1; i >= 0; i--) // классическая процедура вычитания в столбик
  8.     {
  9.         if (mant1[i] - mant2[i] >= 0)
  10.         { // если меньшему разряду не нужно занимать из более высокого разряда десятку
  11.             mant1[i] -= mant2[i];
  12.         }
  13.         else
  14.         {
  15.             int j = i - 1; // ищем, у кого занять
  16.             while (mant1[j] == 0)
  17.             {
  18.                 j--;
  19.             }
  20.             mant1[j]--;
  21.             j++;
  22.             for (; j < i; j++)
  23.             { //обновляем разряды
  24.                 mant1[j] += 9;
  25.             }
  26.             mant1[i] += 10 - mant2[i]; // делаем вычитание в разряде-заемщике
  27.         }
  28.     }
  29.     return YES;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement