#include <iostream>
using namespace std;
void arrSelectSort(int *[], int), showArrPtr(int *, int);
void showArray(int [] , int);
int main()
{
int numDonations;
int *arrPtr;
cout << "What was the number of donations?: ";
cin >> numDonations;
arrPtr = new int[numDonations];
cout << "What were the donations values?: ";
for (int count = 0; count < numDonations; count++)
cin >> arrPtr[count];
arrSelectSort(arrPtr, 3);
cout << "The donations, sorted in ascending order are: \n";
showArrPtr(arrPtr, 3);
cout << "The donations, in their orginal order are: \n";
showArray(values, 3);
system(" Pause ");
return 0;
}
void arrSelectSort(int *array[], int size)
{
int startScan, minIndex;
int* minElem;
for (startScan = 0; startScan < (size - 1); startScan++)
{
minIndex = startScan;
minElem = array[startScan];
for(int index = startScan + 1; index < size; index++)
{
if (*(array[index]) < *minElem)
{
minElem = array[index];
minIndex = index;
}
}
array[minIndex] = array[startScan];
array[startScan] = minElem;
}
}
void showArray(int array[], int size)
{
for (int count = 0; count < size; count++)
cout << array[count] << " ";
cout << endl;
}
void showArrPtr(int *array, int size)
{
for (int count = 0; count < size; count++)
cout << *(array[count]) << " ";
cout << endl;
}
这非常令人困惑,我无法弄清楚如何将动态内存分配数组传递给函数。我知道这是可能的,因为这是C ++数据包练习的一部分。当我尝试删除electort函数中的括号时,它会给我一些错误。当我尝试删除*时,它会给我带来其他错误。
答案 0 :(得分:5)
void arrSelectSort(int *[], int)
第一个参数是int**
类型。
你可以这样调用这个函数:
arrSelectSort(arrPtr, 3);
其中arrPtr
的类型为int*
。这是编译器通知您的类型不匹配。
我认为错误发生在arrSelectSort
的声明中。它应该是:
void arrSelectSort(int[], int)
第一个参数现在是int*
类型。这正是你需要的,指向int
数组的指针。
然后您在arrSelectSort
的实现中遇到了大量其他错误,但我并不特别想尝试对它们进行全部调试。
您需要将minElem
设为int
类型。在其他几个地方,您需要删除一定程度的间接。例如,这一行:
if (*(array[index]) < *minElem)
应该是:
if (array[index] < minElem)
等等。