资源简介
strassen矩阵乘法的C代码
【问题描述】
从文件arr.in中读入一个m行k列的整数矩阵a和一个k行n列的整数矩阵b(1 < m, k, n < 200),在标准输出上输出这两个矩阵的乘积。
【输入形式】
输入文件arr.in中有m+k行,前m行是矩阵a的元素aij,后k行是矩阵b的元素bij (-3000 < aij, bij < 3000)。
【输出形式】
输出结果为m行,每行n个元素,按整数左对齐方式输出,每个元素占相同的位数,且各个元素之间空格的最少数量应等于1。
【输入样例】
1 0
0 1
1 1
1 1
【输出样例】
1 1
1 1
代码片段和文件信息
#include “stdio.h“
#include
#define mytype int//矩阵元素的数据类型
#define myinputmode “%d“//矩阵元素的输入格式
#define myprintmode “%4d“//矩阵元素的输出格式
/*以上参数的设置可根据所计算矩阵的元素的数值类型进行相应改变
如更改为浮点型数据则可以使用下面的设置
#define mytype float
#define myinputmode “%f“
#define myprintmode “%6.2f“
*/
/////////////////////////////////////////
/****************************************
函数名:is2
参数:m为长整型整数
功能:检测m是否是2的正整数次幂
返回值:返回布尔型变量
true则表示m为2的正整数次幂
false则表示m不是2的正整数次幂
****************************************/
int is2(int m)
{
if(m<0)return 0;
if(m>=2)
{
if((m%2)==0) return is2(m/2);
else return 0;
}
else
{
if(m==1)return 1;
else return 0;
}
return 0;
}
/////////////////////////////////////////
/****************************************
函数名:inputmatrix
参数:M为指向数组的指针,用来存储输入的矩阵
m长整型,是数组M所存矩阵的维数
name字符型数组,是需要进行数据输入的矩阵的名字
功能:矩阵数据输入的函数,通过输入矩阵的每个元素将
矩阵存入数组
返回值:无
****************************************/
void inputmatrix(mytype * Mint mchar *nameint a[][200])
{
int ij;
for(i=0;i for(j=0;j {
M[i*m+j]=a[i+1][j+1];
}
}
/////////////////////////////////////////
/****************************************
函数名:printmatrix
参数:M为指向数组的指针,数组中存储着矩阵
m长整型,是数组M所存矩阵的维数
name字符型数组,是需要进行数据输入的矩阵的名字
功能:矩阵数据输出显示的函数,将矩阵元素一一显示一在屏幕上
返回值:无
****************************************/
void printmatrix(mytype * Mint mint nchar *name)
{
int ij;
for(i=0;i {
for(j=0;j {
printf(myprintmodeM[i*m+j]);
}
printf(“\n“);
}
}
void printmatrix2(mytype * Mint Nint mint nchar *name)
{
int ijk;
for(k=0i=0;k {
for(j=0;j {
printf(myprintmodeM[i+j]);
}
printf(“\n“);
}
}
/////////////////////////////////////////
/****************************************
函数名:Matrix_add_sub
参数:A,B为指向数组的指针,数组中存储着矩阵
C为指向数组的指针,用来存储运算结果
m长整型,是数组A、B、C所存矩阵的维数
add为布尔型变量,为true则C=A+B,为false则C=A-B
功能:根据add值对A、B进行加减运算并将结果存入C
返回值:无
****************************************/
void Matrix_add_sub(mytype * Amytype * Bmytype * Cint mint add)
{
long i;
for(i=0;i {
if(add==1)
C[i]=A[i]+B[i];
else
C[i]=A[i]-B[i];
}
}
/////////////////////////////////////////
/****************************************
函数名:GetHalfValue
参数:B为指向数组的指针,数组中存储着矩阵。其中B是指向m维矩阵中的一个元素。
A为指向数组的指针,用来接收B中的四分之一数据
m长整型,是数组B所指矩阵的维数
功能:从B所在位置向左和向右取矩阵的m/2维的子矩阵(子矩阵中包括B所指元素)并存入A
返回值:无
****************************************/
void GetHalfValue(mytype * Amytype * Bint m)
{
int ij;
for(i=0;i {
for(j=0;j {
A[i*m/2+j]=B[i*m+j];
}
}
}
/////////////////////////////////////////
/****************************************
函数名:UpdateHalfValue
参数:B为指向数组的指针,数组中存储着矩阵。其中B是指向m维矩阵中的一个元素。
A为指向数组的指针,存储着一个m/2维矩阵
m长整型,是数组B所指矩阵的维数
功能:把A矩阵所有元素存入从B所在位置向左和向右的m/2维的子矩阵(子矩阵中包括B所指元素)
返回值:无
****************************************/
void UpdateHalfValue(mytype * A
- 上一篇:图书管理系统C++65062
- 下一篇:mfc实现多线程工程代码和线程进程查看软件
相关资源
- mfc实现多线程工程代码和线程进程查
- 图书管理系统C++65062
- 用单片机控制ADC0804实现5V电压表程序
- opencv 正脸+左右侧脸全检测
- c++ 记事本 源码
- VC HOSTS 修改工具源码(MFC工程)
- c++头文件大全,很全哦,
- PCA和KPCA的Matlab和C++程序
- MFC中的多线程同步
- 操作系统抢占式短进程优先调度算法
- 超完美大学C语言期末复习题库,附答
- hmacSha256Test.rar
- 带流控制的串口通讯程序.rar
- 《C和指针》习题答案完整版
- C语言程序设计实现 雪花飘落
- 杨辉三角形(循环队列的应用C语言描
- 山东科技大学C++数据库课程设计源代
- c++做的仪表盘非常逼真哦
- c++ 连接sql server 数据库代码
- 缓冲池的模拟(C++)
- c语言编写的超级玛丽
- c++版的连连看解释很详细
- 激光雷达数据读取、显示、分割、直
- 国密SM4加密解密51单片机版C源程序.
- 单片机常用的C语言程序和继电器备用
- 旅游管理系统 C++ SQL
- CohenSutherland裁剪算法和中点分割裁剪
- Exceptional C++(中文版).侯捷-侯老师的
- 有效值计算 c语言
- C++实现获取win7系统端口号IP状态和P
评论
共有 条评论