資源簡介
這是關于幾種特殊矩陣的壓縮存儲,包括上、下三角矩陣、對稱矩陣、正交矩陣
代碼片段和文件信息
#include
#include
#include
using?namespace?std;
typedef?int?elemtype;//定義矩陣的數據類型
void??UptriInput(elemtype?*aint?n)//上三角矩陣的存儲
{
int?ijk=0;
elemtype?e;
????if(n<=0)?
cout<<“輸入錯誤!“< else
{
cout<<“第i行??“<<“第j列“< ????for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
{??cout<<“??“< ???cin>>e;
???cout< ???????????a[k]=e;
???k++;
}
}
}
void?DotriInput(elemtype?*aint?n)//下三角的壓縮存儲
{
int?ijk=0;
elemtype?e;
????if(n<=0)?
cout<<“輸入錯誤!“< else
{
cout<<“第i列??“<<“第j行“< ????for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
{??cout<<“??“< ???cin>>e;
???cout< ???????????a[k]=e;
???k++;
}
}
}
void??SyeInput(elemtype?*aint?n)//對稱矩陣的輸入
{
int?ijk=0;
elemtype?e;
????if(n<=0)?
cout<<“輸入錯誤!“< else
{
cout<<“第i行??“<<“第j列“< ????for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
{??cout<<“??“< ???cin>>e;
???cout< ???????????a[k]=e;
???k++;
}
}
}
void?SyePrint(elemtype?*a?int?nint?m)//對稱矩陣(上下三角)的輸出
{
??int?ijk;
??switch(m)
??{?case?1:?
??????cout<<“該對稱矩陣為:“< ??????????for(i=1;i<=n;i++)
??{
??????for(j=1;j<=n;j++)
??{
??????if(i>=j)?k=(i-1)*i/2+j-1;
??else?k=(j-1)*j/2+i-1;
??cout< ??}
??????cout< ??}break;
??
??case?2:
??????cout<<“該上三角矩陣為:“< ??for(i=1;i<=n;i++)
??{
??????for(j=1;j<=n;j++)
??{
??????if(i>j)?
??cout<<“0“<<“??“;
??else?
??{???k=(i-1)*i/2+j-1;
??cout< ??}
??}
??????cout< ??}break;
??case?3:
??????cout<<“該下三角矩陣為:“< ??for(i=1;i<=n;i++)
??{
??????for(j=1;j<=n;j++)
??{
??????if(i>=j)?
??{?
??k=(j-1)*j/2+i-1;
??cout< ??}
??else?
??cout<<“0“<<“??“;
??}
??cout< ??break;
default:?cout<<“輸入錯誤!“;
??
}
}
void?SyeSearch(elemtype?*aint?nint?m)//對稱矩陣(上下三角)的查找
{
??int?ijk;
??cout<<“請輸入要查詢的行數為:“;
??cin>>i;
??cout<<“列數為:“;
??cin>>j;
??switch(m)
??{
??case?1:
?????if(i<=n&&j<=n)
?{
?????if(i>=j)??k=(i-1)*i/2+j-1;
?????????else?????k=(j-1)*j/2+i-1;
??cout< ?????cout<<“地址是:“< ?}
??????????else
?????cout<<“找不到你所要的數據!“< ??case?2:
??????if(i<=n&&j<=n)
??{
??????if(i>j)?
??cout<<“0“< ??else?
??{???k=(i-1)*i/2+j-1;
??cout< ??cout<<“地址為:“< ??}
??}
??else?
??cout<<“找不到你所要的數據!“< ??case?3:
??????if(i<=n&&j<=n)
??{
??if(i>=j)?
??{?
??k=(j-1)*j/2+i-1;
??cout< ??cout<<“地址為“< ??}
??else?
??cout<<“0“< ??}
??else
??cout<<“你輸入錯誤!“< ?default:?cout<<“輸入錯誤!“;
??}
}
void?SyeChang(elemtype?*aint?nint?m)//對稱矩陣(上下三角)的更換
{
int?ijk;
elemtype?e;
cout<<“請輸入你要改變的數據的行數:“;
cin>>i;
????cout<<“列數為:“;
評論
共有 條評論