Zud
Zud

Reputation: 4497

ERROR problem with a function. C++

In function Determininant i keep getting an error....

#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";
}

The error is error: 'd' cannot be used as a function. Any ideas on whats wrong?

Upvotes: 2

Views: 85

Answers (3)

user208608
user208608

Reputation:

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

The clause d(temp, array_size - 1) is telling C++ to call function d.

Upvotes: 2

casablanca
casablanca

Reputation: 70731

Exactly what the error message says: d is a double and you can't call it as a function. Perhaps you meant Determinant(temp, array_size - 1)?

Upvotes: 3

AlcubierreDrive
AlcubierreDrive

Reputation: 3664

It's the end of this line:

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

As casablanca said, do you mean this?:

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

Upvotes: 2

Related Questions