导航:首页 > 源码编译 > c语言实现矩阵隐藏算法

c语言实现矩阵隐藏算法

发布时间:2023-02-15 02:07:51

1. 用C语言编写:特殊矩阵的压缩存储算法的实现(对称矩阵、三角矩阵、对角矩阵)

可以用十字链表 三元组表 或者其他 都可以对特殊矩阵进行压缩存储

2. C语言程序设计方案!!二维数组应用 矩阵算法 求高人

#include <stdio.h>
void input_data(int *l,int *r,int data[100][100])
{ int i,j,k;
printf("输入矩阵行数:");
scanf("%d",l);
printf("输入矩阵列数:");
scanf("%d",r);
printf("按行输入数据,数据间用空格间隔:\n");
for(i=0;i<*l;i++)
for(j=0;j<*r;j++)
scanf("%d",&data[i][j]);
}

int add_subtra(int m1[100][100],int l1,int r1,
int m2[100][100],int l2,int r2,char m,int rm[100][100])
{ int i,j;
if(l1!=l2 || r1!=r2)
{ printf("矩阵数据错误1.\n"); return; }
if(m=='+')
for(i=0;i<l1;i++)
for(j=0;j<r1;j++)
rm[i][j]=m1[i][j]+m2[i][j];
else
for(i=0;i<l1;i++)
for(j=0;j<r1;j++)
rm[i][j]=m1[i][j]-m2[i][j];
}

int mul(int m1[100][100],int l1,int r1,
int m2[100][100],int l2,int r2,int m[100][100])
{ int i,j,k;
if(l1!=r2 )
{ printf("矩阵数据错误2.\n"); return; }
for(i=0;i<l1;i++)
for(j=0;j<r2;j++)
{ m[i][j]=0;
for(k=0;k<r1;k++)
m[i][j]+=m1[i][k]*m2[k][j];
}
}

int output(int m[100][100],int l,int r)
{ int i,j;
for(i=0;i<l;i++)
{ for(j=0;j<r;j++)
printf("%3d ",m[i][j]);
printf("\n");
}
}

int main()
{ int d1[100][100],d2[100][100],d[100][100];
int l1,r1,l2,r2;

int i,j,k;
char mark[2];
printf("输入第一个矩阵数据:\n");
input_data(&l1,&r1,d1);
printf("输入的第一个矩阵:\n");
output(d1,l1,r1);
printf("输入第二个矩阵数据:\n");
input_data(&l2,&r2,d2);
printf("输入的第二个矩阵:\n");
output(d2,l2,r2);
printf("指定运算符(+/-/*):");
scanf("%s",mark);
while(mark[0]!='+' && mark[0]!='-' && mark[0]!='*')
{ printf("符号错误请重新输入(+/-/*):");
scanf("%s",mark);
}
switch(mark[0])
{ case '+':
case '-': add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d); break;
case '*': mul(d1,l1,r1,d2,l2,r2,d); break;
}
//output(d1,l1,r1);
//output(d2,l2,r2);
printf("运算:%c,计算结果为:\n",mark[0]);
output(d,l1,r2);
system("pause");
}

两个运算矩阵可以是大小不同的, 输出结果由被乘数矩阵的行和乘数矩阵的列决定,
你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。

3. C语言实现DES算法中各种矩阵变换

首先说下:楼主有找到DES算法了吗?还是打算自己写?是这样的?大家一般都是使用开源的OPNSSL,这个是好东西啊,里边包含了全世界知名的加密算法,而且是免费的。里边就有你说点这些小方法。只要下载源码,自己编译,就能有自己的所有加密源码了。

4. 矩阵运算的c语言实现

算法应该没有问题,错在下面:
1、没有对矩阵pc分配内存。
2、mul( )中for(i=0;i>ai;i++)打错了,将 i>ai 改为 i<ai

5. 关于下面矩阵查找用c语言实现算法 最好加入必要注释

O(n)的算法肯定不行,最差也是O(2n),附上代码~

你题目抄对了没

#include<stdio.h>

intIsInArray(int*a,intline_count,intvalue)
{
intfirst;
intlast;
for(inti=0;i<line_count;++i)
{
first=*(a+i*line_count);
last=*(a+i*line_count+line_count-1);

printf("%d ",i);

//valueintherangeofthisline
if(value>=first&&value<=last)
{
for(intj=0;j<line_count;++j)
{
//getvalue
if(*(a+i*line_count+j)==value)
{
return0;
}
}
}
}
return-1;
}


intmain()
{
inta[4][4]={{1,2,3,4},{2,3,4,5},{5,6,7,8},{10,11,13,14}};
int*p=&a;
intres=IsInArray(p,4,10);

if(res==0)
{
printf("found. ");
}
else
{
printf("notfound. ");
}
}

6. !!!跪求C语言实现矩阵运算(加,减,乘、求逆、转置)

1、首先打开vs2015(其他版本也可以),新建一个Windows Form窗体程序或者控制台都可以。

7. c语言矩阵怎么写

方法1:直接定义10*10的数组,读取全部数据,再根据选择的行列数打印输出部分数据。

方法2:通过文件流指针的移动,跨过不需要的内容。(这里控制文件流指针可利用ftell和fseek函数来移动指定字节数)我是利用fscanf读取需要的内容,遇到需要跳行就用fgets来跳过。(注意常量参数根据自己需求修改)。

说明:边读取边打印输出,就不需要变量存储。我的代码是把读取出来的内容存放在三维数组中(文件内容你没指定,如是单纯数字,二维数组即可,我是作为字符串处理,故用三维数组。),数组是根据实际大小,动态申请,写成两个独立函数。

下面是代码:

#include <stdio.h>

#include <string.h>

#include <malloc.h>

#define MAXR 10//文件中矩阵最大行

#define MAXC 10//文件中矩阵最大列

#define MS 3//矩阵中元素字符串最大字符数(包含结束符号,不可小于实际内容)

#define MBUF 100//文件中一行最大字符数,可设置大一点

char ***getMem(int r,int c,int len);//动态申请一个三维数组

void freeMem(char ***datas,int r,int c);//释放数组空间

void showDatas(char ***datas,int r,int c);//打印输出结果

int main()

{

int r=MAXR+1,c=MAXC+1,i=0,j=0;

char ***datas=NULL,str[3],buf[MBUF];

FILE *fp=NULL;

printf("请输入要获取的行数和列数: ");

while(r<0 || r>MAXR || c<0 || c>MAXC)scanf("%d%d",&r,&c);

datas=getMem(r,c,MS);

fp=fopen("C:\test.data","r");

if(!fp) return 1;

while(fscanf(fp,"%s",str)!=-1)

{

if(i<c) strcpy(datas[j][i],str),i++;

if(i==c)

{

if(!fgets(buf,sizeof(buf),fp)) break;

i=0,j++;

}

if(j==r) break;

}

showDatas(datas,r,c);

freeMem(datas,r,c);

return 0;

}

void showDatas(char ***datas,int r,int c)

{

int i,j;

for(i=0;i<r;i++,printf(" "))

for(j=0;j<c;j++)

printf("%s ",datas[i][j]);

printf(" ");

}

void freeMem(char ***datas,int r,int c)

{

int i,j;

if(!datas)

{

for(i=0;i<r;i++,free(datas[i]))

for(j=0;j<c;j++)

free(datas[i][j]);

free(datas);

}


}

char ***getMem(int r,int c,int len)

{

int i,j;

char ***datas=NULL,**dr=NULL;

datas=(char ***)malloc(sizeof(char **)*r);

if(!datas) return NULL;

for(i=0;i<r;i++)

{

dr=(char **)malloc(sizeof(char *)*c);

if(!dr) return NULL;

else

{

for(j=0;j<c;j++)

{

dr[j]=(char *)malloc(sizeof(char)*len);

if(!dr[j]) return NULL;

}

datas[i]=dr;

}

}

return datas;

}

8. C语言设计稀疏性矩阵,并进行算法操作

稀疏矩阵的实现可以使用三元组或者十字链表,n维数组如果数据量比较大会很浪费空间的.
如果使用三元组的话前两元为坐标,第三元为数据:
typedef struct Triplet
{
int i,j; // 该非零元的行和列下标
int e; // 非零元素值
}

十字链表麻烦一些,如下:
typedef struct OLNode
{
int i,j; // 该非零元的行和列下标
int e; // 非零元素值
OLNode *right,*down; // 该非零元所在行表和列表的后继链域
}OLNode,*OLink;

typedef struct
{
OLink *rhead,*chead; // 行和列链表头指针向量基址
int mu,nu,tu; // 稀疏矩阵的行数、列数和非零元个数
}CrossList;//T1

关于稀疏矩阵的运算,网上有很多解释的

9. 如何实现用c语言或c++来编写矩阵2范数的算法,矩阵为n阶的

矩阵A的2范数就是 A的转置乘以A矩阵特征根 最大值的开根号
写一个矩阵,n阶矩阵就是n是变量,等待输入,矩阵的话最简单的就是用一个固定长度的二维数组来存。
然后根据公式分别写对应的函数再调用不就行了。

阅读全文

与c语言实现矩阵隐藏算法相关的资料

热点内容
算法设计与分析英文版 浏览:910
java程序员加班吗 浏览:141
编译检查的是什么错误 浏览:405
加密兔f码生成器免费 浏览:292
思科路由器命令明文加密 浏览:171
方舟生存进化服务器如何改名字 浏览:892
央行数字货币app怎么注册 浏览:431
51单片机显示时间 浏览:770
我的世界网易版怎么压缩地图 浏览:682
qq小程序云服务器和 浏览:740
方舟服务器怎么玩才好玩 浏览:557
单片机的部件 浏览:621
编译原理遍的过程 浏览:260
python读取json字符串 浏览:72
ubuntu1404安装php 浏览:635
lua能编译吗 浏览:118
思仙怎么看服务器 浏览:660
php微信图片防盗链 浏览:800
安卓1怎么读音 浏览:297
农业app怎么开通快捷支付 浏览:913