【问题标题】:Is there any other way to sort numbers in ascending or descending order without using arrays?有没有其他方法可以在不使用数组的情况下按升序或降序对数字进行排序?
【发布时间】:2020-06-28 08:06:23
【问题描述】:
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

谁能帮我解决这个错误应该使用什么返回值?或者有没有更好的方法在不使用数组的情况下对数字进行排序? 非常感谢???

【问题讨论】:

  • 请阅读minimal reproducible example。您没有显示导致错误的行。无论如何,你想要std::cout &lt;&lt; sortDigit(....)sortDigit 已经打印了数字。只需调用该函数,不要尝试将其返回值传递给std::cout
  • 您能解释一下为什么要避免使用数组吗?就目前而言,您的代码避免使用数组,但需要进行更多计算才能实现这一点。此外,如果您要反转数字并将结果存储在 int 中,反转 100 的结果将与反转 10000 相同 - 但您的代码会产生不同的输出。
  • 这并没有解决问题,但sortDigit 应该返回void,因为它可以告诉调用者没有任何意义。并且要调用它,不要将其(无意义的)结果插入std::cout。就叫它:std::cout &lt;&lt; "sortDigit(54321, ASCENDING) = "; sortDigit(54321, ASCENDING); std::cout &lt;&lt; '\n';.

标签: c++ eclipse


【解决方案1】:

您可以将值存储在变量中:

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;

【讨论】:

  • 非常感谢您的帮助?感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 2015-08-30
  • 2014-11-13
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多