注册 登录
编程论坛 C++教室

请教各位,该程序哪里出错,总是运行不通过,谢谢

zm1573 发布于 2007-12-13 08:27, 671 次点击

#include <iostream>
using namespace std;
#define MAX 100                                          //数组最大长度
template <class T> class Find
{private:
    T A[MAX];
    int n;                                             //数组长度
public:
        
    setdata(T A[],int i);                               //为数组元素赋值
    int seek(T c);                                       //c为待查找元素
    void disp();                                       //显示数组元素值
};
template<class T>
void Find<T>::setdata(T A[], int i)
{
    int i,j;
    T temp;
    cout<<"请输入数组中元素:"<<n<<endl;
    
    for(i=0;i<n;i++)
    {
        cin>>A[i];
        cout<<"\t";
    }
    cout<<"数组元素排序后输出:"<<endl;

    for(i=1;i<n-1;i++)
        for(i=0;i<n-i;j++)
            if(A[i]<A[i+1])
            {
                temp=A[j+1];
                A[j+1]=A[j];
                A[j]=temp;
            }

}
template <class T>
int Find<T>::seek(T c)
{
    int low=0;
    int high=n-1;
    int mid;
    while(low<high)
    {
        mid=(low+high)/2;
        if(c==A[mid])    return mid;
        else if (A[mid]>c)  low=mid+1;
        else high=mid-1;
    }
    return (-1);
}
template <class T>
void Find<T>::disp()
{

}
    
void main()
{
//    int n;
    Find<int> array;
    int A[MAX];
    cout<<"输入元素的个数(int):";
//    cin>>n;
    array.setdata(A,2);
    array.seek(3);

}
6 回复
#2
中学者2007-12-13 08:44
setdata(T A[],int i);                               //为数组元素赋值
  差返回值类型
  int i,j;     
    形参中有i,不能在定义~因为它们在一个作用域~
#3
忘记喧嚣2007-12-17 11:58
for(i=0;i<n-i;j++)

为什么i来控制 J的 增加?写错了吧
#4
忘记喧嚣2007-12-17 11:59
for(k=MAX;k>=0;k--)
        for(j=0;j<=MAX-k;j++)
            if(A[j]<A[j+1])
            {
                temp=A[j+1];
                A[j+1]=A[j];
                A[j]=temp;
            }
排序要这样 
我把你的i换成 k了

[[italic] 本帖最后由 忘记喧嚣 于 2007-12-17 12:19 编辑 [/italic]]
#5
忘记喧嚣2007-12-17 12:04
然后 你的
 public:
        
    setdata(T A[],int i);      
在setdata前面加 VOID
就可以运行了 但是还有小问题我再帮你看看
#6
忘记喧嚣2007-12-17 12:06
cout<<"输入..."<<n<<endl;

改为cout<<"输入..."<<endl;
#7
忘记喧嚣2007-12-17 12:19
以下细节的错 就有:
1. n   没初使化

2.while循环没有循环增量 也就是达不到循环跳出的条件.

3.输出数组也要象输入一样 用循环实现

然后你主函数 再看看
1