代码-一个二维数组换位问题

问题描述

一个二维数组换位问题

这是楼主的代码

`#include
#define M 3
#define N 4
class Matrix
{
int a[3][4];
public:

Matrix(int b[M][N])
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=b[i][j];
}
void process();
void show()
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
cout<<a[i][j]<<'t';
cout<<endl;
}

}
};
void Matrix::process()
{
int max,min;
int i,j,maxi,maxj,mini,minj;
max=min=a[0][0];
for(i=0;i
for(j=0;j
{
if(max{
max=a[i][j];
maxi=i;
maxj=j;
}
if(min>a[i][j])
{
min=a[i][j];
mini=i;
minj=j;
}
}
int t;
t=a[0][0];a[0][0]=a[maxi][maxj];a[maxi][maxj]=t;
t=a[M-1][N-1];a[M-1][N-1]=a[maxi][maxj];a[maxi][maxj]=t;

}
int main()
{int b[M][N]={{1,4,5,6},{7,2,10,11},{8,9,12,3}};

Matrix ma(b);
ma.process();
ma.show();
return 0;
}

 在这里书写代码片

楼主不太明白这段代码t=a[M-1][N-1];a[M-1][N-1]=a[maxi][maxj];a[maxi][maxj]=t;(将最小值换至数组右下角)于是将数组中1和4的位置换了下,结果如图
结果明显不对,然后楼主将maxi,maxj换成了mini,minj,结果便正确了,但但楼主将1
4变成原位置时代码又错误了,这该怎么办?

解决方案

这不就是找到最大的放在左上,最小的放在右下吗,你试试把min初始化改成min=a[M-1][N-1]试试,就是你的代码有些地方被吞掉了

时间: 2024-07-29 11:45:29

代码-一个二维数组换位问题的相关文章

c++程序-我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢?

问题描述 我用vector里resize函数创建了一个二维数组,怎么给它排序?代码如下,哪里错了呢? #include #include #include #include #include using namespace std; int main() { int n, m; cout << "input the row:n and the column:m" << endl; cin >> n >> m; vector< vec

在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下

问题描述 在java中定义了一个二维数组,这样做好像不对,输出时报错, 代码如下 我是想要定义一个二维数组,然后动态地给它赋值,应该怎么做不知道问题出在做么地方,请大神指导一下 ,代码如下: int[][] a = null; a[1] = new int[]{1,2,3}; System.out.println(a[1][1]); 解决方案 int[][] a = null; a = new int[5][];//第一维需要初始化 a[1] = new int[]{1,2,3};//这是第二维

link中如何颠倒一个二维数组?二维数组不支持revses吧?

问题描述 link中如何颠倒一个二维数组?二维数组不支持revses吧? link中如何颠倒一个二维数组?二维数组不支持revses吧? 解决方案 可以用select Enumerable.Range(0 arr.GetLength(1)).Select(x => Enumerable.Range(0 arr.GetLength(1)).Select(y => arr[x y]).Reverse().ToArray()).Reverse().ToArray(); 解决方案二: 长方形的矩阵有上

可以用一个一级指针指向一个二维数组吗?

问题描述 可以用一个一级指针指向一个二维数组吗? 看到书上写的都是二级指针,如int *p[4]等等, 数组不是在内存中的存储是连续的吗, 为什么不用一级指针直接指向第一个元素呢? 解决方案 直接用一个指针,就可以完成指向数组的功能,无论数组是多少维.只是指向后,如果控制下标需要自己考虑.其实,数组名就可以认为是一个静态的指针. 解决方案二: 建议你读下这篇文章http://www.cnblogs.com/wanpengcoder/archive/2010/07/17/1779503.html

c++-C++,为一个二维数组赋值,为什么到一半就停止了?

问题描述 C++,为一个二维数组赋值,为什么到一半就停止了? int preprocessing(char strFile[],IMAGEDATA imagedata,PIXEL **imagepixel,long *wid,long *hei) { FILE *fpi; imagedata= NULL;//动态分配存储原图片的像素信息的二维数组 long *width,*height;//新定义一个像素结构体二维数组 width=wid;height=hei; fpi=fopen(strFil

二维数组存储数据-如何定义一个二维数组和赋值,数组里面需要放【String】【List】

问题描述 如何定义一个二维数组和赋值,数组里面需要放[String][List] 我现在用多个线程处理一个List 每个线程取List里面的50条数据进行处理返回一个List.然后把线程名和返回的List放入二维数组里面. 解决方案 不用数组用map怎么样map.key=线程ID,val=处理数据集合,如果非要数组的话,你用object类型数组

一个二维数组的题 详细看图

问题描述 一个二维数组的题 详细看图 一个M*N的二维数组,数学元素是0或者1,要求转换数组,将含有1的行和列全部置1 解决方案 #include using namespace std; int s[10001][10001],Map[10001][10001]= {0}; int main() { int m,n,i,j,k,l; cout<<"请输入二位数组的行m,列n的值:"< cin>>m>>n; cout<<"

java 命名-一个二维数组常量命名该怎么命名,不能是大写吧。

问题描述 一个二维数组常量命名该怎么命名,不能是大写吧. java的数组常量命名约定.======================================= 解决方案 用final 来定义 解决方案二: 命名规范http://wenku.baidu.com/link?url=lXm9BPBbZvU_ELi0c-MwajASixWSWT_H62owk4lp3DDeUUdxJ-GYp-oTobOJRn0XO-2L-mkiKkkaLXmR_mV_Yc-ByOsJ1Ja4yaeeU5nMn__

已知一个二维数组,求一个新的二维数组,具体描述请看内容吧

问题描述 我将DataTable中的数据存放到了一个二维数组中,如图所示比如这个数组的名称是a[][],现在我定义一个新的二维数组b[][],求出a的每一行.每一列的和,然后和a一起,都赋值给b,b的结构如图所示.右下角是整个a数组的所有数据的和.这样的程序怎么写呢? 解决方案 解决方案二:唉,自己写for解决方案三:全部循环,简单暴力解决方案四:先看看....