Сравнение многоразрядных чисел

Алгоритмизация / Сравнение многоразрядных чисел

Многоразрядные числа представляют собой массив байтов, каждый из которых представляет собой символьное отображение соответствующей цифры числа. Количество разрядов такого числа определяется длиной символьной строки или размерностью массива.

Для многоразрядных чисел операция сравнения осуществляется следующим образом (при условии что введенные числа являются положительными):

  • Сначала сравниваются длины (количество разрядов) двух рассматриваемых чисел. Большим является то число, которое содержит большее количество разрядов.
  • Если количество разрядов двух чисел совпадает, вступает в силу поразрядное сравнение, которое продолжается до тех пор пока пары байтов двух чисел, соответствующие одинаковым разрядам, равны. Как только величина одного байта оказывается больше, формируется решение о результате сравнения чисел.

Функция сравнения чисел возвращает

  • 1 в случае если первое число больше чем второе
  • -1 в случае если первое число меньше чем второе
  • 0 если числа равны.

Реализация

#include <iostream>
using namespace std;
int compare(char *a, char *b) {
  int lena = strlen(a); // количество разрядов первого числа
  int lenb = strlen(b); // количество разрядов второго числа
  if (lena > lenb)
    return 1;
  if (lenb > lena)
    return -1;
  for (int i = 0; i < lena; i++) { // поразрядное сравнение
    if (a[i] > b[i])
      return 1;
    if (a[i] < b[i])
      return -1;
    }
  return 0;
}
int main() {
  char a[1000] = { 0 };
  char b[1000] = { 0 };
  cout << "a = ";
  cin.getline(a, 1000);
  cout << "b = ";
  cin.getline(b, 1000);
  cout << compare(a,b) << endl;
  cin.get();
  return 0;
}

Результат выполнения

2016-04-28_17-02-26 2016-04-28_17-02-58 2016-04-28_17-03-27 2016-04-28_17-03-56
Назад

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *