首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙调试并加个注解,该如何解决

2012-03-27 
帮忙调试并加个注解#includeiostream#includefstream#includevector#includealgorithm#includefu

帮忙调试并加个注解
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<functional>
#include<iterator>

using namespace std;

typedef vector<int> VecInt;
VecInt Convokernel1(const VecInt&Matrix);
VecInt Convokernel2(const VecInt&Matrix);

int main()
{
VecInt data(10000);

ifstream infile("test.txt");
ofstream outfile("result.txt");

if(!infile)
{
cout<<"txt open failed"<<endl;
return 1;
}
if(!outfile)
{
cout<<"txt open failed"<<endl;
return 1;
}

for(int i=0;i<10000;i++)
{infile>>data[i];}

VecInt Result=ConvoKernel1(data);

outfile<<"after the fist convolution th datas are"<<endl;
for(int i=0;i<80;i++)
{
copy(&Result[i],&Result[i+125],ostream_iterator<int>(outfile," "));
outfile<<endl;
}

Result=ConvoKernel2(data);
outfile<<"after the second convolution the datas are"<<endl;
for (int i=0;i<100;i++)
{
copy(&Result[i],&Result[i+100],ostream_iterator<int>(outfile," "));
outfile<<endl;
}

outfile.close();
infile.close();
return 0;

}

VecInt ConvoKernel1(const VecInt& Matrix)//卷积运算1
{
VecInt Result(Matrix);
inta[]={0,-1,0,-1,5,-1,0,-1,0};
for(int i=1;i<124;i++)
for(int j=1;j<79;j++)
Result[i*j]=Matrix[(i-1)*(j-1)]*a[0]+Matrix[i*(j-1)]*a[1]+Matrix[i*(j+1)]*a[2]\
+Matrix[(i-1)*j]*a[3]+Matrix[i*j]*a[4]+Matrix[(i+1)*j]*a[5]\
+Matrix[(i-1)*(j+1)]*a[6]+Matrix[i*(j+1)]*a[7]+Matrix[(i+1)*(j+1)]*a[8];
return Result;
}

VecInt ConvoKernel2(const VecInt&Matrix)//卷积运算2
{
VecInt Result(Matrix);
int b[]={0,0,-1,0,0,0,-1,-2,-1,0,-1,-2,16,-2,-1,0,-1,-2,-1,0,0,0,-1,0,0};

for(int i=2;i<98;i++)
for(int i=2;j<98;j++)
Result[i*j]=Matrix[(i-2)*(j-2)]*b[0]+Matrix[(i-2)*(j-1)]*b[1]+Matrix[(i-2)*(j)]*b[2]+Matrix[(i-2)*(j+1)]*b[3]+Matrix[(i-2)*(j+2)]*b[4]\
+Matrix[(i-1)*(j-2)]*b[5]+Matrix[(i-1)*(j-1)]*b[6]+Matrix[(i-1)*(j)]*b[7]+Matrix[(i-1)*(j+1)]*b[8]+Matrix[(i-1)*(j+2)]*b[9]
  +Matrix[(i)*(j-2)]*b[10]+Matrix[(i)*(j-1)]*b[11]+Matrix[(i)*(j)]*b[12]+Matrix[(i)*(j+1)]*b[13]+Matrix[(i-2)*(j+2)]*b[14]% U# u: M* v1 {3 d
  +Matrix[(i+1)*(j-2)]*b[15]+Matrix[(i+1)*(j-1)]*b[16]+Matrix[(i)*(j)]*b[17]+Matrix[(i+1)*(j+1)]*b[18]+Matrix[(i+2)*(j+2)]*b[19]
  +Matrix[(i+2)*(j-2)]*b[20]+Matrix[(i+2)*(j-1)]*b[21]+Matrix[(i+2)*(j)]*b[22]+Matrix[(i+2)*(j+1)]*b[23]+Matrix[(i+2)*(j+2)]*b[24];

return Result;

}

[解决办法]

C/C++ code
#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<functional>#include<iterator>using namespace std;typedef vector<int> VecInt;VecInt ConvoKernel1(const VecInt&Matrix);     //此处注意K的大小写VecInt ConvoKernel2(const VecInt&Matrix);int main(){    VecInt data(10000);    ifstream infile("test.txt");    ofstream outfile("result.txt");    if(!infile)    {        cout<<"txt open failed"<<endl;        return 1;    }    if(!outfile)    {        cout<<"txt open failed"<<endl;        return 1;    }    for(int i=0;i<10000;i++)    {        infile>>data[i];    }    VecInt Result = ConvoKernel1(data);    outfile<<"after the fist convolution th datas are"<<endl;    for(int i=0;i<80;i++)    {        copy(&Result[i],&Result[i+125],ostream_iterator<int>(outfile," "));        outfile<<endl;    }    Result = ConvoKernel2(data);    outfile<<"after the second convolution the datas are"<<endl;    for (int i=0;i<100;i++)    {        copy(&Result[i],&Result[i+100],ostream_iterator<int>(outfile," "));        outfile<<endl;    }    outfile.close();    infile.close();    return 0;}VecInt ConvoKernel1(const VecInt& Matrix)//卷积运算1{    VecInt Result(Matrix);    int a[]={0,-1,0,-1,5,-1,0,-1,0};    //ina 和 a连在一起了    for(int i=1;i<124;i++)        for(int j=1;j<79;j++)            Result[i*j]=Matrix[(i-1)*(j-1)]*a[0]+Matrix[i*(j-1)]*a[1]+Matrix[i*(j+1)]*a[2]\            +Matrix[(i-1)*j]*a[3]+Matrix[i*j]*a[4]+Matrix[(i+1)*j]*a[5]\            +Matrix[(i-1)*(j+1)]*a[6]+Matrix[i*(j+1)]*a[7]+Matrix[(i+1)*(j+1)]*a[8];    return Result;}VecInt ConvoKernel2(const VecInt&Matrix)//卷积运算2{    VecInt Result(Matrix);    int b[]={0,0,-1,0,0,0,-1,-2,-1,0,-1,-2,16,-2,-1,0,-1,-2,-1,0,0,0,-1,0,0};    for(int i=2;i<98;i++)        for(int j=2;j<98;j++)                    //int i= 2  i改j        {            // 这片代码太乱 清楚啊~            Result[i*j]=Matrix[(i-2)*(j-2)]*b[0]+Matrix[(i-2)*(j-1)]*b[1]+Matrix[(i-2)*(j)]*b[2]+Matrix[(i-2)*(j+1)]*b[3]+Matrix[(i-2)*(j+2)]*b[4] \                  +Matrix[(i-1)*(j-2)]*b[5]+Matrix[(i-1)*(j-1)]*b[6]+Matrix[(i-1)*(j)]*b[7]+Matrix[(i-1)*(j+1)]*b[8]+Matrix[(i-1)*(j+2)]*b[9]  \                +Matrix[(i)*(j-2)]*b[10]+Matrix[(i)*(j-1)]*b[11]+Matrix[(i)*(j)]*b[12]+Matrix[(i)*(j+1)]*b[13]+Matrix[(i-2)*(j+2)]*b[14]; M* v1 {3  \                +Matrix[(i+1)*(j-2)]*b[15]+Matrix[(i+1)*(j-1)]*b[16]+Matrix[(i)*(j)]*b[17]+Matrix[(i+1)*(j+1)]*b[18]+Matrix[(i+2)*(j+2)]*b[19] \                +Matrix[(i+2)*(j-2)]*b[20]+Matrix[(i+2)*(j-1)]*b[21]+Matrix[(i+2)*(j)]*b[22]+Matrix[(i+2)*(j+1)]*b[23]+Matrix[(i+2)*(j+2)]*b[24];        }        return Result;} 

热点排行