新微赢技术网

标题: 新学C++,有个问题 [打印本页]

作者: 专属天使    时间: 2009-11-3 23:46
标题: 新学C++,有个问题
才开始看C++.照着书敲了一段程序.结果是"v' : undeclared identifier"说是有个错误.我不大懂.大哥帮帮忙吧.谢谢
程序:
#include<iostream>
using namespace std;
class ARR
{
    int m;
    int a[100];
public:
    ARR(int x[],int size)
    {
        m=size;
        for(int i=0;i<m;i++)
            a[i]=x[i];
    }
    void delsame();
    void show()
    {
        for(i=0;i<m;i++)
        {
            cout<<a[i]<<"\t";
            if((i+1)%5==0)
                cout<<edl;
        }
        cout<<endl;
    }
};
void ARR::delsame()
{
    int i,j;
    for(i=0;i<m-1;i++)
    {
        if(a[i]=a[i+1])
        {
            for(j=i+1;j<m-1;j++)
        {
            a[j]=a[j+1];
        }
        m--;
        i--;
        }
    }
}
int main()
{
    int b[16]={1,2,2,3,3,4,4,5,6,6,7,7,8,8,9,10,10}
    ARR v(b,sizeof(b)/sizeof(b[0]));
    v.show();
    v.delsame();
    v.show();
    return 0;
作者: 日-出    时间: 2009-11-3 23:46
好了有点小错
#include<iostream>
using namespace std;
class ARR
{
    int m;
    int a[100];
public:
    ARR(int x[],int size)
    {
        m=size;
        for(int i=0;i<m;i++)
            a[i]=x[i];
    }
    void delsame();
    void show()
    {
        for(int i=0;i<m;i++)
        {
            cout<<a[i]<<"\t";
            if((i+1)%5==0)
                cout<<endl;
        }
        cout<<endl;
    }
};
void ARR::delsame()
{
    int i,j;
    for(i=0;i<m-1;i++)
    {
        if(a[i]=a[i+1])
        {
            for(j=i+1;j<m-1;j++)
        {
            a[j]=a[j+1];
        }
        m--;
        i--;
        }
    }
}
int main()
{
    int b[20]={1,2,2,3,3,4,4,5,6,6,7,7,8,8,9,10,10};
    ARR v(b,sizeof(b)/sizeof(b[0]));
    v.show();
    v.delsame();
    v.show();
    return 0;
}
作者: 森林的眼泪    时间: 2009-11-3 23:46
你改为这样就没问题了:
#include <iostream>
using namespace std;
class ARR
{
    int m;
    int a[100];
public:
    ARR(int x[], int size)
    {
        m = size;
        for(int i = 0; i < m; i++)
            a[i] = x[i];
    }
    void delsame();
    void show()
    {
        for(int i = 0; i < m; i++)
        {
            cout << a[i] << "\t";
            if((i + 1) % 5 == 0)
                cout << endl;
        }
        cout<<endl;
    }
};
void ARR::delsame()
{
    int i, j;
    for(i = 0; i < m - 1; i++)
    {
        if(a[i] = a[i + 1])
        {
            for(j = i + 1; j < m - 1;j++)
            {
                a[j] = a[j + 1];
            }
            m--;
            i--;
        }
    }
}
int main()
{
    int b[] = {1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 9, 10, 10};
    ARR v(b, sizeof(b) / sizeof(b[0]));
    v.show();
    v.delsame();
    v.show();
    return 0;
}
作者: 〢●●〢    时间: 2009-11-3 23:46
提个意见,大家贴程序求助或者帮求助者修改程序,特别是整段整段的,最好注释一下,你改动了什么地方,别人的错的什么地方。

谢谢合作,o(∩_∩)o...
作者: o.筎茈菰箪き    时间: 2009-11-3 23:46
呵呵.知道了.太大意了
作者: 々無極風嘯々    时间: 2009-11-3 23:46
恩.同意.我对着程序查了半天才,找到的.不过,还是谢谢楼上的两位大哥了
作者: 大师傅    时间: 2009-11-3 23:46
谢谢斑竹的建议。。。不过我这个好像又没注意。。下次改。。。呵呵
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
template <class T>
class ARR
{
    int m;
    vector<T> vec ;
    vector<T>::iterator it;
public:
    ARR(T a[],int size)
    {
     vector<T> vec1(a,a+size);
     vec=vec1;
    }
    void delsame()
    {
        sort(vec.begin(),vec.end());
        it=unique(vec.begin(),vec.end());
        vec.erase(it,vec.end());
    }
    void show()
    {   
        for(vector<int>::iterator iter=vec.begin(); iter!=vec.end();iter++)
        {
            cout<<*iter<<"\t";            
        }
        cout<<endl;
    }
};

int main()
{
    int b[]={1,2,2,3,3,4,4,5,6,6,7,7,8,8,9,10,10};
    ARR<int> v(b,sizeof(b)/sizeof(b[0]));
    v.show();
    v.delsame();
    v.show();
    return 0;
}
作者: 独臂神军    时间: 2009-11-3 23:46
不好意思.这个程序的目地是删除序列中的想同的数.但是结果没有把删除的结果显示出来啊
作者: 陪你疯→想你    时间: 2009-11-3 23:46
我的是把删除过后的结果显示出来。。结果是1。。。10
作者: 駃旒_鎏蒗瀦    时间: 2009-11-3 23:46
非常感谢




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2