Matrice carree c++
jacinthe87
Messages postés
204
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
SVP comment initialer une matrice carree dans un constructeur
??
SVP comment initialer une matrice carree dans un constructeur
template <class T>
Matrix<T>::Matrix(int d):dim(d){
matri=new T[dim][dim]; //erreur
}
??
4 réponses
Merci pour le lien, j'a corrigé l'erreur:
mais comment je dois le remplir?
comme ça :
template <class T>
Matrix<T>::Matrix(int l,int c):li(l),cc(c){
matri=new T[li*cc];
}
mais comment je dois le remplir?
comme ça :
Matrice<int> m(3,3); m[0][0]=8; //erreur
#include <stdio>
#include "matrice.h"
using namespace std;
int main(){
matrice A(3,3);
cin>>A;
cout<<A<<endl;
...
return 0;
}
demande à l'utilisateur d'entrer les valeurs pour la matrice carrée 3,3 et l'affiche.
Tu peux surchargé l'opérateur []
T* Matrix::operator[](int i){return &matri[i*li];}
ou
T* Matrix::operator[](int i){return &matri[i*cc];}
selon la convention choisi pour représenté la matrice. L'inconvénient de cette méthode c'est que si la deuxième accolade dépasse la dimension, il n'y aura pas d'erreur mais un décalage de ligne ou de colonne.
Si tu veux, tu peux aller voir sur mon site, il y a une classe matrice tout en template aussi, avec toutes les méthodes qui vont bien.
T* Matrix::operator[](int i){return &matri[i*li];}
ou
T* Matrix::operator[](int i){return &matri[i*cc];}
selon la convention choisi pour représenté la matrice. L'inconvénient de cette méthode c'est que si la deuxième accolade dépasse la dimension, il n'y aura pas d'erreur mais un décalage de ligne ou de colonne.
Si tu veux, tu peux aller voir sur mon site, il y a une classe matrice tout en template aussi, avec toutes les méthodes qui vont bien.