这是我在学习C ++时一直在努力的工作代码 我怎么能修改它,以便ArraySortToMedian()使用指针表示法而不是数组表示法来处理数组?
到目前为止,我所有的尝试都没有奏效,因此我缺少逻辑关系或语法。提前谢谢。
#include <iostream>
#include <fstream>
double ArraySortToMedian(int [], int );
using namespace std;
int main()
{
ifstream infile;
infile.open("numbers.txt");
const int SIZE = 6;
int array[SIZE];
int i = 0;
double median;
if(!infile)
{
cout << "couldn't find 'numbers.txt'";
return 1;
}
while(i < SIZE && infile >> array[i])
i++;
infile.close();
for(i = 0; i < SIZE; i++)
cout << *(array + i) << "!\n";
median=ArraySortToMedian(array, SIZE);
cout<< "\n" << median << "\n";
return 0;
}
double ArraySortToMedian(int (x[]), int numElem)
{
bool swap;
int temp, i;
double m;
do
{
swap = false;
for(i = 0;i < (numElem - 1); i++)
{
if( x[i] > x[i + 1] )
{
temp = x[i];
x[i] = x[i + 1];
x[i + 1] = temp;
swap = true;
}
}
}
while (swap);
cout << "\n";
for(i = 0; i < numElem; i++)
cout << x[i] << "\n";
m = (x[numElem/2] + x[numElem/2]-1)/(double)2;
return(m);
}
答案 0 :(得分:1)
你可以这样做。但是,我强烈反对它,你最好使用std::array
来实现更清洁。这种函数参数的语法非常难看。
使用原始C-Arrays
template <size_t N>
double ArraySortToMedian(int (&x)[N], int numElement);
使用STL数组
template <size_t N>
double ArraySortToMedian(std::array<int,N>& x, int numElement)
这对动态分配的数组不起作用,如果你试图重载这些模板来处理指向用new
分配的数组的指针,它会变得指数级更复杂。
答案 1 :(得分:0)
只需将签名更改为int* arr
,然后使用*(x + i)