2014-10-22 142 views
0

我對編程非常陌生,我正在嘗試學習C++,但我在使用指針時遇到了很多困難。我寫了一個代碼,我需要一個動態數組,大小將由用戶給出,值也將由用戶給出,我想按增加和減少的順序對它進行排序。在使用指針時遇到困難

我已經完成了與靜態數組的任務,但指針我面臨着很多錯誤,這是我的第一個問題,請點亮我。

這裏是我的代碼

#include <iostream> 
#include <cstdlib> 
#include <cstddef> 
using namespace std; 

typedef int *IntArrayPtr; 

void fill_array(int *a[], int size) 
{ 
    cout << "Enter" << size << "integers.\n"; 
    for (int index = 0; index < size; index++) 
    { 
     cin >> a[index]; 
    } 
} 
void sort(int *a[], int size) 
{ 
    for (int i = 0; i < size - 1; i++) 
    { 
     for (int j = 0; j < size - 1; j++) 
     { 
      if (a[j] < a[j + 1]) 
      { 
       int temp = a[j]; 
       a[j] = a[j + 1]; 
       a[j + 1] = temp; 
      } 
     } 

    } 
    cout << "in ascending order the numbers are:"; 
    for (int index = 0; index < size; index++) 
    { 
     cout << a[index] << " "; 
     cout << endl; 
    } 
} 
void sortd(int *arr[], int size) 
{ 
    for (int i = 0; i < size - 1; i++) 
    { 
     for (int j = size - 1; j >= 0; j--) 
     { 
      if (arr[j + 1] > arr[j]) 
      { 
       int temp = arr[j + 1]; 
       arr[j + 1] = arr[j]; 
       arr[j] = temp; 
      } 
     } 
    } 
    cout << "in descending order the numbers are:"; 
    for (int index = 0; index < size; index++) 
    { 
     cout << arr[index] << " "; 
     cout << endl; 
    } 
} 
int main() 
{ 
    int input; 
    cout << "to sort via forward sorting press 1, for backward sorting press 2"; 
    cin >> input; 
    int array_size; 

    IntArrayPtr a; 
    a = new int[array_size]; 


    if (input == 1) 
    { 
     //int array_size; 
     cout << "how many numbers will be sorted?"; 
     cin >> array_size; 
     array_size = (sizeof(a)/sizeof(*a)); 
     fill_array(a, array_size); 
     sort(a, array_size); 
    } 
    else if (input == 2) 

    { 
     int array_size1; 
     cout << "how many numbers will be sorted?"; 
     cin >> array_size1; 
     array_size1 = (sizeof(a)/sizeof(*a)); 
     fill_array(a, array_size1); 
     sortd(a, array_size1); 
    } 
} 

以下是錯誤的。

$g++ main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1 
main.cpp: In function �void fill_array(int**, int)�: 
main.cpp:13:12: error: no match for �operator>>� (operand types are �std::istream {aka std::basic_istream<char>}� and �int*�) 
     cin>> a[index]; 
      ^
main.cpp:13:12: note: candidates are: 
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:120:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(__istream_type& (*__pf)(__istream_type&)) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:120:7: note: no known conversion for argument 1 from �int*� to �std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&) {aka std::basic_istream<char>& (*)(std::basic_istream<char>&)}� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:124:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>] 
     operator>>(__ios_type& (*__pf)(__ios_type&)) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:124:7: note: no known conversion for argument 1 from �int*� to �std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&) {aka std::basic_ios<char>& (*)(std::basic_ios<char>&)}� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:131:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(ios_base& (*__pf)(ios_base&)) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:131:7: note: no known conversion for argument 1 from �int*� to �std::ios_base& (*)(std::ios_base&)� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:168:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(bool& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:168:7: note: no known conversion for argument 1 from �int*� to �bool&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:172:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>] 
     operator>>(short& __n); 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:172:7: note: no known conversion for argument 1 from �int*� to �short int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:175:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(unsigned short& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:175:7: note: no known conversion for argument 1 from �int*� to �short unsigned int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:179:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>] 
     operator>>(int& __n); 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:179:7: note: no known conversion for argument 1 from �int*� to �int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:182:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(unsigned int& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:182:7: note: no known conversion for argument 1 from �int*� to �unsigned int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:186:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(long& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:186:7: note: no known conversion for argument 1 from �int*� to �long int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:190:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(unsigned long& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:190:7: note: no known conversion for argument 1 from �int*� to �long unsigned int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:195:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(long long& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:195:7: note: no known conversion for argument 1 from �int*� to �long long int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:199:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(unsigned long long& __n) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:199:7: note: no known conversion for argument 1 from �int*� to �long long unsigned int&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:214:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(float& __f) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:214:7: note: no known conversion for argument 1 from �int*� to �float&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:218:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(double& __f) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:218:7: note: no known conversion for argument 1 from �int*� to �double&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:222:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(long double& __f) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:222:7: note: no known conversion for argument 1 from �int*� to �long double&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:235:7: note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] 
     operator>>(void*& __p) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:235:7: note: no known conversion for argument 1 from �int*� to �void*&� 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:259:7: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>] 
     operator>>(__streambuf_type* __sb); 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:259:7: note: no known conversion for argument 1 from �int*� to �std::basic_istream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}� 
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/string:53:0, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/bits/locale_classes.h:40, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/bits/ios_base.h:41, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/ios:42, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/ostream:38, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:39, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/basic_string.tcc:996:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&) 
    operator>>(basic_istream<_CharT, _Traits>& __in, 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/basic_string.tcc:996:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: mismatched types �std::basic_string<_CharT, _Traits, _Alloc>� and �int*� 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/istream:879:0, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:955:5: note: template<class _CharT2, class _Traits2> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT2*) 
    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:955:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: deduced conflicting types for parameter �_CharT2� (�char� and �int�) 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/istream:879:0, 
       from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:923:5: note: template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&) 
    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/istream.tcc:923:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: deduced conflicting types for parameter �_CharT� (�char� and �int*�) 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:727:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&) 
    operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:727:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: cannot convert �*(a + ((sizetype)(((long unsigned int)index) * 8ul)))� (type �int*�) to type �unsigned char&� 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:732:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&) 
    operator>>(basic_istream<char, _Traits>& __in, signed char& __c) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:732:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: cannot convert �*(a + ((sizetype)(((long unsigned int)index) * 8ul)))� (type �int*�) to type �signed char&� 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:774:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*) 
    operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:774:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: cannot convert �*(a + ((sizetype)(((long unsigned int)index) * 8ul)))� (type �int*�) to type �unsigned char*� 
     cin>> a[index]; 
        ^
In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/iostream:40:0, 
       from main.cpp:1: 
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:779:5: note: template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char*) 
    operator>>(basic_istream<char, _Traits>& __in, signed char* __s) 
    ^
/usr/local/gcc-4.8.1/include/c++/4.8.1/istream:779:5: note: template argument deduction/substitution failed: 
main.cpp:13:22: note: cannot convert �*(a + ((sizetype)(((long unsigned int)index) * 8ul)))� (type �int*�) to type �signed char*� 
     cin>> a[index]; 
        ^
main.cpp: In function �void sort(int**, int)�: 
main.cpp:24:31: error: invalid conversion from �int*� to �int� [-fpermissive] 
       int temp = a[j]; 
          ^
main.cpp:26:24: error: invalid conversion from �int� to �int*� [-fpermissive] 
       a[j+1] = temp; 
         ^
main.cpp: In function �void sortd(int**, int)�: 
main.cpp:45:35: error: invalid conversion from �int*� to �int� [-fpermissive] 
       int temp = arr[j+1]; 
           ^
main.cpp:47:24: error: invalid conversion from �int� to �int*� [-fpermissive] 
       arr[j] = temp; 
         ^
main.cpp: In function �int main()�: 
main.cpp:74:57: error: cannot convert �IntArrayPtr {aka int*}� to �int**� for argument �1� to �void fill_array(int**, int)� 
           fill_array(a, array_size); 
                 ^
main.cpp:75:51: error: cannot convert �IntArrayPtr {aka int*}� to �int**� for argument �1� to �void sort(int**, int)� 
           sort(a, array_size); 
               ^
main.cpp:84:50: error: cannot convert �IntArrayPtr {aka int*}� to �int**� for argument �1� to �void fill_array(int**, int)� 
         fill_array(a, array_size1); 
               ^
main.cpp:85:45: error: cannot convert �IntArrayPtr {aka int*}� to �int**� for argument �1� to �void sortd(int**, int)� 
         sortd(a, array_size1); 
+0

如果您的問題在C++中,請不要將它標記爲C。 – 2014-10-22 11:54:37

+0

我爲什麼被低估?這個問題是錯的嗎?我已經閱讀了條款和條件,我不是在複製問題,我不粘貼它兩次,這是一個原始問題,原始問題,而不是你爲什麼不投票呢? – 2014-10-22 11:55:04

+0

停止執行'typedef int * IntArrayPtr;',它會讓你的代碼更加神祕,這是你作爲初學者需要的最後一件事 – 2014-10-22 11:55:50

回答

0

您需要更改的功能如下簽名:

void fill_array(int* a, int size) { 
... 
} 
void sort(int* a, int size) { 
... 
} 
void sortd(int* arr, int size) { 
... 
} 

另外,代替IntArrayPtr a;你可以使用int *a;以及 而且,把

int array_size = input; 
+0

現在程序在提出問題後終止。以下是錯誤。我希望如果我得到正確的輸入,程序現在會運行良好[17100016 @(none)〜] $ ./a.out通過正向排序按1排序,向後排序按21終止後拋出一個'std實例:: bad_alloc'what():St9bad_alloc Aborted [17100016 @(none)〜] $ – 2014-10-22 15:50:50

+0

put int array_size = input; – 2014-10-22 16:08:46

2

在你的功能原型:

int *a[] 

應該是:

int *a 

需要一個指針爲int,你竟然寫了一個聲明符的指針int數組。

+0

不是指針數組,指針指針。記住函數參數的例外。 – Quentin 2014-10-22 12:09:28

+0

現在程序在提出問題後終止。以下是錯誤。我希望如果我得到正確的輸入,程序現在會運行良好[17100016 @(none)〜] $ ./a.out通過正向排序按1排序,向後排序按21終止後拋出一個'std實例:: bad_alloc'what():St9bad_alloc Aborted [17100016 @(none)〜] $ – 2014-10-22 15:50:24

+0

@NewCoder在給'array_size'賦值前,你的代碼會執行'new int [array_size]' – 2014-10-22 19:43:43

2

其他答案解決了編譯器錯誤,但你的程序仍然在語義上不正確。它表現出未定義的行爲。

這裏,array_size是一個不確定的值。

int array_size; 

IntArrayPtr a; 
a = new int[array_size]; 

它不僅使用array_size不確定的行爲,但你要靠這個垃圾值,稍後重來填充一個用戶定義的號碼你的陣列。你可能打算這樣做,而不是:

cout << "how many numbers will be sorted?"; 
cin >> array_size; 
a = new int[array_size]; 

順便說一句,刪除array_size = (sizeof(a)/sizeof(*a));因爲你馬上丟棄用戶輸入並依賴用垃圾值初始化數組的大小。其次,你的泡泡並不像你的程序所說的那樣按升序排列。您需要更改<>

for (int j = 0; j < size - i - 1; j++) 
{ 
    if (a[j] > a[j + 1]) 
    { 

在你sortd功能,你表現出不確定的行爲再次,因爲你在第一次迭代訪問arr[size]

for (int j = size - 1; j >= 0; j--) 
    { 
     if (arr[j + 1] > arr[j]) 
     // j + 1 == size 

你可以將其更改爲j = size - 2,或者意識到除了關係運算符之外,按照升序/降序排列的泡沫是相同的。它變成:

for (int i = 0; i < size - 1; i++) 
{ 
    for (int j = 0; j < size - i - 1; j++) 
    { 
     // Note the less-than operator 
     if (arr[j] < arr[j + 1]) 
     { 

最後(也是最不重要的)你不釋放你的記憶。請記住在if塊中添加delete[] a;


注:

  • 你的編譯器警告可能已提醒您ARRAY_SIZE它被初始化之前被使用,但對我來說,這是因爲它的使用後隱藏在代碼中。這裏故事的寓意不是寫一堆代碼,編譯它,然後在它不起作用時發出抱怨。逐步編譯您的代碼並逐個解決您的問題。
  • 不要試圖重新發明輪子並利用標準庫。使用std::sortstd::vector
  • 您可能已按降序顯示數字,而不是具有幾乎相同的兩種不同的排序功能。
+0

現在程序在提出問題後終止。以下是錯誤。我希望如果我得到的輸入正確,程序將運行良好現在[17100016 @(none)〜] $ ./a.out 通過向前排序按1排序,爲向後排序按21 終止後拋出一個實例'std :: bad_alloc' what():St9bad_alloc Aborted [17100016 @(none)〜] $ – 2014-10-22 15:49:49

+0

put int array_size = input; – 2014-10-22 16:07:25