#1 Le 10/01/2016, à 17:02
- Lrnv
[C++] Problème d'allocation / destruction d'objet dans un tableau
Bonjour !
j'ai un programme de C++ a coder pour ma fac, niveau débutant, mais bon.
Le problème est le suivant : J'ai deux classes, une classe Matrice et une classe MatriceCarree héritée de Matrice. l'idée est de créé un tableau pouvant contenir indiférement des Matrices et des MatriceCarees ( polymorphisme, avec les "virtual" sur les noms de fonctions pour qu'elles fonctionne corectement ).
je n'arrive pas a trouver la syntaxe corecte pour 1° ajouter des matrices / des matrices caréés au tableau et 2° en supprimer. J'ai essayer plusieurs syntaxes, mais je trouve pas la bonne, et google ne m'aide pas vraiment.. EDIT : Solved au message #10
Voicit mon code : https://github.com/lrnv/cpp-project/
Le problème ce situe dans le main, Case 2 pour créé une matrice (carréé ou non), ainsi que pour les supprimer. Je précise que la syntaxe du tableau est imposée. EDIT : Solved au message #10
De plus, mon tableau de matrices a une taille statique. Existe-t-il un moyen ( sans utiliser de librairie type vector, le prof nous a dit non ), de le rendre dynamique ( Plus simple que de le recopier ellement par ellement puis de le supprimer a chaque changement de taille ) ? EDIT : La seule manière possible avec mes contraites semble de ré-instancier et de copier le tableau de pointeurs. Cependant, une classe Vector peut clairement simplifier le problème.
J'ai aussi un Problème avec mes méthodes virtuelles quand j'essaye de les définir dans Matrice.h et Matrice.cpp : Cetraines d'entre elles renvoient des MatriceCaréé, qui ne sont pas encore définies a cet endroit la du code. Comment faire ?
Voila, j'espère que vous pourrez me répondre..
Dernière modification par Lrnv (Le 11/01/2016, à 18:52)
Hardware : i7/8goDDR3 en desktop /// Lenovo thinkpad yoga 2 13 en laptop.
OSs : *buntu on desktop, arch / win8 on laptop
Mon Github
Hors ligne
#2 Le 10/01/2016, à 17:55
- Byggvir
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
Pour les tableaux dynamique :
https://fr.wikibooks.org/wiki/Programma … s_tableaux
Hors ligne
#3 Le 10/01/2016, à 18:01
- Lrnv
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
Pour les tableaux dynamique :
https://fr.wikibooks.org/wiki/Programma … s_tableaux
Thx, mais c'est déja ce que je fais :
Matrice **tab=new Matrice*[100];
Mais du coup, si jamais je veut changer la tailel de mon tableau, pour disons rajouter une 101ieme matrice, et bien je suis obliger de le recopier en entier. J'esperais trouver une manière plus intéligeante ( et surtout plus courte ) de faire, mais apparament il n'y en a pas.
Je suis toujours bloquer sur le reste, par contre
Hardware : i7/8goDDR3 en desktop /// Lenovo thinkpad yoga 2 13 en laptop.
OSs : *buntu on desktop, arch / win8 on laptop
Mon Github
Hors ligne
#4 Le 10/01/2016, à 19:38
- pires57
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
1° ajouter des matrices / des matrices caréés au tableau et
Je ne comprends pas trop ce que tu veut faire, en C une matrice n'est rien de plus qu'un tableau à plusieurs dimensions
int matrice[5][5];
tu pourrais peut être donner des exemples avec des petites matrices [2][2] par exemple puis donner le resultat final de ce que tu souhaites obtenir?
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#5 Le 10/01/2016, à 21:08
- Lrnv
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
1° ajouter des matrices / des matrices caréés au tableau et
Je ne comprends pas trop ce que tu veut faire, en C une matrice n'est rien de plus qu'un tableau à plusieurs dimensions
int matrice[5][5];
tu pourrais peut être donner des exemples avec des petites matrices [2][2] par exemple puis donner le resultat final de ce que tu souhaites obtenir?
Tout les exemples ainsi que la problématique précise sont dans le main de mon github, vers la fin, au case2 du switch. J'avais pourtant l'impression que c'etais clair dans mon 1er message, mais désolé...
les codes sont a cette adresse : https://github.com/lrnv/cpp-project/
Le main.cpp : https://github.com/lrnv/cpp-project/blo … r/main.cpp
Les exemples de fabrication de matrices SANS tableau de pointeurs vers elles sont en commentaire, et les exemple d'essais de fabrication de ce tableau sont en bas du fichier, avent le switch, et les exemple d'ajout de matrice ( non fonctionels, bien sur ) a ce tableau sont au Case2 du switch.
la syntaxe que tu me propose ici ne tient absolument pas compte de la classe matrice et de la classe matricecarée que j'ai déja ( 1er lien ), les constructeurs et destructeurs sont deja faits enfait...
Dernière modification par Lrnv (Le 10/01/2016, à 21:09)
Hardware : i7/8goDDR3 en desktop /// Lenovo thinkpad yoga 2 13 en laptop.
OSs : *buntu on desktop, arch / win8 on laptop
Mon Github
Hors ligne
#6 Le 10/01/2016, à 22:02
- pires57
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
C'est normal, j'ai montré le bout de code que j'utiliserais en C pour créer la matrice.
Au niveau du C++ d'autre te répondront probablement mais idéalement il faudrait fournir un jeu d'essai avec des petites matrices puis le resultat final attendu.
Je t'avoue ne pas avoir regarder sur github, le C++ n'étant pas ma spécialité.
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#7 Le 11/01/2016, à 00:06
- Lrnv
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
[...] idéalement il faudrait fournir un jeu d'essai avec des petites matrices puis le resultat final attendu[...]
Je t'avoue ne pas avoir regarder sur github [...]
Tu te repond a toi même
Hardware : i7/8goDDR3 en desktop /// Lenovo thinkpad yoga 2 13 en laptop.
OSs : *buntu on desktop, arch / win8 on laptop
Mon Github
Hors ligne
#8 Le 11/01/2016, à 11:15
- claudius01
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
Bonjour,
...
Mais du coup, si jamais je veut changer la taille de mon tableau, pour disons rajouter une 101ieme matrice, et bien je suis obliger de le recopier en entier. J’espérais trouver une manière plus intelligente ( et surtout plus courte ) de faire, mais apparemment il n'y en a pas.
Personnellement, utiliser des tableaux statiques au sens de leur dimension pour faire du calcul matriciel ... autant rester en C et encore tout peut être dynamique mais cela n'est plus du C++ ;-).
Il y a le concept de vecteur et autres classes déjà écrites qui permettent une "dynamicité" bien plus puissante...
cf. Langage C++ et calcul scientifique
Hors ligne
#9 Le 11/01/2016, à 11:25
- Byggvir
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
Très bon document, je confirme !
Hors ligne
#10 Le 11/01/2016, à 17:02
- Lrnv
Re : [C++] Problème d'allocation / destruction d'objet dans un tableau
EDIT : OK, problem solved. Vocit donc la bonne syntaxe que je cherchais pour instancer mes matrices et mes matricecarées :
if ( n != m ) // La matrice n'est donc pas carrée.
{
tab[i]=new Matrice(n,m);
}
else // La matrice est donc carrée.
{
tab[i]=new MatriceCarree(n)
}
Du coup, j'ai toujours une erreur, mais je n'arrive pas a la regler :
Mes méthodes associées a la classe matricecarrée sont aussi déclarée dans la classe matrice en virtual, pour pouvoir les utiliser. Cependant, certaines d'entre elles ont dans leur signatures des "MatriceCarree", que le compilateur ne prend pas en compte. Je pense que c'est un problème d'include pas fait dans le bon sens, je vais essayer de regler cela.
Dernière modification par Lrnv (Le 11/01/2016, à 18:50)
Hardware : i7/8goDDR3 en desktop /// Lenovo thinkpad yoga 2 13 en laptop.
OSs : *buntu on desktop, arch / win8 on laptop
Mon Github
Hors ligne