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

动态数组有关问题-百思不得其解,100分求解

2012-04-06 
动态数组问题---百思不得其解,100分求解#includecstdlib#includeiostreamusingnamespacestdintmain(i

动态数组问题---百思不得其解,100分求解
#include   <cstdlib>
#include   <iostream>

using   namespace   std;

int   main(int   argc,   char   *argv[])
{
   
        int   iNodeCount=3;
       
        int   irow=iNodeCount*2;
int   icol=iNodeCount*2;
int   iarr=irow*irow;
       
        double   *   iArrDM=new   double[iarr];
       
      for(int   i=0;i <irow;i++)
      {
for(int   j=0;j <icol;j++)
{
                               
                      *(iArrDM+i+j)=0;
                       
}
cout < <endl;
      }
   
         
         
          iArrDM[0]=1;
  iArrDM[1]=2;
 
      for(int   w=0;w <irow;w++)
      {
for(int   m=0;m <icol;m++)
{
                        cout < <*(iArrDM+w+m) < < "# ";
}
cout < <endl;
}

delete   []     iArrDM;
        system( "PAUSE ");
        return   EXIT_SUCCESS;
}
我预想上面的代码的输出结果应该是
1#2#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
第一行为1   2   0   0   0   0
可是实际结果是
1#2#0#0#0#0#
2#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
0#0#0#0#0#0#
第二行多出了一个2
第二行变成了2   0   0   0   0   0  
我只输入了一个iArrDM[1]=2;怎么会有两个2,
郁闷!!!
求助!!!!
编译器为devCPP   and   vc++   6.0


[解决办法]

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

int iNodeCount=3;

int irow=iNodeCount*2;
int icol=iNodeCount*2;
int iarr=irow*irow;

double * iArrDM=new double[iarr];

for(int i=0;i <irow;i++)
{
for(int j=0;j <icol;j++)
{

*(iArrDM+i * icol +j)=0;

}
cout < <endl;
}


iArrDM[0]=1;
iArrDM[1]=2;

for(int w=0;w <irow;w++)
{
for(int m=0;m <icol;m++)
{
cout < <*(iArrDM+w * icol +m) < < "# ";
}
cout < <endl;
}

delete [] iArrDM;
system( "PAUSE ");
return EXIT_SUCCESS;
}


[解决办法]
当使用一维数组模拟多维时候,
注意数组下标的计算方式:

arr[i][j] ~ *(*(arr+i)+j)
注意arr 是行指针, arr+i 是行移动,
故使用 1维时候, arr+i ~ a+i*colomn
------解决方案--------------------


行为1列为0和列为1行为0和都是1
当然输出两个2了
[解决办法]
下标转换不对.

cout < <*(iArrDM+w * icol +m) < < "# ";

行移动一个位置,就是icol个元素.

热点排行