導航:首頁 > 源碼編譯 > 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語言實現矩陣隱藏演算法相關的資料

熱點內容
php微信圖片防盜鏈 瀏覽:795
安卓1怎麼讀音 瀏覽:286
農業app怎麼開通快捷支付 瀏覽:908
pythonredisdict 瀏覽:382
如何攻擊別人網賭伺服器 瀏覽:878
隱私與應用加密的圖案密碼 瀏覽:34
陳情令王一博解壓 瀏覽:35
c編譯器使用說明 瀏覽:703
鄭州前端程序員私活有風險嗎 瀏覽:10
小型螺桿機壓縮機 瀏覽:516
成人解壓最好的方法 瀏覽:48
最小製冷壓縮機 瀏覽:490
xampp支持python 瀏覽:367
深圳周立功單片機 瀏覽:61
圓上點與點之間角度演算法 瀏覽:869
怎麼知道微信關聯了哪些app 瀏覽:702
android事件驅動 瀏覽:888
簽約大屏系統源碼 瀏覽:808
安卓系統怎麼轉入平板 瀏覽:429
安卓手機相機怎麼提取文字 瀏覽:219