(求一个程序)编写程序:输入一个正整数n(0<=n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,输出“yes”同时输出此矩阵,否则,输出“no”,(上三角矩阵即主对角线以下的元素都为0)
(求一个程序)编写程序:输入一个正整数n(0<=n<=6)和n阶方阵a中的元素,如果a是上三角矩阵,输出“yes”同时输出此矩阵,否则,输出“no”,(上三角矩阵即主对角线以下的元素都为0)
这个是我写的,看看能不能帮到你的忙。
#include<stdio.h>
#define sz 10
int main()
{
int n,i,j,a[sz][sz],flag;
printf("input n: ");
scanf("%d",&n);
printf("input a[][]: \n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<i;j++)
if(a[i][j]==0)
flag=1;
else
{flag=0;break;}
if(flag==1)
{
printf("yes!\n");
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
else
printf("no!\n");
return 0;
}
给你一个我自己写的矩阵运算函数,你自己看看吧,修改一下,提出你所需要的东西就好了
这种思路,希望能帮到你!
// matrix.h
class matrix { double ma[100][100]; int row; int column; public: void set_matrix(); //初始化矩阵 friend matrix operator +(matrix &a,matrix &b); //重载“+”矩阵运算 void display(); //打印矩阵 friend matrix operator *(matrix &a,matrix &b); //重载“*”矩阵运算 friend matrix operator *(int a,matrix &b); //矩阵的数乘运算 void shangsanjiao(); //判断是否是上三角矩阵 };
//matrix.cpp
#include"matrix.h" #include<iostream> using namespace std;
void matrix::set_matrix() { cout<<"行数:"; cin>>row; cout<<"列数:"; cin>>column; cout<<"请输入"<<row*column<<"个数据:"; int cnt=0; for(int i=0;i<row;i++) for(int j=0;j<column;j++) { cin>>ma[i][j]; cnt++; if(cnt!=row*column) cout<<"你还需要输入"<<(row*column-cnt)<<"个数据:"; }
}
matrix operator +(matrix &a,matrix &b) { matrix c; if(a.row!=b.row||a.column!=b.column) cout<<"不是同型矩阵,无法相加!"<<endl; else c.row=a.row;c.column=a.column; for(int i=0;i<c.row;i++) for(int j=0;j<c.column;j++) c.ma[i][j]=a.ma[i][j]+b.ma[i][j]; return c; }
void matrix::display() { for(int i=0;i<row;i++) { for(int j=0;j<column;j++) cout<<ma[i][j]<<" "; cout<<endl; } }
matrix operator *(matrix &a,matrix &b) { matrix c; if(b.row==a.column) { c.row=a.row; c.column=b.column; for(int i=0;i<c.row;i++) { for(int j=0;j<c.column;j++) { int temp=0; for(int s=0,t=0;s<a.column&&t<b.row;s++,t++) temp+=a.ma[i][s]*b.ma[t][j]; c.ma[i][j]=temp; } } } else cout<<"无法相乘!"<<endl; return c; }
matrix operator *(int a,matrix &b) { matrix c; c.row=b.row;c.column=b.column; for(int i=0;i<c.row;i++) for(int j=0;j<c.column;j++) c.ma[i][j]=a*b.ma[i][j]; return c; }
void matrix::shangsanjiao() { if(column==row) { int m=1; for(int i=0;i<row;i++) { m=0; for(int j=i;j<column;j++) if(ma[i][j]!=0) m=1; continue; } if(m==1) cout<<"yes!"; else cout<<"no!"; } }
//main.cpp
int main() { matrix a,b; cout<<"请输入a的";
a.set_matrix(); a.display(); a.shangsanjiao();
a.set_matrix(); return 0; }