求编写一道大一大二水平的C语言程序
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 21:05:03
求编写一道大一大二水平的C语言程序
求编写一个大一水平的C语言程序.
要求如下:
1: 程序可以读取2个矩阵,A和B.
2.A和B的行列数是可以让用户自定义的.
3. 给A和B两个数据动态分配的空间(dynamicallyallocate space).
4.程序可以执行5个操作,分别是:
——A和B相加;
——A和B相减;
——A和B 相乘;
——把A矩阵转置(行变成列,列变成行);
——找出A矩阵的行列式(determinant)
5:系统会检测程序是否可以运行.比如:
——操作5的转置,如果A矩阵不是方阵,系统会显示:”error”
——A是1*3的矩阵,B也是1*3的矩阵,那他们相乘操作会显示“error”,也就是说相乘操作A的列于B的行应该是一样的.
——A矩阵式2*2,B矩阵式1*2,他们两个不能想加,所以显示“error”
(下面的图是一个示例)
6.每一个操作(加,减,乘,等那5个都需要用function,然后在程序中被叫出来).
7. 程序的output示例如下:
感激不尽.
可以的话请把程序的output截图也发过来.
求编写一个大一水平的C语言程序.
要求如下:
1: 程序可以读取2个矩阵,A和B.
2.A和B的行列数是可以让用户自定义的.
3. 给A和B两个数据动态分配的空间(dynamicallyallocate space).
4.程序可以执行5个操作,分别是:
——A和B相加;
——A和B相减;
——A和B 相乘;
——把A矩阵转置(行变成列,列变成行);
——找出A矩阵的行列式(determinant)
5:系统会检测程序是否可以运行.比如:
——操作5的转置,如果A矩阵不是方阵,系统会显示:”error”
——A是1*3的矩阵,B也是1*3的矩阵,那他们相乘操作会显示“error”,也就是说相乘操作A的列于B的行应该是一样的.
——A矩阵式2*2,B矩阵式1*2,他们两个不能想加,所以显示“error”
(下面的图是一个示例)
6.每一个操作(加,减,乘,等那5个都需要用function,然后在程序中被叫出来).
7. 程序的output示例如下:
感激不尽.
可以的话请把程序的output截图也发过来.
#include
#include
void enter(double **a,int *prow_a,int *pcol_a,double **b,int *prow_b,int *pcol_b);
void add(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void sub(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void multi(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void trans(double *a,int row_a,int col_a);
void dete(double *a,int row_a,int col_a);
int main()
{
double *a=NULL,*b=NULL;
int row_a,col_a,row_b,col_b,choice,flag=1;
while(flag)
{
printf(
"1 - Enter matrices A & B\n"
"2 - Add matrices\n"
"3 - Substract matrices\n"
"4 - Multiply matrices\n"
"5 - Transpose of A\n"
"6 - Determinant of A\n"
"7 - Quit program\n"
);
printf("Option:");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case 1:{enter(&a,&row_a,&col_a,&b,&row_b,&col_b);break;}
case 2:{add(a,row_a,col_a,b,row_b,col_b);break;}
case 3:{sub(a,row_a,col_a,b,row_b,col_b);break;}
case 4:{multi(a,row_a,col_a,b,row_b,col_b);break;}
case 5:{trans(a,row_a,col_a);break;}
case 6:{dete(a,row_a,col_a);break;}
case 7:{free(a);free(b);a=NULL;b=NULL;flag=0;break;}
default:break;
}
}
return 0;
}
void enter(double **a,int *prow_a,int *pcol_a,double **b,int *prow_b,int *pcol_b)
{
int i;
if(*a)
{
free(*a);
*a=NULL;
}
if(*b)
{
free(*b);
*b=NULL;
}
printf("Number of rows in A:");
scanf("%d",prow_a);
printf("Number of columns in A:");
scanf("%d",pcol_a);
if(*prow_a>0&&*pcol_a>0)
{
*a=(double *)malloc(sizeof(double)*(*prow_a)*(*pcol_a));
printf("Enter matrix data:\n");
for(i=0;i0&&*pcol_b>0)
{
*b=(double *)malloc(sizeof(double)*(*prow_b)*(*pcol_b));
printf("Enter matrix data:\n");
for(i=0;i
#include
void enter(double **a,int *prow_a,int *pcol_a,double **b,int *prow_b,int *pcol_b);
void add(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void sub(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void multi(double *a,int row_a,int col_a,double *b,int row_b,int col_b);
void trans(double *a,int row_a,int col_a);
void dete(double *a,int row_a,int col_a);
int main()
{
double *a=NULL,*b=NULL;
int row_a,col_a,row_b,col_b,choice,flag=1;
while(flag)
{
printf(
"1 - Enter matrices A & B\n"
"2 - Add matrices\n"
"3 - Substract matrices\n"
"4 - Multiply matrices\n"
"5 - Transpose of A\n"
"6 - Determinant of A\n"
"7 - Quit program\n"
);
printf("Option:");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case 1:{enter(&a,&row_a,&col_a,&b,&row_b,&col_b);break;}
case 2:{add(a,row_a,col_a,b,row_b,col_b);break;}
case 3:{sub(a,row_a,col_a,b,row_b,col_b);break;}
case 4:{multi(a,row_a,col_a,b,row_b,col_b);break;}
case 5:{trans(a,row_a,col_a);break;}
case 6:{dete(a,row_a,col_a);break;}
case 7:{free(a);free(b);a=NULL;b=NULL;flag=0;break;}
default:break;
}
}
return 0;
}
void enter(double **a,int *prow_a,int *pcol_a,double **b,int *prow_b,int *pcol_b)
{
int i;
if(*a)
{
free(*a);
*a=NULL;
}
if(*b)
{
free(*b);
*b=NULL;
}
printf("Number of rows in A:");
scanf("%d",prow_a);
printf("Number of columns in A:");
scanf("%d",pcol_a);
if(*prow_a>0&&*pcol_a>0)
{
*a=(double *)malloc(sizeof(double)*(*prow_a)*(*pcol_a));
printf("Enter matrix data:\n");
for(i=0;i0&&*pcol_b>0)
{
*b=(double *)malloc(sizeof(double)*(*prow_b)*(*pcol_b));
printf("Enter matrix data:\n");
for(i=0;i