retourner un tableau 2d d une fct - C++ - Programmation
Marsh Posté le 07-03-2015 à 20:10:53
Salut, difficile de bien comprendre ton problème.
A titre d'information, tu peux éditer ton message avec des balises de code <cpp></cpp> entre crochets [] ça aide la lecture et augmente la probabilité de réponse.
Si ta matrice est toujours de dimensions 3x3, tu peux utiliser le code suivant :
Code :
|
Marsh Posté le 07-03-2015 à 20:17:58
Je pense que ton problème consiste à passer un tableau 2D comme argument d'une fonction, tu peux faire des recherches google sur ce sujet.
Il en n'est pas moins que le code ci dessus est dégueulasse, il faudrait :
* soit créer des objets matrice et vecteurs
* soit utiliser des objets matrices et vecteurs en prenant n'importe quelle bibliothèque d'algèbre linéaire -- par ex BLAS --
Marsh Posté le 07-03-2015 à 20:36:20
complètement à l'arrache en mode fatigué:
class mat33 {
double m_data[3][3]; /// pod
public:
operator double[3][3] () {
return m_data;
}
};
mat33 machin() {
mat33 value; // nrvo
// truc fait avec value
return value;
}
void pouet( double mat[3][3] ){
// autre truc fait avec mat
}
void bidule() {
mat33 space = machin();
pouet( space ); // l'operator de cast devrait être appellé
}
si le compilo peut faire du link-time optimization, il fera un nrvo:
void machin( mat33 & value ) {
// truc fait avec value
}
de manière à pas faire de copie pour rien.
pfff, j'ai dit de la merde, oublie
Marsh Posté le 06-03-2015 à 11:27:23
bonjour,
j essais d avoir une matrice 3*3 comme return d une fct mais je n y arrive pas et c est important que ca soit ca parseque je suis en train de reecrire un code python en c++ c est difficile de tout changer apres voila ce que j ai esseye de faire
float** toMatrix() {
float mat[3][3]; float a ; float b ; float c ; float d ;
a=R; b=I; c=J; d=K;
mat[0][0]= a*a+b*b-c*c-d*d; mat[0][1]= 2*(b*c-a*d); mat[0][2]= 2*(a*c+b*d);
mat[1][0]= 2*(b*c+a*d); mat[1][1]= a*a-b*b+c*c-d*d; mat[1][2]=2*(c*d-a*b);
mat[2][0]= 2*(b*d-a*c); mat[2][1]=2*(a*b+c*d); mat[2][2]=a*a-b*b-c*c+d*d;
return mat;
}
et apres j ai ca " error: cannot convert 'float (*)[3]' to 'float**' in return return mat;"
est ce que quelqu un pourrais m aider ?
merci