Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2825 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Matrices creuses

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Matrices creuses

n°2177955
fr3ak95
Posté le 28-02-2013 à 12:54:16  profilanswer
 

Bonjour à tous, étant novice en l'art de la programmation C++ je suis confronté à ce problème suivant :  
 
Defi nir 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 !

mood
Publicité
Posté le 28-02-2013 à 12:54:16  profilanswer
 

n°2177972
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2013 à 14:57:32  profilanswer
 

On fait pas les exos ici. Postes ton code, dis-nous où tu coinces et là, on t'aidera.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2177976
fr3ak95
Posté le 28-02-2013 à 15:20:09  profilanswer
 

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 ?

n°2177994
Farian
Posté le 28-02-2013 à 15:46:44  profilanswer
 

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 !

n°2178105
crom29
Posté le 01-03-2013 à 10:50:44  profilanswer
 

- 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 :
  1. Matrice matA(3);//création d'une matrice 3*3 identité
  2. Matrice matB(matA);//matB est copiée et mise dans matB


 
- 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 :
  1. Matrice matA(3);//création d'une matrice 3*3 identité
  2. Matrice matB;//Le constructeur par défaut est appelé
  3. matB = matA;//La matA est recopiée dans la matB


 
 
- 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 ;)

Message cité 1 fois
Message édité par crom29 le 01-03-2013 à 10:51:44

---------------
Mods: HAF922 | Shinobi XL White    GitHub     Admin de La Colère d'Aurile, serveur RP-Action Neverwinter Nights 2
n°2178154
Farian
Posté le 01-03-2013 à 14:31:41  profilanswer
 

crom29 a écrit :


- un constructeur prenant en argument 3 tableaux de type row, col et val.
là je comprends pas trop quoi faire...
 


 
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).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Matrices creuses

 

Sujets relatifs
programmation en C: les matricesDécomposer une image en plusieurs matrices de 8*8
effectuer des opérations sur les matrices...Probléme avec les matrices
WCF et les matricesaide algo sur les matrices
aide algo sur les matrices[C] Opérations avec des matrices
Matlab matricesINFO : matrices creuses
Plus de sujets relatifs à : Matrices creuses


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR