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

  FORUM HardWare.fr
  Programmation
  C++

  Cours EDUCATEL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cours EDUCATEL

n°1359033
Dritzz35
Posté le 03-05-2006 à 20:55:12  profilanswer
 

Bonjour,
que tout le monde se rassure, je ne demande pas qu'on me fasse mes devoirs (manquerait plus que ça au prix que je paye).
Je suis dans la dernière ligne droite de mes cours et seul un devoir me pose soucis. Je vais essayer d'être clair et concis.
 
Il m'est demandé d'ajouter une fonction void determinant() const; à une classe Matrice. Jusque là pas de problème. Je dois pouvoir tester ma fonction avec le bout de code suivant :

Code :
  1. void initialise(Matrice &mat)
  2. {
  3. Matrice::Vecteurs& m(mat.elements);
  4. m.clear();
  5. m.insert(m.begin(),4,Matrice::Vecteur(4,0));
  6. mat.rows=mat.cols=4;
  7. m[0][0]=0;m[1][0]=1;m[2][0]=1;m[3][0]=2;
  8. m[0][0]=3;m[1][1]=2;m[2][1]=0;m[3][1]=1;
  9. m[0][0]=0;m[1][2]=1;m[2][2]=2;m[3][2]=4;
  10. m[0][0]=2;m[1][3]=3;m[2][3]=2;m[3][3]=0;
  11. }
  12. void main(void)
  13. {
  14. Matrice A;
  15. initialise(A);
  16. cout<<"A = "<<endl;
  17. A.affiche();
  18. cout<<"Det(A) = "<<A.determinant()<<endl;
  19. }


Pas franchement compliqué : il suffit de recopier... quoique, je me demande si la ligne mat.rows=mat.cols=4; ne serait pas en réalité m.rows=m.cols=4;. Peu importe, mon soucis n'est pas là.
En fait, dans l'intitulé du devoir, il est spécifié qu'il faut copier le fichier ~lia/serie-notee/prog3.cc qui est en fait le corrigé de l'exercice 2 de la série 14 et dont le sujet était justement la modélisation des matrices. Le hic (et j'en ai eu confirmation par le professeur) c'est que l'exercice 2 de la série 14 ne fait pas partie de mon programme. J'ai donc demandé à mon professeur de m'aider mais il ne veux rien entendre et pour lui c'est réalisable avec l'intitulé de l'exercice.
Je me suis alors acharné à essayer de reconstituer cette classe mais je peine à cette tache du fait de petites incompréhensions.
Par exemple, Matrice::Vecteurs& m(mat.elements); semble être une fonction statique qui prend pour paramètres mat.elements.  
Oui mais quel est le type de cette données ?  
Et puis qu'effectue réellement cette fonction ?
Je suppose que m.clear(); sert à faire une RAZ de la matrice.
Mais m.insert(m.begin(),4,Matrice::Vecteur(4,0));, qu'effectue réellement cette fonction ?  
Et quels types de paramètres accepte t elle ?
Dans la lignée, mêmes interrogations pour m.begin() et que dire de Matrice::Vecteur(4,0) ?
J'arrête là parce que plus j'avance dans mes interrogations et plus je désespère de trouver des réponses.  
J'espère simplement que quelqu'un pourra éclairer ma lanterne et me permettre ainsi d'effectuer ce devoir dont le sujet réel est, je le rappelle, la création d'une fonction calculant le déterminant.
Merci d'avance pour vos réponse.

mood
Publicité
Posté le 03-05-2006 à 20:55:12  profilanswer
 

n°1360891
nargy
Posté le 06-05-2006 à 14:56:30  profilanswer
 

olala ...
 
- d'abord change le sujet du topic pour quelquechose de plus descriptif
 
- oui, ce serait m.rows=...=4, mais j'ai l'impression que tu fait fausse route, normalement la mémoire est allouée dans le constructeur,
 
> Matrice::Vecteurs& m(mat.elements);
> Matrice::Vecteur(4,0));
- faudra que je me rappelle de déconseiller les cours que tu prends, apparemment ils ne t'apprennent pas à reconnaître un constructeur. Outre que la classe Matrice semble bien mal organisée... il s'agit de constructeurs appartenant aux sous classes Vecteur et Vecteurs de la classe Matrice.
 
> m.begin()
> ...
- sans le code de la classe on ne peut pas deviner à quoi servent certains morceaux de code.
 

Code :
  1. cout<<"A = "<<endl;
  2. A.affiche();
  3. cout<<"Det(A) = "<<A.determinant()<<endl;

c'est moche

Message cité 1 fois
Message édité par nargy le 06-05-2006 à 14:57:39
n°1361536
Joel F
Real men use unique_ptr
Posté le 08-05-2006 à 09:03:23  profilanswer
 

nargy a écrit :


- faudra que je me rappelle de déconseiller les cours que tu prends, apparemment ils ne t'apprennent pas à reconnaître un constructeur. Outre que la classe Matrice semble bien mal organisée... il s'agit de constructeurs appartenant aux sous classes Vecteur et Vecteurs de la classe Matrice.


 
Voire même si Dritzz35 pouvait se faire rembourser ca serait pas mal.
Les cours de C++ qui commence avec un constrcuteur vide et une méthode .initialise :|  
ca meriterait le bagne !

n°1361833
Tarabiscot​e
Posté le 08-05-2006 à 17:03:09  profilanswer
 

Matrice::Vecteurs& m(mat.elements);
Ca ressemble plutôt à une référence, qu'un constructeur.
En gros ça te permet de taper m à la place de mat.element (assez embêtant de le retaper pour chaque éléments).
 
Matrice::Vecteurs est un type à priori : std::vector<Vecteur>
et Vecteur est sans doute : std::vector<int>
 
Sinon mat.rows=mat.cols=4; n'est pas une erreur c'est juste qu'on ne veut pas accéder à mat.elements.
 
Donc en gros dans ta classe y a au moins rows, cols (des entiers), deux typedef (Vecteur et Vecteurs) et elements de type Vecteurs.
Plus bien sûr les méthodes : affiche, déterminant, ...
 
clear, insert, begin, ... sont des méthodes de vector donc t'as pas à les taper :)
 
Voilà je pense que c'est clair, reste plus qu'a taper le code ;)
 
PS : Pour le initialise en dehors du constructeur, je ne vois pas où est le problème.
Si on veut créer une matrice qui servira à recevoir le résultat d'un calcul par exemple,
il est inutile de l'initialiser avant il vaut donc mieux en faire une fonction séparée,
après rien n'empêche de la lancer directement depuis le constructeur si on en a toujours besoin.
Une fonction membre serait cependant bienvenue.
 
Mais de toute façon, ici le but est uniquement de remplir la matrice pour pouvoir tester le calcul du déterminant.


Message édité par Tarabiscote le 08-05-2006 à 17:38:12
n°1361992
Dritzz35
Posté le 08-05-2006 à 20:49:29  profilanswer
 

Bien pris pour tous ces conseils.
Pour répondre rapidement à chacun de vous :  
> non, il n'est pas question qu'EDUCATEL me rembourse... ;)  Quant à la qualité des cours dispensés, je ne peux pas trop me prononcer puisque je n'ai aucun élément de comparaison et je ne bosse même pas dans ce domaine (je suis mécano sur aéronefs). J'en suis encore à me demander si ce n'est pas l'interface chaise/clavier qui fait défaut (repeat : je suis mécano sur aéronefs). Moi qui voulais faire de ma passion un métier, j'ai le sentiment d'être très limité  :??:  
> En ce qui concerne Matrice::Vecteurs& m(mat.elements); si j'ai bien compris, c'est un constructeur de copie.
 

Citation :

 

Matrice::Vecteurs est un type à priori : std::vector<Vecteur>
et Vecteur est sans doute : std::vector<int>

 

> merci, ça c'est pour moi un scoop : maintenant il va falloir que je reprenne mes cours illico presto pour dégoter les chapitres qui peuvent m'en dire plus sur les "vectors".
Ben je vous remercie tous pour tous ces conseils, il vont beaucoup m'aider. Juste pour info, j'ai en fait décidé, pour le devoir, de construire une petite classe Matrice très simple et de revoir les fonctions initialise et main de façon simple également. Mais celà n'est que pour le devoir. J'ai en effet la ferme intention de comprendre tout ceci de pied en cape et de bosser un jour dans le développement....peut être dans des langages plus simples et plus accessibles.
topic règlé !!!


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

  Cours EDUCATEL

 

Sujets relatifs
[Delphi] fichiers en cours d'ecriture[Maths] C'est loin les cours du lycée...
[SQL] question de cours sur requêtes SQLVideo/cours SQL VB
Récupérer la tabpage en coursreccuperer l'heure et la date en cours(du jour) dans un trigger ?
Error variable + cours sur les classes.[Batch] Modifier 1 variable d'environnement en cours d'éxécution
cours, exemple sql ?Recherche cours => livre / cd / ou tres bon site
Plus de sujets relatifs à : Cours EDUCATEL


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