2010-11-03 4 views
2

En fonction Determininant je continue à avoir une erreur ....ERREUR problème avec une fonction. C++

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

L'erreur est une erreur: « d » ne peut pas être utilisé en fonction. Des idées sur quoi de mal?

Répondre

3

Exactement ce que le message d'erreur dit: d est un double et vous pouvez » t l'appelle en tant que fonction. Peut-être que vous vouliez dire Determinant(temp, array_size - 1)?

+0

Merci c'est exactement ce qui n'allait pas. Il a juste fallu que quelqu'un d'autre le fasse remarquer. – Zud

2

Il est la fin de cette ligne:

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

Comme casablanca dit, voulez-vous dire cela ?:

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

Merci beaucoup. C'est ce que j'ai fait. – Zud

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

La clause d(temp, array_size - 1) est révélateur C++ pour appeler une fonction d.