二维动态数组空间分配 c语言,科学网—C语言中动态二维数组的使用和分配 - 王一哲的博文...
好多年不用C语言了,最后一次使用还是读研的时候写矩量法的时候了,看见VS的界面总能想起当年读书的时候的各种错误,往事随风。本程序应人之约,首先得到一个随机的矩阵,之后通过将矩阵分解为几个小矩阵统计小矩阵的所有元素的和,最终得到一个新的矩阵,其中涉及动态二维数组的分配,多维数组的使用按照这个方式类推。一维数组相当于矢量,二维数组相当于矩阵,高维数组可以用张量来理解。在数值计算中应该会遇到
#include
#include
#include
#include
//作者Waightman H Wang
#define Ohang 14 //初始矩阵大小
#define Olie 14
#define RATE 5 //压缩率
int main()
{
//根据压缩率判断压缩后的矩阵大小
double input[Ohang][Olie];
int Lhang,hangyu,Llie,lieyu,ii;
Lhang=Ohang/RATE;
hangyu=Ohang%RATE;
Llie=Olie/RATE;
lieyu=Olie%RATE;
if(hangyu>3)
Lhang=Lhang+1;
if(lieyu>3)
Llie=Llie+1;
double **output;
output = (double **)malloc(sizeof(double*)*Lhang);//申请一组一维指针空间。
for(ii = 0; ii < Llie; ii ++)
output[ii] = (double *)malloc(sizeof(double) * Llie); //对于每个一维指针,申请一行数据的空间。
if (output == 0) // 内存申请失败,提示退出
{
printf("out of memory,press any key to quit...n");
exit(0); // 终止程序运行,返回操作系统
}
int i = 0, j = 0, oi = 0, oj = 0;
srand(1);
for (i = 0; i < Ohang; i++)
for (j = 0; j < Olie; j++)
input[i][j] = rand()%10;
//计算新矩阵的元素
double sum = 0.0;//小矩阵求和存储
int sum_count = 0;//非零元个数
int hangtemp,lietemp;//分块矩阵的临时角标
for(oi=0;oi
{
for(oj=0;oj
{
sum = 0.0;//小矩阵求和存储
sum_count = 0;//非零元个数
hangtemp=oi*RATE;
lietemp=oj*RATE;
for(i=0;i
for(j=0;j
{
sum=sum+input[hangtemp+i][lietemp+j];
}
//输出矩阵的填充
output[oi][oj]=sum;
}
}
//最后一行可能填不满,单独处理
int RATEH,RATEL;
if(hangyu>3)
RATEH=hangyu;
else
RATEH=RATE;
hangtemp=RATE*(Lhang-1);
for(oj=0;oj
{
sum = 0.0;//小矩阵求和存储
sum_count = 0;//非零元个数
lietemp=oj*RATE;
for(i=0;i
for(j=0;j
{
sum=sum+input[hangtemp+i][lietemp+j];
}
//输出矩阵的填充
output[Lhang-1][oj]=sum;
}
//最后一列的处理
if(lieyu>3)
RATEL=lieyu;
else
RATEL=Olie-lieyu;
lietemp=RATE*(Llie-1);
for(oi=0;oi
{
sum = 0.0;//小矩阵求和存储
sum_count = 0;//非零元个数
hangtemp=oi*RATE;
for(i=0;i
for(j=0;j
{
sum=sum+input[hangtemp+i][lietemp+j];
}
//输出矩阵的填充
output[oi][Llie-1]=sum;
}
//最后右下角元素
hangtemp=oi*RATE;
lietemp=oi*RATE;
sum=0;
for(i=0;i
for(j=0;j
{
sum=sum+input[hangtemp+i][lietemp+j];
}
//输出矩阵的填充
output[Lhang-1][Llie-1]=sum;
for (i = 0; i < Ohang; i++)
{
for (j = 0; j
printf("%f ", input[i][j]);
printf("n");
}
for (i = 0; i < Lhang; i++)
{
for (j = 0; j < Llie; j++)
printf("%f ", output[i][j]);
printf("n");
}
system("pause");
return 0;
}
转载本文请联系原作者获取授权,同时请注明本文来自王一哲科学网博客。
链接地址:http://wap.sciencenet.cn/blog-1218015-916857.html
下一篇:基于CST海面背景耦合下目标电磁散射特性仿真分析
二维动态数组空间分配 c语言,科学网—C语言中动态二维数组的使用和分配 - 王一哲的博文...相关推荐
- wannier拟合能带总是拟合不上_科学网—Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则 - 李云海的博文...
基本规则 Wannier90是一个构建局域轨道基组的有力工具,一般用来计算紧束缚模型中的占位能和跳跃积分,再结合杂化泛函或GW方法,插值得到更为准确的能带结构,或者计算极化.输运.拓扑不变量等物理性质 ...
- wannier拟合能带总是拟合不上_科学网-Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则-李云海的博文...
基本规则 Wannier90是一个构建局域轨道基组的有力工具,一般用来计算紧束缚模型中的占位能和跳跃积分,再结合杂化泛函或GW方法,插值得到更为准确的能带结构,或者计算极化.输运.拓扑不变量等物理性质 ...
- matlab surf颜色,科学网[转载]matlab中控制mesh或者surf的颜色
科学网[转载]matlab中控制mesh或者surf的颜色 曲面的顏色越发柔順滑腻,del2 (Z) 根據數值微分來產生矩陣 Z 的 discrete Laplacian, Y,surf 及 mesh ...
- c语言 宏 变长参数,科学网—C/C++中处理变长参数函数(Variadic Function)的几个宏 - 彭彬的博文...
近日在模式中进行非线性方程组求解时遇到变长参数函数的问题,以前从来没有自己写过变长参数的函数,于是补了一下课,将近日对该小问题的学习和理解整理如下. 一.变长参数函数(variadic functio ...
- r语言 林元震_科学网—R语言简介 - 林元震的博文
R既是软件,也是语言,在GNU协议General Public Licence下免费发行,是1995年由新西兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman基于S语言基础上共 ...
- c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文
见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...
- c语言 奥数题目及答案,科学网-C语言做一道小学奥数题-康建的博文
见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...
- .sh是什么语言_为什么《山海经·中次二经》中,把“西王母”叫做“马腹”?...
为什么<山海经·中次二经>中,把"西王母"叫做"马腹"? 作者:亚布 为什么<山海经·中次二经>中把"西王母"叫做& ...
- 1071svm函数 r语言,科学网—R中的svm - 吴锐的博文
svm理解: LSSVM: 最小二乘支持向量机(Least squares support vector Maehine,LSSVM)是SVM的一种变体,把问题转化成对一个 线性方程求解,所需计算资源 ...
最新文章
- Chapter 5 Blood Type——11
- cordova打包安卓app
- 记录 之 numpy扩充某一维度,并重复填充
- 剖析Disruptor:为什么会这么快?(一)锁的缺点
- 正则表达式强化,爬虫练习
- [合作赞助]九叔生日由中国移动、51cto、奇虎360以及一帆浩瀚联合举办
- IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
- 计算机科学与技术 net,计算机科学与技术
- 累加求和a+aa+aaa+aa…a_过半深圳券商评级跃升4家维持在AA级
- Google code android开源项目(五)
- mysql查询最接近的记录
- Android Multimedia框架总结(九)Stagefright框架之数据处理及到OMXCodec过程
- 阿里架构师首次畅谈余额宝背后的故事
- Redis开发与运维教程
- OpenCV: 读取图片中某个点的像素值
- 坦克世界怎么显示服务器准心,坦克世界设置方法 坦克世界如何设置图像
- msm8953 lk阶段lcd流程
- C# NPOI 导出Excel 小数位数控制
- oc 之中的 汉字字符串转化成为拼音 汉字字符串的排序
- 基于阿里云服务器使用kubeadm搭建k8s集群
热门文章
- vb ADO控件连接ACCESS数据库做登录密码的例子
- 怎么把钉钉的文件导入电脑_钉钉文件怎么保存到电脑
- python将汉字转为拼音字母_科学网—[转载]python中文汉字转拼音 - 陈明杰的博文...
- Git私服客户端免密码登录
- 练手/翻译软件/有道翻译API/XML解析/正则/Java
- H3C交换机SSH配置(20200922)
- 老码农教你学英语(学习素材)
- hfs支持php文件系统,HFS+文件系统的发展及特点介绍
- 咸鱼软件应用—Arnold2019安装
- 缓冲区(1):为什么会有缓冲区(缓存)?