Есть ли другой способ сортировки чисел в порядке возрастания или убывания без использования массивов? - PullRequest
0 голосов
/ 17 марта 2020
int sortDigit(int number, bool order){

    if (order == ASCENDING && number>0) {
            for (int j = number; j>0; j/=10) {
                if (j%10==i) {
                    cout << i;
                }
            }
    }

    if (order == DESCENDING && number>0) {
            for (int j = number; j>0; j/=10) {
                if (j%10==i) {
                    cout << i;
                }
            }
    }

}

Я пытаюсь расположить числа в порядке упорядочения или убывания.

Этот код возвращает отсортированные числа, но из-за отсутствия возвращаемого значения за ответом следует 32767: - Пример: -

cout << "sortDigit(54321, ASCENDING) = " << sortDigit(54321, ASCENDING) << endl;

вывод:

 sortDigit(54321, ASCENDING) = 1234532767

Может ли кто-нибудь помочь мне, какое возвращаемое значение я буду использовать для устранения этой ошибки? или есть лучший способ сортировки цифр без использования массивов? Большое спасибо?

1 Ответ

1 голос
/ 17 марта 2020

Вы можете сохранить значение в переменной:

int sortDigit(int number, bool order){
    int ret = 0;
    if (order == ASCENDING && number>0) {
        for (int i = 1; i<=9; i++) {
            for (int j = number; j>0; j/=10) {
                if (j%10==i) {
                    ret = 10 * ret + i;
                }
            }
        }
    }

    if (order == DESCENDING && number>0) {
        for (int i = 9; i>=0; i--) {
            for (int j = number; j>0; j/=10) {
                if (j%10==i) {
                    ret = 10 * ret + i;
                }
            }
        }
    }
    return ret;
}

Или вы можете вызвать функцию без cout:

cout << "sortDigit(54321, ASCENDING) = ";
sortDigit(54321, ASCENDING);
cout << endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...