我正在创建一个函数,它将使用Gauss方法求解A*x=b。当我运行该函数时,会得到以下错误消息:
main.cpp:28:40:错误:数组下标的无效类型“双行”
sumi =( 1/Ai )* xj;
main.cpp:31:32:错误:数组下标的无效类型“双行”
十一=(1/ Ai )*(双综述);
#include <cmath>
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
void Gauss(int n, double * A, double * b, double * x)
{
double sum[20];
for (int i = 0 ; i < 20 ; i++)
{
sum[i] = 0;
}
for (int iter = 0 ; iter < n ; iter++)
{
for ( int i = 0 ; i < 20 ; i++ )
{
for ( int j = 0; j < 20 ; j++ )
{
if ( i != j )
sum[i] = ( 1/A[i][j] ) * x[j] ) ;
}
x[i] = ( 1 / A[i][i] ) * ( b[i] - sum[i] ) ;
}
}
return;
}
int main()
{
//defining matrix A
double A[20][20];
//defining vectors x and b
double x[20];
double b[20];
int i;
//for Matrix A
for (i = 0 ; i<20 ; ++i)
{
A[i][i]= 2.0;
A[i][i+1] = -1.0;
A[i+1][i] = -1.0;
}
//for vector x
for ( i = 0 ; i < 20 ; ++i)
{
x[i]=0;
}
//for vector b
for ( i = 0 ; i < 20 ; i++)
{
if (i == 1 || i == 19)
b[i]=1.0;
else
b[i]=0;
}
return 0;
}这是什么意思?
发布于 2016-09-26 03:12:25
您尝试将2D数组传递给接受double*的函数,但是2D数组不会将衰减为指针(甚至不会将指针衰减到指针)。正确的方法是将double (*A) [20]作为参数,即指针到数组-20倍.
https://stackoverflow.com/questions/39694143
复制相似问题