主题:[讨论]二维数组里面暗藏的相对二维数组的计算
论坛爱好者
[专家分:0] 发布于 2010-07-03 15:36:00
我用C++编写了如下的一段程序:
#include<iostream.h>
void main()
{
//声明变量
int m4,i;
double k;
double a[12][10]={
{2,2,2,2,2,2,2,2,2,2},
{2,2,2,2,2,2,2,2,2,2},
{3,3,3,3,3,3,3,3,3,3},
{4,4,4,4,4,4,4,4,4,4},
{1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1},
{2,2,2,2,2,2,2,2,2,2},
{5,5,5,5,5,5,5,5,5,5},
{1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0},
{2,2,2,2,2,2,2,2,2,2},
{1,1,1,1,1,1,1,1,1,1}
};
for (i=1;i<=11;i++)
{k=a[0][0]*a[i+0][0];
if (k==4)
{
cout<<" a["<<i<<"][0]";
cout<<" i="<<i<<endl;
}
}
}
程序运行一切正常,运行结果如下:
a[1][0] i=1
a[6][0] i=6
a[10[0] i=10
其中 a[1][0]表示 a[1][0]所在位置的元素的值与a[0][0]所在位置的元素的乘积为我预先给定的值k==4 i=1表示 a[1][0]所在位置的元素的行数。
同理 a[6][0]表示 a[6][0]所在位置的元素的值与a[0][0]所在位置的元素的乘积为我预先给定的值k==4 i=6 表示 a[6][0]所在位置的元素的行数。
现在我想请教大家一个问题:运行结果里面有一句话:a[6][0] i=6。
如何将行数i=6变为i=0,相应的该元素的列的值就增加6,也就是行减少多少行,列数就增加多少列。相当于a[6][0]变为了a[0][6],但是a[10][0]
不是变为了a[0][10] ,而是变为了a[4][6],(也就是说,原先a[6][0]的行减少多少行,a[10][0]的行也减少多少行 ,a[6][0]的列 增加多少列 ,
a[10][0]的列 也增加多少列,他们的相对位置没有发生改变)再来计算变换后的两个位置a[0][6]和a[4][6]的乘积。请问,在原程序的基础上该怎
么修改?最好把修改后的原程序发上来,因为我学得不好,要好好学学,谢谢!!
17 楼
论坛爱好者 [专家分:0] 发布于 2010-07-07 19:46:00
#include<iostream.h>
void main()
{
//声明变量
int i,mix;
double k,x1,x2,x3,x4,x5;
double a[12][24]={
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0},
{4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4},
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0},
{4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0},
{3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};
mix=11;
x1=9;
x2=9;
x3=9;
x4=9;
x5=9;
for (i=1;i<=11;i++)
{k=a[0][0]*a[i+0][0];
if (k==25)
{
cout<<" a["<<i<<"][0]";
cout<<" i="<<i<<endl;
if (i<mix)
mix=i;
}
}
cout<<"mix= "<<mix<<endl;
for (i=1;i<=11;i++)
{k=a[0][0]*a[i+0][0];
if (k==25)
{
cout<<" a["<<i<<"][0]";
cout<<" i="<<i;
cout<<" a["<<i<<"][0]"<<"转换后的为:"<<"a["<<i-mix<<"]["<<mix<<"]";
cout<<" 转换后的值 ="<<a[i-mix][mix];
if (x1==9)
{
x1=a[i-mix][mix];
cout<<" x1="<<x1;
cout<<" a["<<i-mix<<"]["<<mix<<"]="<<x1<<endl;
}
else
{if (x2==9)
{
x2=a[i-mix][mix];
cout<<" x2="<<x2;
cout<<" a["<<i-mix<<"]["<<mix<<"]="<<x2<<endl;
}
else
{if (x3==9)
{
x3=a[i-mix][mix];
cout<<" x3="<<x3;
cout<<" a["<<i-mix<<"]["<<mix<<"]="<<x3<<endl;
}
else
{
if (x4==9)
{
x4=a[i-mix][mix];
cout<<" x4="<<x4;
cout<<" a["<<i-mix<<"]["<<mix<<"]="<<x4<<endl;
}
else
{
if(x5==9)
{
x5=a[i-mix][mix];
cout<<" x5="<<x5;
cout<<" a["<<i-mix<<"]["<<mix<<"]="<<x5<<endl;
}
}
}
}
}
}
}
}