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 -
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.
A voir également:
- Afficher matrice en c
- Afficher appdata - Guide
- Afficher google en page d'accueil - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
- Afficher mot de passe wifi android - Guide
8 réponses
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.
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.
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.
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").
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").
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.