C++动态数组指针,麻烦帮忙看看哪儿错了

caosz 发布于 2013/04/23 11:07
阅读 366
收藏 2
#include <iostream>
using namespace std;
void transpose(int (*a)[3],int nrow) {
int (*b)[3]=NULL;
for (int i=0;i<nrow;i++) {
for (int j=0;j<3;j++) 
*(*(b+i)+j)=*(*(a+i)+j);
}
for (int i=0;i<nrow;i++) {
for (int j=0;j<3;j++) {
*((*a+i)+j)=*((*b+j)+i);


}
}
for (int i=0;i<nrow;i++) {
for (int j=0;j<3;j++) {
cout<<*((*a+i)+j)<<"";
}
cout<<endl;
}
}
int main( ) {
cout<<"输入9个字"<<endl;
int (*a)[3]=new int[3][3];
for (int i=0;i<3;i++) {
for (int j=0;j<3;j++)
cin>>*((*a+i)+j);
}
cout<<"The result is"<<endl;
transpose(a,3);
return 0;
} 
加载中
0
caosz
caosz

我改完之后变成这个,可以了。

#include <iostream>

using namespace std;

void transpose (int *matrix,int nrow)
{
int i,j,k;
for(i=0;i<nrow;i++)
for(j=0;j<i;j++)
{
k=*(matrix+i*nrow+j);
*(matrix+i*nrow+j)=*(matrix+j*nrow+i);
*(matrix+j*nrow+i)=k;
}
}
int main() 
{
int i,j;
int *p=new int [9];
cout<<"输入9个数"<<endl;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{
cin>>p[i*3+j];
}
transpose(p,3);
cout<<"转置后"<<endl;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
cout<<p[i*3+j]<<"";
}
cout<<endl;
}
return 0;
}

0
Lunar_Lin
Lunar_Lin

看着就头疼, 不能用vector么? 大把的青春浪费在这方面. 人生要学会 结果导向!

搞定这个,  学到的有用东西为0.

Crossroad
Crossroad
回复 @Lunar_Lin : 哎,现在大学的老师都蛋疼的要命,这代码写出来有什么意义呢?不过锻炼一下思维还是很好的
Lunar_Lin
Lunar_Lin
回复 @caosz : 作业那就没办法了. 大学学的和工作正经用的相差很大.
caosz
caosz
好,我试着用下vector。我做这个是有作业啦。
0
Crossroad
Crossroad
楼上正解
返回顶部
顶部