| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:请教各位,该程序哪里出错,总是运行不通过,谢谢
只看楼主 加入收藏
zm1573
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-6-19
收藏
 问题点数:0 回复次数:6 
请教各位,该程序哪里出错,总是运行不通过,谢谢

#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);

}
搜索更多相关主题的帖子: int class void 元素 
2007-12-13 08:27
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
setdata(T A[],int i);                               //为数组元素赋值
  差返回值类型
  int i,j;     
    形参中有i,不能在定义~因为它们在一个作用域~

樱花大战,  有爱.
2007-12-13 08:44
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
收藏
得分:0 
for(i=0;i<n-i;j++)

为什么i来控制 J的 增加?写错了吧
2007-12-17 11:58
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
收藏
得分:0 
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]]
2007-12-17 11:59
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
收藏
得分:0 
然后 你的
 public:
        
    setdata(T A[],int i);      
在setdata前面加 VOID
就可以运行了 但是还有小问题我再帮你看看
2007-12-17 12:04
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
收藏
得分:0 
cout<<"输入..."<<n<<endl;

改为cout<<"输入..."<<endl;
2007-12-17 12:06
忘记喧嚣
Rank: 1
等 级:新手上路
帖 子:146
专家分:0
注 册:2007-10-7
收藏
得分:0 
以下细节的错 就有:
1. n   没初使化

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

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

然后你主函数 再看看
2007-12-17 12:19
快速回复:请教各位,该程序哪里出错,总是运行不通过,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012379 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved