以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  如何将二维数组转换成一个一维数组  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=41449)


--  作者:fangel2000
--  发布时间:12/21/2006 10:25:00 AM

--  如何将二维数组转换成一个一维数组
如何将以下的二维数组转换成一个一维数组:

int a[6][6]={{1,1,0,1,1,0},{1,1,0,1,1,0},{0,0,1,1,1,0},{1,1,1,1,1,0},{1,1,1,1,1,0},{0,0,0,0,0,1}};
把它转换成含有6个字符串的数组:即110110,110110,001110,……

本来是20*20的数组,在这里为了简化计算.所以我选定了6*6.其基本思想大致都是一样的,做了很多次,就是无法实现.以下的程序能得到结果,但是有点问题,见下:

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

using namespace std;
void main()
{
int a[6][6]={{1,1,0,1,1,0},{1,1,0,1,1,0},{0,0,1,1,1,0},{1,1,1,1,1,0},{1,1,1,1,1,0},{0,0,0,0,0,1}};
char y[6][6] = {""};
char b[6];
for(int i=0;i<6;i++)
{
  for(int j=0;j<6;j++)
  {
   itoa(a[i][j],b,10);
   strcat(y[i],b);
  }
  cout<<y[i]<<endl;     //似乎可以,能得到一维数组.但是我单个输出的时候就出现问题.见下
}
cout<<y[0];   //例如输出y[0],结果显示了所有的数字
}


--  作者:longshentailang
--  发布时间:12/22/2006 12:09:00 AM

--  
y[0]的输出结果就是所有的数字了,因为转化为一维数组后,其就相当于int y[36];的首地址了。也就是y或者&y[0]了。
--  作者:fangel2000
--  发布时间:12/22/2006 1:59:00 PM

--  
呵呵,这个问题我已经调试出结果了
应该改为char y[6][7] = {"\0"}; 就可以了
--  作者:一分之千
--  发布时间:12/31/2006 8:45:00 PM

--  
这样是一维数组吧?楼主的好像是把一个二维数组到了另外一个二维数组
==================================
#include <stdlib.h>
#include <iostream.h>
#include <string>

using namespace std;
void main()
{
 int a[6][6]={{1,1,0,1,1,0},{1,1,0,1,1,0},{0,0,1,1,1,0},{1,1,1,1,1,0},{1,1,1,1,1,0},{0,0,0,0,0,1}};
 char y[36]={""};
 char b[6];
 int m=0;
 for(int i=0;i<6;i++)
 {
  for(int j=0;j<6;j++)
  {
   itoa(a[i][j],b,10);
   strcat(&y[m],b);
   m++;
  }
  cout<<y[i]<<endl;     //似乎可以,能得到一维数组.但是我单个输出的时候就出现问题.见下
 }
 y[m]='\0';
 cout<<y[0];   //例如输出y[0],结果显示了所有的数字

 for( i=0;i<36;i++)
 {
  
   cout<<y[i]<<'\t';

 }
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
3,652.344ms