首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gauss函数中的无效类型

Gauss函数中的无效类型
EN

Stack Overflow用户
提问于 2016-09-26 03:07:44
回答 1查看 87关注 0票数 0

我正在创建一个函数,它将使用Gauss方法求解A*x=b。当我运行该函数时,会得到以下错误消息:

main.cpp:28:40:错误:数组下标的无效类型“双行”

sumi =( 1/Ai )* xj;

main.cpp:31:32:错误:数组下标的无效类型“双行”

十一=(1/ Ai )*(双综述);

代码语言:javascript
复制
#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; 
}

这是什么意思?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 03:12:25

您尝试将2D数组传递给接受double*的函数,但是2D数组不会将衰减为指针(甚至不会将指针衰减到指针)。正确的方法是将double (*A) [20]作为参数,即指针到数组-20倍.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39694143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档