ОШИБКА проблема с функцией. C ++ - PullRequest
2 голосов
/ 03 ноября 2010

В функции Определитель я получаю сообщение об ошибке ....

#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» не может использоваться как функция. Любые идеи о том, что не так?

Ответы [ 3 ]

3 голосов
/ 03 ноября 2010

Именно то, что говорится в сообщении об ошибке: d - это double, и вы не можете вызвать его как функцию. Возможно, вы имели в виду Determinant(temp, array_size - 1)?

2 голосов
/ 03 ноября 2010
d += pow(-1.0,i) * original_matrix[0][i] * d(temp, array_size - 1);

Предложение d(temp, array_size - 1) говорит C ++ о вызове функции d.

2 голосов
/ 03 ноября 2010

Это конец этой строки:

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

Как сказал Касабланка, вы это имеете в виду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...