Calculatrice matricielle avec boost::shared_array

Signaler
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012
-
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012
-
le code ne genere aucune ereur mais
il rencotre un problem d'assertion
merci pour votre aide
voici mon code :
//fichier Matrix.h
#ifndef MATRIX_H
#define MATRIX_H
class Matrix{
         

          public  :
                    // Matrix(){}
                     Matrix(const int d);
                    ~Matrix(){};
                     float operator ()(int i,int j){return this->myshared_matrix[i*dim+j];}
                     void initialisation(); 
                     Matrix operator +(Matrix M1);
                     Matrix operator -(Matrix M1);
                     Matrix operator *(Matrix M1);
                     Matrix operator /(Matrix M1);
         friend ostream& operator <<(ostream& os,Matrix M);   
         private :
                     int dim,DIM;
                     boost::shared_array<float> myshared_matrix;         
                       
};
Matrix::Matrix(const int d){
          dim=d,DIM=d*d;           
          boost::shared_array<float> myshared_matrix(new float[DIM] );                  
          }
//Matrix::~Matrix(){delete [] myshared_matrix ; }
void Matrix::initialisation(){
               for(int i=0;i<dim;++i)
               for(int j=0;j<dim;++j)myshared_matrix[i*dim+j]=i*dim+j;}
                          
Matrix Matrix::operator +(Matrix M1){
               Matrix somm(dim);
               for(int i=0;i<DIM;++i)
               somm.myshared_matrix[i]=myshared_matrix[i]+M1.myshared_matrix[i];
               return somm;}
Matrix Matrix::operator -(Matrix M1){
               Matrix somm(dim);
               for(int i=0;i<DIM;++i)
               somm.myshared_matrix[i]=myshared_matrix[i]-M1.myshared_matrix[i];
               return somm;}
Matrix Matrix::operator *(Matrix M1){
               Matrix somm(dim);
               for(int i=0;i<DIM;++i)
               somm.myshared_matrix[i]=myshared_matrix[i]*M1.myshared_matrix[i];
               return somm;} 
Matrix Matrix::operator /(Matrix M1){
               Matrix somm(dim);
               for(int i=0;i<DIM;++i){
               if(M1.myshared_matrix[i]==0) M1.myshared_matrix[i]=1;
               somm.myshared_matrix[i]=myshared_matrix[i]/M1.myshared_matrix[i];}
               return somm;}               
               
ostream& operator <<(ostream& os,Matrix M){
         for(int i=0;i<M.dim;++i,os<<'\n')  
         for(int j=0;j<M.dim;++j) os<<M(i,j)<<'\t';
         return os;}             
 
#endif 
//fichier main.cpp
#include <cstdlib>
#include 
#include 
using namespace std;

#include "Matrix.h"
int main(int argc, char *argv[])
{
    Matrix M(2);
    M.initialisation();
    cout<<M<<endl; 
    system("PAUSE");
    return EXIT_SUCCESS;
}


2 réponses

Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
         
    //boost::shared_array<float> myshared_matrix(new float[DIM]);                  
    myshared_matrix = boost::shared_array<float>(new float[DIM]);   
Messages postés
13
Date d'inscription
samedi 18 avril 2009
Statut
Membre
Dernière intervention
12 janvier 2012

merci bcp @lucky92
thanks so much @lucky92 :)