Matrices creuses - C++ - Programmation
Marsh Posté le 28-02-2013 à 14:57:32
On fait pas les exos ici. Postes ton code, dis-nous où tu coinces et là, on t'aidera.
Marsh Posté le 28-02-2013 à 15:20:09
Je comprends bien que vous ne faites pas les exercices et ce n'était pas le but de ma demande.
Je bloque notamment sur le début de l'énoncé que je n'arrive pas à comprendre : On utilisera des vector de la classe STL comme paramètres de la classe.
Je ne comprends pas ce que signifie "les paramètres de la classe".
Si vous pouviez m'éclaircir ce point, je vous remercie par avance.
Voici un tout début de code :
#include <vector>
template<class T>
class matrix {
public :
matrix(); // Dois-je mettre des paramètres dans le constructeur par défaut ?
Marsh Posté le 28-02-2013 à 15:46:44
Bonjour !
Quelques réponses en vrac, qui présente ma compréhension :
* Les paramètres sont les attributs de la classe,
* Le constructeur par défaut, par définition, ne prend pas de paramètres.
Pour le reste, je vous laisse le soin de réfléchir à la façon dont vous allez stocker les rares valeurs non nulles de la matrice (selon moi, l'énoncé donne une bonne indication, même si je ne l'aurais pas fait comme ça ...), ensuite, le codage des différentes fonctions ne pose, a priori, aucun problème insurmontable.
Bonne continuation !
Marsh Posté le 01-03-2013 à 10:50:44
- un constructeur par défaut
Tu dois écrire un constructeur sans arguments permettant de créer une matrice avec une taille par défaut (par exemple 3*3) et de donner des valeurs "par défaut" aux nombres contenus dans la matrice (par exemple 0)
- un constructeur construisant la matrice identité
Constructeur avec 1 paramètre donnant la taille de la matrice et qui va la remplire la matrice avec des 1 en diagonale (matrice identité quoi ^^)
- un constructeur prenant en argument 3 tableaux de type row, col et val.
là je comprends pas trop quoi faire...
- un constructeur par copie
Il te permettra de créer une matrice ainsi :
Code :
|
- une méthode d'affichage
Pazrcours les vector de la matrice et présente correctement les chiffres
- une surcharge de l'opérateur d'égalite
http://fr.wikibooks.org/wiki/Progr [...] ffectation
Il va te permettre de faire :
Code :
|
- des fonctions d'accès aux valeurs de la matrice (éventuellement en surchargeant l'opérateur [])
Commence par écrire une fonction Get(int ligne, int colonne) qui renvoie le chiffre contenu dans la matrice à la position indiquée
Ensuite tu écrira une surcharge de l'opérateur [] qui appelera Get(...)
Bon courage
Marsh Posté le 01-03-2013 à 14:31:41
crom29 a écrit : |
C'est une matrice creuse, donc on ne passe que les valeurs qui ne sont pas nulles, réparties dans trois tableaux de même longueur (on aurait pu faire un tableau de structures, certes ...), qui contiennent respectivement, pour chaque élément non nul de la matrice, sa ligne, sa colonne et sa valeur.
Et, selon moi, cela donne une bonne indication sur la façon de stocker les rares valeurs non nulles de la future matrice.
En revanche, ce constructeur devrait prendre aussi en paramètre les dimensions de la matrice (ou la dimension si on ne considère que des matrices carrées).
Marsh Posté le 28-02-2013 à 12:54:16
Bonjour à tous, étant novice en l'art de la programmation C++ je suis confronté à ce problème suivant :
Definir une classe matrice permettant de gerer la "sparsité" des matrices. On
utilisera des vector de la classe STL comme paramètres de la classe. La classe
comprendra :
- un constructeur par défaut
- un constructeur construisant la matrice identité
- un constructeur prenant en argument 3 tableaux de type row, col et val.
- un constructeur par copie
- une méthode d'affichage
- une surcharge de l'opérateur d'égalite
- des fonctions d'accès aux valeurs de la matrice (éventuellement en surchargeant
l'opérateur [])
Je me permets de m'adresser à vous car je ne sais pas comment commencer, pourriez vous me suggérer quelques pointeurs vers les algorithmes à implémenter ou quelques pistes ?
En vous remerciant par avance !