【问题标题】:ERROR problem with a function. C++函数的错误问题。 C++
【发布时间】:2010-11-03 04:00:28
【问题描述】:

在函数行列式中我不断收到错误....

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

const int maxsize = 10;

ifstream fin;
ofstream fout;

void transpose (double omatrix[][maxsize],double tmatrix [][maxsize], int array_size)
{
    for(int i = 0; i < array_size; i++)
    {
        for(int j = 0; j < array_size; j++)
        {
            tmatrix[j][i] = omatrix[i][j];
        }


    }
}

void sub (double omatrix[][maxsize], double smatrix[][maxsize], int array_size, int i, int j)
{
    int counter1 = 0, counter2 = 0;

    for (int a = 0; a < array_size; a++)
    {
        if (a != i)
        {
            for (int b = 0; b < array_size; b++)
            {
                if (b != j)
                {
                    smatrix[counter1][counter2] = omatrix[a][b];
                    counter2++;
                }
            }
            counter1++;
        }
    }
}

double Determininant(double original_matrix[][maxsize], int array_size)
{
    if(array_size == 1)
        return original_matrix[0][0];
    else if(array_size == 2)
        return original_matrix[0][0] * original_matrix[1][1] - original_matrix[0][1] * original_matrix[1][0];
    double d = 0.0;
    double temp[maxsize][maxsize];
    for(int i = 0; i < array_size; i++)
    {
        sub (original_matrix,temp,array_size, 0, i);
        d += pow(-1.0,i) * original_matrix[0][i] * d(temp, array_size - 1);
    }
    return d;
}

void print (const double m[][maxsize], int array_size)
{
    for(int i = 0; i < array_size; i++)
            {
                for(int j = 0; j < array_size; j++)
                {
                    fout << m[i][j] << "  ";
                }
                fout << "\n";
            }
            fout << "\n";
}

错误是错误:'d' 不能用作函数。 有什么想法吗?

【问题讨论】:

    标签: c++ arrays function


    【解决方案1】:

    正是错误消息所说的内容:ddouble,您不能将其作为函数调用。也许你的意思是Determinant(temp, array_size - 1)

    【讨论】:

    • 谢谢,这正是问题所在。只是需要别人指出来。
    【解决方案2】:

    这是这一行的结尾:

    d += pow(-1.0,i) * original_matrix[0][i] * d(temp, array_size - 1);
    

    正如卡萨布兰卡所说,你是这个意思吗?:

    d += pow(-1.0,i) * original_matrix[0][i] * Determinant(temp, array_size - 1);
    

    【讨论】:

      【解决方案3】:
      d += pow(-1.0,i) * original_matrix[0][i] * d(temp, array_size - 1);
      

      子句 d(temp, array_size - 1) 告诉 C++ 调用函数 d。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 2012-05-08
        • 2017-11-26
        相关资源
        最近更新 更多