buaaljx 2016-10-02 15:09 采纳率: 0%
浏览 1254

C++中返回数组供函数调用

如下是我编写的高斯顺序消元法程序,input函数是我自定义的,希望输入一个矩阵,然后给Gauss和zg matrix函数调用,但是输入的矩阵不知如何传递过去。
#include //包含输入输出函数
#include //包含动态内存分配函数。
#define n 3
float input()//输入矩阵函数************出问题的地方
{
float **a; //定义二维指针。
float *b;//定义一维指针。
int i,j;

    a = (float **) malloc(sizeof(float *) *n);//申请一组一维指针空间。

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

    a[i] = (float *)malloc(sizeof(float) *n); //对于每个一维指针,申请一行数据的空间。
    b = (float *)malloc(sizeof(float) *n);   
printf("请输入系数矩阵:\n");
    for(i = 0; i < n; i ++)
{
    for(j = 0; j < n; j ++)
    {
        printf("a[%d][%d]: ", i+1, j+1);
        scanf("%f",&a[i][j]);//输入第i行第j列的数据。 
    }
}return a;
printf("请输入右端项数组:\n"); 
for(i=0; i<n; i++) 
{ 
    printf("b[%d]: ", i+1); 
    scanf("%f", &b[i]); 
}return b;

//释放内存
for(i = 0; i < n; i ++)
    free(a[i]);
free(a);free(b);

}
int Gauss(float a[n][n],float b[n])//高斯消元过程
{
int i,j,k,flag=1;

float t;
for(i=0;i {
if(a[i][i]==0)
{
flag=0;
break;
}
else
{
for(j=i+1;j {
t=-a[j][i]/a[i][i];
b[j]=b[j]+t*b[i];
for(k=i;k a[j][k]=a[j][k]+t*a[i][k];
}
}
}
return (flag);
}
void zg_matrix(float a[n][n],float b[n])//输出增广矩阵
{
int i,j;
for(i=0;i {
for(j=0;j {
printf("%10f",a[i][j]);
}
printf(" | ");
printf("%10f\n",b[i]);
}
}
void main()
{
float input();
float x[n]={0};
int i,j,flag;
zg_matrix(a,b);
flag=Gauss(a,b);
if(flag==0)
printf("Gauss Method Fail!!!\n");//求解
else
{
x[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;i>=0;i--)
{
x[i]=b[i];
for(j=i+1;j<n;j++)
x[i]=x[i]-a[i][j]*x[j];
x[i]=x[i]/a[i][i];
}
for(i=0;i<n;i++)
printf("x%d=%11.7f\n",i+1,x[i]);
}
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-10-02 15:25
    关注

    int Gauss(float a[n][n],float b[n])
    这里定义成指针
    int Gauss(float * a, float *b, int n)

    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统
  • ¥15 快手联盟怎么快速的跑出建立模型