Matrice carree c++

Fermé
jacinthe87 Messages postés 194 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 15 juillet 2010 - 16 juin 2009 à 23:00
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 juin 2009 à 08:53
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 mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
16 juin 2009 à 23:02
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 mercredi 4 février 2009 Statut Membre Dernière intervention 15 juillet 2010 3
16 juin 2009 à 23:28
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 mardi 16 juin 2009 Statut Membre Dernière intervention 19 juin 2009 20
17 juin 2009 à 08:01
#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 vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
17 juin 2009 à 08:53
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