C++最简单的编程 用vc6.0出现错误 syntax error : missing ';' before '}'

非常简单,初步的类的练习,矩阵类里面可以写入、输出、还有进行加减法的函数。矩阵使用动态申请的二维数组存放的。编译无法通过。
代码如下。

#include<iostream>
#include<cstdlib>
using namespace std;
class Matrix
{
private:
int ROW,LINE;
int **p;
public:
Matrix(int R,int L);
~Matrix()
{
delete [] p;
}
Matrix(Matrix& otherMatrix);
void Input(void);
void Print(void);
Matrix add(Matrix otherMatrix);
Matrix subtract(Matrix otherMatrix);
};

Matrix::Matrix(int R,int L)
{
ROW=R;
LINE=L;
int i;
p=new int*[R];//C++的动态二维数组是这样申请的,先申请第一维,再申请第二维 ,p[ROW]是一个数组,数组中的每个元素都是整形数组
for(i=0;i<=R-1;i++)
{
p[i]=new int[L];//对一维数组中的每一个元素都赋于一个数组
}
}

Matrix::Matrix(Matrix& otherMatrix)//拷贝构造函数其实之前对象的雏形框架已经是系统自动形成了,这个函数中需要申明的只是对其具体量进行赋值
{
int i,j;
ROW=otherMatrix.ROW;
LINE=otherMatrix.LINE;
int k;
p=new int*[ROW];
for(k=0;k<=ROW-1;k++)
{
p[k]=new int[LINE];
}
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
p[i][j]=otherMatrix.p[i][j];
}
}
}

void Matrix::Input(void)
{
int i,j;
cout<<"请输入"<<ROW<<"行"<<LINE<<"列的矩阵\n";
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
cin>>p[i][j];
}
}
}

void Matrix::Print(void)
{
int i,j;
for(i=0;i<=ROW-1;i++)
for(j=0;j<=LINE-1;j++)
{
cout<<p[i][j]<<" ";
}
cout<<"\n";
}
}

Matrix Matrix::add(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]+otherMatrix.p[i][j];
}
}
return C;
}

Matrix Matrix::subtract(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]-otherMatrix.p[i][j];
}
}
return C;
}

main()
{
int ROW,LINE;
cout<<"请输入你想做运算的两个矩阵的行数和列数"<<endl;
cin>>ROW;
cin>>LINE;
Matrix A1(ROW,LINE);
Matrix A2(ROW,LINE);
Matrix A3(ROW,LINE);
cout<<"输入第一个矩阵"<<endl;
A1.Input();
cout<<"输入第二个矩阵"<<endl;
A2.Input();
Matrix pA1(A1);
Matrix pA2(A2);//调用拷贝构造函数将A1和A2前面加上p也可以
cout<<"第一个矩阵是"<<endl;
pA1.Print();
cout<<"第二个矩阵是"<<endl;
pA2.Print();
A3=pA1.add(pA2);
cout<<"矩阵的和是"<<endl;
A3.Print();
A3=pA1.subtract(pA2);
cout<<"矩阵的差是"<<endl;
A3.Print();
system("pause");
return 0;
}
还有问题,加上大括号后,dev c++在这里报错 A3=pA1.subtract(pA2);
不知道函数用的有问题吗

少一个{,这是粗心错误。

#include<iostream>
#include<cstdlib>
using namespace std;
class Matrix
{
private:
int ROW,LINE;
int **p;
public:
Matrix(int R,int L);
~Matrix()
{
delete [] p;
}
Matrix(Matrix& otherMatrix);
void Input(void);
void Print(void);
Matrix add(Matrix otherMatrix);
Matrix subtract(Matrix otherMatrix);
};

Matrix::Matrix(int R,int L)
{
ROW=R;
LINE=L;
int i;
p=new int*[R];//C++的动态二维数组是这样申请的,先申请第一维,再申请第二维 ,p[ROW]是一个数组,数组中的每个元素都是整形数组
for(i=0;i<=R-1;i++)
{
p[i]=new int[L];//对一维数组中的每一个元素都赋于一个数组
}
}

Matrix::Matrix(Matrix& otherMatrix)//拷贝构造函数其实之前对象的雏形框架已经是系统自动形成了,这个函数中需要申明的只是对其具体量进行赋值
{
int i,j;
ROW=otherMatrix.ROW;
LINE=otherMatrix.LINE;
int k;
p=new int*[ROW];
for(k=0;k<=ROW-1;k++)
{
p[k]=new int[LINE];
}
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
p[i][j]=otherMatrix.p[i][j];
}
}
}

void Matrix::Input(void)
{
int i,j;
cout<<"请输入"<<ROW<<"行"<<LINE<<"列的矩阵\n";
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
cin>>p[i][j];
}
}
}

void Matrix::Print(void)
{
int i,j;
for(i=0;i<=ROW-1;i++)
{ //少一个{
for(j=0;j<=LINE-1;j++)
{
cout<<p[i][j]<<" ";
}
cout<<"\n";
}
}

Matrix Matrix::add(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]+otherMatrix.p[i][j];
}
}
return C;
}

Matrix Matrix::subtract(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]-otherMatrix.p[i][j];
}
}
return C;
}

main()
{
int ROW,LINE;
cout<<"请输入你想做运算的两个矩阵的行数和列数"<<endl;
cin>>ROW;
cin>>LINE;
Matrix A1(ROW,LINE);
Matrix A2(ROW,LINE);
Matrix A3(ROW,LINE);
cout<<"输入第一个矩阵"<<endl;
A1.Input();
cout<<"输入第二个矩阵"<<endl;
A2.Input();
Matrix pA1(A1);
Matrix pA2(A2);//调用拷贝构造函数将A1和A2前面加上p也可以
cout<<"第一个矩阵是"<<endl;
pA1.Print();
cout<<"第二个矩阵是"<<endl;
pA2.Print();
A3=pA1.add(pA2);
cout<<"矩阵的和是"<<endl;
A3.Print();
A3=pA1.subtract(pA2);
cout<<"矩阵的差是"<<endl;
A3.Print();
system("pause");
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-09
看看是不是这个
在void Matrix::Print(void)函数中
for(i=0;i<=ROW-1;i++)
for(j=0;j<=LINE-1;j++)
改成
for(i=0;i<=ROW-1;i++)
{for(j=0;j<=LINE-1;j++)

#include<iostream>
#include<cstdlib>
using namespace std;
class Matrix
{
private:
int ROW,LINE;
int **p;
public:
Matrix(int R,int L);
~Matrix()
{
delete [] p;
}
Matrix(Matrix& otherMatrix);
void Input(void);
void Print(void);
Matrix add(Matrix otherMatrix);
Matrix subtract(Matrix otherMatrix);
};

Matrix::Matrix(int R,int L)
{
ROW=R;
LINE=L;
int i;
p=new int*[R];//C++的动态二维数组是这样申请的,先申请第一维,再申请第二维 ,p[ROW]是一个数组,数组中的每个元素都是整形数组
for(i=0;i<=R-1;i++)
{
p[i]=new int[L];//对一维数组中的每一个元素都赋于一个数组
}
}

Matrix::Matrix(Matrix& otherMatrix)//拷贝构造函数其实之前对象的雏形框架已经是系统自动形成了,这个函数中需要申明的只是对其具体量进行赋值
{
int i,j;
ROW=otherMatrix.ROW;
LINE=otherMatrix.LINE;
int k;
p=new int*[ROW];
for(k=0;k<=ROW-1;k++)
{
p[k]=new int[LINE];
}
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
p[i][j]=otherMatrix.p[i][j];
}
}
}

void Matrix::Input(void)
{
int i,j;
cout<<"请输入"<<ROW<<"行"<<LINE<<"列的矩阵\n";
for(i=0;i<=ROW-1;i++)
{
for(j=0;j<=LINE-1;j++)
{
cin>>p[i][j];
}
}
}

void Matrix::Print(void)
{
int i,j;
for(i=0;i<=ROW-1;i++)
{/*大哥是不是这个你的这个前少了个 { */for(j=0;j<=LINE-1;j++)
{
cout<<p[i][j]<<" ";
}
cout<<"\n";
}
}

Matrix Matrix::add(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]+otherMatrix.p[i][j];
}
}
return C;
}

Matrix Matrix::subtract(Matrix otherMatrix)
{
int i,j;
Matrix C(ROW,LINE);
for(i=0;i<=ROW-1;i++)
{
for(j=0; j<=LINE-1;j++)
{
C.p[i][j]=p[i][j]-otherMatrix.p[i][j];
}
}
return C;
}

main()
{
int ROW,LINE;
cout<<"请输入你想做运算的两个矩阵的行数和列数"<<endl;
cin>>ROW;
cin>>LINE;
Matrix A1(ROW,LINE);
Matrix A2(ROW,LINE);
Matrix A3(ROW,LINE);
cout<<"输入第一个矩阵"<<endl;
A1.Input();
cout<<"输入第二个矩阵"<<endl;
A2.Input();
Matrix pA1(A1);
Matrix pA2(A2);//调用拷贝构造函数将A1和A2前面加上p也可以
cout<<"第一个矩阵是"<<endl;
pA1.Print();
cout<<"第二个矩阵是"<<endl;
pA2.Print();
A3=pA1.add(pA2);
cout<<"矩阵的和是"<<endl;
A3.Print();
A3=pA1.subtract(pA2);
cout<<"矩阵的差是"<<endl;
A3.Print();
system("pause");
return 0;
}

...用vc6.0出现错误 syntax error : missing ';' before '}'_百度...
int i;p=new int*[R];\/\/C++的动态二维数组是这样申请的,先申请第一维,再申请第二维 ,p[ROW]是一个数组,数组中的每个元素都是整形数组 for(i=0;i<=R-1;i++){ p[i]=new int[L];\/\/对一维数组中的每一个元素都赋于一个数组 } } Matrix::Matrix(Matrix& otherMatrix)\/\/拷贝构造...

...用vc6.0出现错误 syntax error : missing ';' before '}'_百度...
int i;p=new int*[R];\/\/C++的动态二维数组是这样申请的,先申请第一维,再申请第二维 ,p[ROW]是一个数组,数组中的每个元素都是整形数组 for(i=0;i<=R-1;i++){ p[i]=new int[L];\/\/对一维数组中的每一个元素都赋于一个数组 } } Matrix::Matrix(Matrix& otherMatrix)\/\/拷贝构造...

vc6.0编译不通过 missing ';' before '<class-head>'
一、直译:在(标志符)“xxxx”前缺少分号。二、错误分析:VC6的编译期最常见的误报,当出现这个错误时,往往所指的语句并没有错误,而是它的上一句语句发生了错误。其实,更合适的做法是编译器报告在上一句语句的尾部缺少分号。上一句语句的很多种错误都会导致编译器报出这个错误。三、解决办法:1.上...

c++ 编译报错 syntax error : missing ';' before ':'
你好,我拷贝了,编译没有报错,正常运行,你再编译试试,你这是C++代码,文件后缀用cpp编译,C语言里没有::所以编译器按C来编译就报错了,因为不识别::

...C2143: syntax error : missing ';' before ')' 改动之后无效啊_百 ...
你的语法错了,把逗号改为分号,即for(n=100; n<1000; n++)

c++中出现:syntax error : missing ';' before ')'
for(i=1,i<=n;i++)\/\/ i=1后的,改为;

c++语法错误 syntax error : missing ';' before '&&'
if(((4.2 * avtotle[i] + totle[i]) > Data[k])&&((totle[i]-(4.2 * avtotle[i] )<Data[k])))\/\/少){retotle[i]=retotle[i]+Data[k];renum++;} } retotle[i]=retotle[i]\/renum \/\/少;} else { for(i=0;i<=2047;i++)for(j=0;j<=m-2;j++){k = i ...

vc6.0 :error C2143: syntax error : missing ')' before '&'
int *pb_last=Lb->list+Lb->size-1;while (pa<=pa_last && pb<=pb_last){ if (*pa <= *pb){ pc++ = *pa++;} else { pc++ = *pb++;} } while(pa <= pa_last){ pc++ = *pa++;} while(pb <= pb_last){ pc++ = *pb++;} }\/\/MergeList ...

C++有一个错误改不过来 syntax error : missing ')' before ';'
~C() {cout<<"析"<<endl;在这加个大括号“}”delete ch;(不用释放这个的吧)} private:char *ch;};void main()\/\/主函数不要是无值型的,可以是int;(\/\/这里是大括号;char s[N];cin>>s;C P(s);} 你写程序要一行一行的写,这样太难看了,有难改,看上去一大堆,别人都懒得看了...

...编译中出现syntax error : missing ';' before '{',怎么解决_百度知...
class ExamClass() \/\/这里多了括号了,去掉这个括号就行了 { public:...

相似回答