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#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题