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

c++程序分析

MyStar 发布于 2010-04-03 21:09, 1130 次点击
我刚学c++不久,还不怎么会编程序。我编的程序自己看着没啥问题,好像可以执行,但是,等一编译之后,电脑出现的要么是几个我看不懂得错误提示,要么就是进入了死循环。求助大家帮帮忙!!!!下面是我编的成序,请大家帮忙分析一下愿因.谢谢啊!
#include <iostream>
using namespace std;
const int Maxsize=10;
class Seqlist
{
public:
       Seqlist()
    {
          length=0;
       }
       Seqlist(int a[],int n);//有参构造函数
    void insert(int i,int x);//在现行表中第i个位置插入值为x的元素
    int Delete(int i);//删除现行表的第i个元素
    int locate(int x);//按值查找,求现行表中值为x的元素序号
    void printlist()// 遍历现行表,按序号依次输出 各元素
    {
     for(int i=0;i<length;i++)cout<<data[i];
    }
private:
       int data[Maxsize];
       int length;
};
Seqlist::Seqlist(int a[],int n)
{
 if(n>Maxsize)cout<<"参数非法!";
    for(int i=0;i<n;i++)
       data[i]=a[i];
    length=n;
}
void Seqlist::insert(int i,int x)
{
    if(length>=Maxsize) cout<<"上溢!";
    if(i<0||i>length+1)cout<<"位置";
    for(int j=length;j>=i;j--)
  
    data[i-1]=x;
    length++;
}
int Seqlist::Delete(int i)
{
     if(length==0)cout<<"下溢";
     if(i<1||i>length)cout<<"位置";
         int x=data[i-1];
     for(int j=i;j<length;j++)
        data[j]=data[j-1];
     length--;
     return x;
}
int Seqlist::locate(int x)
{
     for(int i=0;i<length;i++)
       if(data[i]==x)return i+1;
     return 0;
}
int main()
{
    int w[]={1,2,3,4,5,6,7},n=sizeof(w),y=100,j;
    Seqlist p ;
 Seqlist(w,n);
    p.insert(4,y);
    for( j=0;j<n+1;j++)
      cout<<w[j];
    p.Delete(5);
    for( j=0;j<n-1;j++)
      cout<<w[j];
    cout<<"k="<<p.locate(3);
    p.printlist();
 return 0;
}        
11 回复
#2
ltyjyufo2010-04-03 21:54
printlist()在哪里???我怎么没有看到、、、、
#3
pywepe2010-04-03 22:04
debug 跟踪
#4
MyStar2010-04-03 22:09
回复 2楼 ltyjyufo
在class里定义的
#5
yyblackyy2010-04-03 22:51
楼主的错误不小啊,我的机子调试出一堆数据。。。。。。。
没有调用的就不说了,呵呵~~~~~~
n=sizeof(w)这里求出的是他的数组空间大小不是数组元素个数,应该写出 sizeof(w)/sizeof(int) 这才是元素的个数
    Seqlist p ;
Seqlist(w,n);
构造函数系统会自动调用的 应写出 Seqlist p(w,n);
void Seqlist::insert(int i,int x) 这个函数有为题,不是插入函数
int Seqlist::Delete(int i) 第i个元素他的下标应是i-1 LZ这个错误犯了很多遍 前后数据覆盖方向错误,最后的收尾工作没有
其他没有调用的函数有类似的错误就不讲了~~



[ 本帖最后由 yyblackyy 于 2010-4-3 22:52 编辑 ]
#6
编是非2010-04-04 00:17
真的有点麻烦
#7
夜半無聊2010-04-04 01:26
回复 楼主 MyStar
  void printlist()// 遍历现行表,按序号依次输出 各元素
    {
     for(int i=0;i<length;i++)cout<<data[i];
    }


註釋不規範而已
#8
夜半無聊2010-04-04 01:27
回复 2楼 ltyjyufo
  void printlist()// 遍历现行表,按序号依次输出 各元素
    {
     for(int i=0;i<length;i++)cout<<data[i];
    }
註釋不規範而已  應該是找得到的
#9
MyStar2010-04-04 08:29
回复 5楼 yyblackyy
呵呵...俺的手太低了。能帮俺调试出来吗?谢谢啊!!!
#10
MyStar2010-04-04 08:31
回复 3楼 pywepe
什么意思啊?我不知道这种方法,就您再说的详细的!谢谢!
#11
MyStar2010-04-05 09:09
各位高手们,谁能帮俺调试出来车程序正确的输出结果啊!!!!!!!摆脱!!!!!!!!
#12
MyStar2010-04-05 10:25
高手们就露两手呗!!!!!!!!!!!!!
1