Mon programme se compose de deux classes. Le premier crée un tableau 2D et le remplit avec une entrée utilisateur. La première classe fonctionne correctement, et quand je l'appelle en main, elle est capable de créer et d'imprimer un tableau 2D. Cependant, j'essaye de passer un pointeur à ce tableau 2D à la deuxième fonction pour calculer le déterminant de la matrice. Cependant, mon programme continue à s'écraser après l'appel de la fonction déterminante. Pourquoi suis-je incapable de multiplier, ajouter ou soustraire ces éléments de tableau?Calcul du déterminant d'un pointeur sur un tableau 2D en C++
Voici le fichier de mise en œuvre de la classe déterminant:
#include <iostream>
#include "det.hpp"
using std::cout;
using std::endl;
Det::Det() {
};
int Det::determinant(int **pointerToArray, int arraySize) {
int determinant;
cout << "Calculating the determinant..." << endl;
if (arraySize == 2) {
determinant = (pointerToArray[0][0] * pointerToArray[1][1]) -
(pointerToArray[1][0] * pointerToArray[1][0]);
} else if (arraySize == 3) {
determinant = (pointerToArray[0][0] * ((pointerToArray[1][1] * pointerToArray[2][2]) -
(pointerToArray[1][2] * pointerToArray[2][1]))) -
(pointerToArray[0][1] * ((pointerToArray[1][0] * pointerToArray[1][1]) -
(pointerToArray[1][2] * pointerToArray[2][0]))) +
(pointerToArray[0][2] * ((pointerToArray[1][0] * (pointerToArray[2][1]) -
(pointerToArray[1][1] * pointerToArray[2][0])));
} else {
return determinant;
};
};
Voici comment est la partie de la principale que je fais appel à la fonction:
//this is the original object
Matrix* point = new Matrix();
//this is where I retrieve the data from the first function
int * tempPoint = point->readMatrix(newArray, squareSize);
/*this is where I call the determinant with
a pointer to the original array as a parameter*/
calculate.determinant(&tempPoint, squareSize);
Pourquoi? Perdre la classe et transformer 'determinant' en une [fonction libre] (http://stackoverflow.com/questions/4861914/what-is-the-meaning-of-the-term-free-function-in-c). Moins de bruit, moins de bruit et moins de frais généraux. Sur repenser, pourquoi ne pas déplacer déterminant dans la classe Matrix? Cela ressemble à une opération logique à effectuer sur une matrice. – user4581301
C'était ma première pensée en fait. C'est une tâche scolaire et les exigences spécifient deux fichiers d'en-tête, deux fichiers d'implémentation, ainsi qu'un fichier principal. – csdavido
Intéressant. Vous pourriez vouloir en parler avec l'instructeur.Ils pourraient avoir quelque chose de sournois à l'esprit, mais ils pourraient aussi vous apprendre à écrire du code comme un idiot. Soyez bon de savoir lequel vous pouvez donc ajuster vos attentes d'apprentissage et le style de codage en conséquence. – user4581301