Classe matrice en c++

mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
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

mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
SVP aide moi par ce que la date limite de donner les mini projet est le mercredi,merci
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
J'ai essai mais le problème reste le même.
0
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
je pence que le problème est la fonction afficher peut être.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
mondila Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   1
 
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