linux变形数组,C++中实现数组变形,求极值并返回其行列号

前言

今天更新内容主要还是实现数组的变形,在Python中一个函数Reshape的事,在C++耗费了我两个多小时,可能是我C++基础差吧,

6b044f5bd24778885ec23e7b80237f0c.gif 怪我大一,大二没好好学

c2e3fb3e93e77ec3174dde9137277bfe.gif 。本次还有一个很重要的内容就是用C++的“new”创建动态数组,在上一篇C++文章中是用的C语言的“malloc”实现数组地址的动态分配,在一个就是用指针来对数组操作,这些很简单的操作,我还要在大三重新认识,惭愧至极,话不多说,直接上代码。

代码

/*

作者:山科_xxin

时间:2017-03-14 23:27:40

功能:数组变形,求数组极值及其下标

类别:C++数组练习

*/

#include

#include

#include

using namespace std;

int **random(int n,int m)

{

int t;

int **data;

t = time(0);

srand(t);

data=(int **)malloc(n*sizeof(int *));

for (int i=0;i

data[i]=(int *)malloc(2*sizeof(int));

for(int i = 0;i

{

for(int j = 0;j

{

data[i][j] = rand()%100;

}

}

return data;

}

int visit(int **data,int n,int m)

{

for(int i = 0;i

{

for(int j = 0;j

cout<

cout<

}

return 0;

}

int **reshape(int **data,int n,int m,int x,int y )

{

int k = 0;

int *midata = new int[n*m];

int **redata = new int *[x];

if (n*m!=x*y)

cout<

else

{

for( int i=0; i

{

redata[i] = new int[y] ;

}

int redata1[3][2];

for(int i = 0;i

{

for(int j = 0;j

{

k++;

*(midata+k) = data[i][j];

}

}

int k1 = 0;

/*

for(int i = 0;i

{

k1++;

cout<

//cout<

}

cout<

*/

int k2 = 0;

for(int ii = 0;ii

{

for(int jj = 0;jj

{

//cout<

//redata[ii][jj] = midata[ii*y+jj+1];

//cout<

redata[ii][jj] = midata[ii*y+jj+1];

//cout<

}

//cout<

}

}

for(int i = 0; i < x; i++)

return redata;

}

int *Max(int **data,int n,int m)

{

int maxv = -999;

int maxi = 0,maxj = 0;

int *max = new int[3];

for(int i = 0;i

{

for(int j = 0;j

{

if (data[i][j]>=maxv)

{

maxv = data[i][j];

maxi = i;

maxj = j;

}

}

}

*max = maxv;

*(max+1) = maxi;

*(max+2) = maxj;

return max;

}

int *Min(int **data,int n,int m)

{

int minv = 999;

int mini = 0,minj = 0;

int *min = new int[3];

for(int i = 0;i

{

for(int j = 0;j

{

if (data[i][j]<=minv)

{

minv = data[i][j];

mini = i;

minj = j;

}

}

}

*min = minv;

*(min+1) = mini;

*(min+2) = minj;

return min;

}

int main()

{

int n,m,x,y;

int maxv,minv;

cout<

cin>>n;

cin>>m;

int *min;

int *max;

cin>>x;

cin>>y;

int **data = random(n,m);

int **redata = reshape(data,n,m,x,y);

cout<

visit(data,n,m);

cout<

visit(redata,x,y);

min = Min(data,n,m);

max = Max(data,n,m);

cout<

cout<

system("pause");

return 0;

}

演示

main函数

51b728d56e11347bd3fc2543bc7aca44.png

运行结果

f80066d5cc0466853639cf06a8d58672.png

注:生成3*6的随机数组,变形为9*2数组,求原数组的最大值,最小值,并返回其坐标。

后语

用C++写一个图像处理算法,肯定是一个庞大的工程,用解释性语言,比如Python,能轻松处理数组,使你更专注于算法的实现,但是C语言速度更快,比如说C语言0.001s完成的任务,Python可能需要0.1s,但是你基本察觉不出来,并且C++还有编译的过程,而Python直接运行。

xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++中实现数组变形,求极值并返回其行列号!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值