Classe matrice en c++

Bonjour, je veux crée une classe matrice permettant de représenter des matrices carrées de dimension 3,dont les coefficients sont de type réel.elle doit comporter un constructeur à trois arguments,constructeur à un argument ,constructeur de recopie,opérateur d'affectation et une fonction amie permettant de fournir le vecteur correspondant au produit d'une matrice par un vecteur.

8 réponses

  1. SVP aide moi par ce que la date limite de donner les mini projet est le mercredi,merci
    0
    1. Contributeur
      en général, on veux bien aider, mais pas faire à ta place. Donc, pose des questions plus précises, ou soumet un code à corriger.
      0
      1. le code source qui j'ai utilisée est comme suit:
        matrice.h:
        class matrice
        {float M[3][3];
        public :
        matrice(float[],float[],float[]);
        float & operator [](int j);
        void afficher();
        };

        matrice.cpp:

        #include<iostream.h>
        #include"matrice.h"
        matrice::matrice(float a[3],float b[3],float c[3])
        {for(int j=0;j<3;j++)
        M[0][j]=a[j];
        M[1][j]=b[j];
        M[2][j]=c[j];
        }

        float & matrice::operator [](int j)
        {
        if(j<0 || j>3) j=0;
        return M[0][j];
        return M[1][j];
        return M[2][j];
        }

        void matrice::afficher()
        {cout<<"la matrice est suivant";
        for(int j=0;j<3;j++)
        cout<<"le M[0][j] est:"<< M[0][j]<<endl;
        cout<<"le M[1][j] est:"<< M[1][j]<<endl;
        cout<<"le M[2][j] est:"<< M[2][j]<<endl;
        }

        main.cpp:

        #include<iostream.h>
        #include"matrice.h"
        void main()
        {float a[3],b[3],c[3];
        cout<<"donner les elements de tableau a"<<endl;
        cout<<"donner les elements de tableau b"<<endl;
        cout<<"donner les elements de tableau c"<<endl;
        for(int j=0;j<3;j++)
        {cin>>a[j];
        cin>>b[j];
        cin>>c[j];
        }
        matrice A(float a[3],float b[3],float c[3]);
        A.afficher();
        }
        l'erreur qu'empêche l'exécution est le suivant:

        D:\mes projets\Matrice\main.cpp(14) : error C2228: left of '.afficher' must have class/struct/union type
        Error executing cl.exe.
        0
        1. Contributeur
          Salut.
          C'est mieux, dans l'ensemble c'est pas mal, quelques erreurs anodine et quelques graves.
          pour commencer léger, il faut déclarer "main" avec int et non void. Faire un return 0 à la fin.

          Il faut savoir qu'un return sort de la fonction, ainsi, tout ce qu'il y a après ne sera pas exécuté. Je dis ça pour operator[]. D'ailleurs cette fonction est obscure, il faut la retravailler. (pour moi le type de retour devrait être "float*" et non "float&")

          Pour finir, pour déclarer A, il ne faut pas spécifier comme tu l'as fait. C'est comme une fonction, il faut juste donner les variables :
          matrice A(a,b,c);
          en écrivant "float a[3]" au lieu de passer ce que tu crois, tu lui passes la quatrième valeur du tableau "a" (qui en plus n'existe pas) que tu cast en float (inutile ici car s'en est déjà un). Alors que le constructeur attend un tableau de float (ce qui est bien le type de "a").
          0
          1. Bonjour,
            j'ai fait tout ce que te ma dit.mais j'ai un problème lors d'exécution,il est comme suit
            donner les elements de tableau a
            donner les elements de tableau b
            donner les elements de tableau c
            1 2 3
            4 5 6
            7 8 9
            la matrice est comme suivant:
            1
            4
            7
            -1.07374e+008
            -1.07374e+008
            -1.07374e+008

            merci d'avance.
            0
            1. Contributeur
              normal, cin se termine une fois le retour chariot. Si tu veux rentrer tes éléments ainsi, essai
              for(int j=0;j<3;j++)
              {cin>>a[j]>>b[j]>>c[j];
              } 
              0
          2. J'ai essai mais le problème reste le même.
            0
            1. je pence que le problème est la fonction afficher peut être.
              0
              1. Contributeur
                non, je ne pense pas. Le plus simple, affiche a b et c avant toute chose. Si les 3 vecteurs sont bien rentrer, tu pourras voir si ça vient de la classe.
                0
            2. merci,j'ai trouvée où se trouve le problème j'ai oubliée de mettre les itération de boucle for dans un bloc.hhhh merci et encore merci*
              0