Matrice carree c++

jacinthe87 Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
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

FlorianWebmastering Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   20
 
Ah la programmation objet je vous envoi un lien vers mon site.
Avez vous reçu mon Message privé?
0
jacinthe87 Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci pour le lien, j'a corrigé l'erreur:
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
0
FlorianWebmastering Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   20
 
#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.

0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0