c++的朋友看过来!看一下这段代码!

liulanggod 2002-08-17 06:17:59
这是一个要求矩阵转换的程序,为何在devcpp4.0中编译不能通过?朋友们帮忙看看是哪有逻辑错误。我觉得好像是函数传递这儿的错误,那个二维数组在被调函数中的表示方式对否?请指教,急@!!!谢谢@!!!!QQ:19644753
#include <iostream.h>
#include <stdlib.h>
void main()
{void zhu(float,int,int);
int j=3,i=3,n1,n2,x,y;
float a[i][j];
for(int x2=0;x2<i;x2++)
for(int y2=0;y2<j;y2++)
cin>>a[x2][y2];
zhu(a,i,j);
int p=0;
for(n1=0;n1<i;n1++)
for(n2=0;n2<j;n2++)
{cout<<a[n1][n2]<<' ';
p++;
if(p%3==0) cout<<endl;}
}
void zhu(float a[][],int i,int j)
{int x,y;
float x1;
for(x=0;x<i;x++)
for(y=0;y<j;y++)
{x1=a[x][y];a[x][y]=a[y][x];a[y][x]=x1;}
return();
}
...全文
19 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqy12345 2002-08-19
  • 打赏
  • 举报
回复
可以先申请动态分配数组,
int i,j;
int *shuzu;
shuzu=(int *)malloc(sizeof(int)*i*j);
然后
for(x=0;x<i;x++)
for(y=x;y<j-x;y++)
{x1=a[x][y];a[x][y]=a[y][x];a[y][x]=x1;}
即可.

未上机调试,不止结果是否正确,望高手指教:)
lei007 2002-08-19
  • 打赏
  • 举报
回复
数组定义不能用变量
tomcatf149999 2002-08-19
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdlib.h>
void zhu(float a[][3],int,int);
void main()
{
int j=3,i=3,n1,n2,x,y;

float a[3][3];

for(int x2=0;x2<i;x2++)
for(int y2=0;y2<j;y2++)
cin>>a[x2][y2];

zhu(a,i,j);

int p=0;
for(n1=0;n1<i;n1++)
for(n2=0;n2<j;n2++)
{
cout<<a[n1][n2]<<' ';
p++;
if(p%3==0) cout<<endl;
}
}
void zhu(float a[][3] ,int i,int j)
{
int x,y;
float x1;
for(x=0;x<i;x++)
for(y=x;y<j-x;y++)
{x1=a[x][y];a[x][y]=a[y][x];a[y][x]=x1;}
}
bloodstone 2002-08-17
  • 打赏
  • 举报
回复
注意传参数的方式,应传指针或引用
bloodstone 2002-08-17
  • 打赏
  • 举报
回复
C里:
int i,j;
int *shuzu;
printf("%d%d",&i,&j);
shuzu=(int *)malloc(sizeof(int)*i*j);
不过访问的时候不能用shuzu[1][2]的方式,
要用shuzu[1*i+2]

我想C++里应该有类似的功能吧

liulanggod 2002-08-17
  • 打赏
  • 举报
回复
楼上兄弟,上述程序不能实现他们的转换呀!只能是原样输出!:)
flying_fox0 2002-08-17
  • 打赏
  • 举报
回复
C++ language doesn't support the daynamic array,
so you should designate the subscripts of your array;

The following is OK.

#include <iostream.h>
#include <stdlib.h>

void main()
{
void zhu(float a[3][3],int,int);
int j=3,i=3,n1,n2;
float a[3][3];
for(int x2=0;x2<i;x2++)
for(int y2=0;y2<j;y2++)
cin>>a[x2][y2];

zhu(a,i,j);

int p=0;
for(n1=0;n1<i;n1++)
for(n2=0;n2<j;n2++)
{
cout<<a[n1][n2]<<' ';
p++;
if(p%3==0)
cout<<endl;
}
}

void zhu(float a[3][3],int i,int j)
{
int x,y;
float x1;
for(x=0;x<i;x++)
for(y=0;y<3-i;y++)
{
x1=a[x][y];
a[x][y]=a[y][x];
a[y][x]=x1;
}
return;
}
winco 2002-08-17
  • 打赏
  • 举报
回复
这种方式显然不对嘛,应该这样:
float (*a)[j]=new float[i][j];

……………

在函数最后
delete []a;
搞定
zhf0021 2002-08-17
  • 打赏
  • 举报
回复
首先:float a[i][j];声明不对,i,j,为变量,因该用常数。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧