回 帖 发 新 帖 刷新版面

主题:求教程序错误


#include <iostream>
using namespace std;
void orderarray (int *,const int);
int *input(int &);
double calcmiddle(const int *,const int);
int main()
{

    int *pintdate=NULL;
    int len;
    pintdate=input(len);
    orderarray(pintdate,len);
    double mid=calcmiddle(pintdate,len);
    cout<<"The middle value: "<<mid<<endl;
    delete []pintdate;
    return 0;
}
int *input(int &n)
{
    cout<<"Please enter the elements number: ";
    while(true)
    {cin>>n;
    if(n>0) true;
    else cout<<"error, please re-enter: ";}
    int *array=new int[n];
    for(int i=0;i<n;i++)
        cin>>array[i];
    return array;
}
void orderarry(int *array,const int n)
{

    for(int j=0;j<n;j++)
    {    
        int *p=array+1;
        for(int k=j+1;k<n;k++)
            if(*p<*array) 
            {
                int temp=*array;
                *array=*p;
                *p=temp;
            }
    }
}
double calcmiddle(const int *array,const int n)
{
    if(n%2) 
        return (double)(array[n/2]);
    else
        return (double)((array[n/2]+array[n/2-1])/2);
}

运行结果:
a.obj : error LNK2001: unresolved external symbol "void __cdecl orderarray(int *,int)" (?orderarray@@YAXPAHH@Z)
Debug/a.exe : fatal error LNK1120: 1 unresolved externals
谢谢[em2]

回复列表 (共4个回复)

沙发

void orderarry(int *array,const int n)
字母打错了,应该是
void orderarray(int *array,const int n)

这样编译就能通过了,不过运行还有一些错误。需要慢慢调试。

板凳


还是运行不出来啊。。。。。。。。。

求数组中值,若数组个数为奇数,中值及排序后的中间数,若个数为偶数,则中值为排序后的中间两个数的平均值,

3 楼

while(true)
    {cin>>n;
    if(n>0) true;
    else cout<<"error, please re-enter: ";}
这句是死循环啊

4 楼

你定义int *input(int &n)这个函数的意图就是输入一个数组,之后返回,将返回的数组地址赋值给一个指针,但是你一旦复制完毕之后,这个在函数体内临时的数组内存,就会被释放掉,那么main中接受地址的指针pintdate就又变成无效的指针了,所以结果一定出不来的,至于你的算法,没细看。

我来回复

您尚未登录,请登录后再回复。点此登录或注册