J'ai quelque modifications à apporter à un script mais je n'y arrive pas. Le but de mon projet est de créer une pile en C au format LIFO ( last in first out ) consistant donc a ajouter / supprimer des éléments, le seul élément avec lequel on peut interagir étant celui se trouvant au sommet de la pile.
Ce qui est correcte. Maintenant il faudrait que je remplace les élements 1,2,3 de ma pile par : (‘’fonction#1’’, 0x7F543210, ‘’Ok’’) a la place du 1, (fonction#2’’, 0x7F543220, ‘’987654’’) a la place du 2 et (‘’fonction#3’’, 0x7F543230, ‘’123456’’) a la place du 3. Mon code ne compilant que des éléments de type float j'ai essayé de convertir chaque ligne de type str en float avec la fonction strtof() mais celle ci ne converti que les nombres englobé dans dans "".
Je dois donc avoir au final l'ordre d'execution suivant:
Finalement chacune des mes fonctions ne représente qu'une longue chaine de caractères, du moment que j'arrive a insérer toute la ligne <"fonction#1’’, 0x7F543210, "Ok’’> comme un unique élément dans la pile sa marche aussi, je ne suis donc pas obligé de déclarer une structure renseignant "#fonction1" comme str, 0745X... come un int et "Ok" comme un str. Si je peux empiler toute la ligne comme un "gros str" dans la pile ce serait plus simple je pense, mais la encore je n'y arrive toujours pas.
Si j'étais mauvais langue , je dirais que cette discussion a déjà eu lieu sur dvp, et que la dernière réponse du Avi.Py est un copié collé de réponse qui ont été faites suer ce forum. Mais je ne suis pas une mauvaise langue, je barre donc ce que j'ai écrit.
- Edité par edgarjacobs 25 septembre 2021 à 17:48:40
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Si tu met tout dans une chaîne de caractère, pour l'utilisation des données extraite de ta pile tu devras aussi les extraire de ta chaîne de caractère ce qui est encore moins simple.
Avi.Py a écrit:
mais la encore je n'y arrive toujours pas.
On voudrait bien t'aider, mais on ne sait pas ce qui te bloque ? Poste ton code, on pourra probablement te guider dans tes erreurs.
Si j'étais mauvais langue , je dirais que cette discussion a déjà eu lieu sur dvp, et que la dernière réponse du Avi.Py est un copié collé de réponse qui ont été faites suer ce forum.Mais je ne suis pas une mauvaise langue, je barre donc ce que j'ai écrit.
Oui j'ai du mal et je poste mon problème sur différent forum où est le mal ? Je cherche juste à comprendre, si j'ai pas le droit de repost mon problème sur différent forum montrer moi la règle et je supprimerai ce topic pas de soucis.
rouIoude a écrit:
On voudrait bien t'aider, mais on ne sait pas ce qui te bloque ? Poste ton code, on pourra probablement te guider dans tes erreurs.
J'ai renseigné mes différents fichier (pile.h,pile.c,main.c,Makefile) dans mon tout premier message. Ce que je n'arrive pas à faire c'est ajouter un element de format (’fonction#3’’, 0x7F543230, ‘’123456’’) a la place du nombre 3. J'ai changé la structure d'Element mais je n'ai pas réussi à intégrer cet structure d'élément pour pouvoir intégrer correctement un element de ce format la dans la pile.
pour une pile dont les éléments manipulés (de type Element) sont des floats (cf le typedef) et qu'on veut adapter ce code (et non scripte surtout avec un e final) pour manipuler des éléments qui sont composés d'une chaîne, une valeur entière et une autre chaîne (en lieu et place d'un float) , alors le plus simple est de bien définir Element, comme par exemple
Moi je n'y vois pas de problème tant que tu tiens compte des suggestions et que tu postes le même code partout. As-tu modifié ton code depuis le début de ce sujet? Que veux-tu dire par «je n'y arrive pas»? Testes une fonction à la fois. Fais des ajouter suivi des affichages.
Testes si afficher une pile vide fonctionne. Si ça marche, fais des suppressions suivi d'un affichage à chaque fois jusqu'à ce que ta pile soit vide.
- Edité par PierrotLeFou 25 septembre 2021 à 18:51:59
Le Tout est souvent plus grand que la somme de ses parties.
pour une pile dont les éléments manipulés (de type Element) sont des floats (cf le typedef) et qu'on veut adapter ce code (et non scripte surtout avec un e final) pour manipuler des éléments qui sont composés d'une chaîne, une valeur entière et une autre chaîne (en lieu et place d'un float) , alors le plus simple est de bien définir Element, comme par exemple
1
2
3
4
5
typedefstruct{
char*first_string;
intinteger_value;
char*second_string;
} Element;
Ça permet une réutilisation simple du source, enfin si on comprend le code source évidemment.
Cela est bien équivalent à la structure que j'ai renseigné dans la réponse à rouloude non ?
1
2
3
4
5
typedef struct element {
char* str01;
size_t value;
char* str02;
} t_element;
PierreLeFou a écrit:
Moi je n'y vois pas de problème tant que tu tiens compte des suggestions et que tu postes le même code partout. As-tu modifié ton code depuis le début de ce sujet?
Oui j'ai modifié mon code depuis le début du sujet, j'ai changé la strucure d'element (dans le fichier pile.h) en passant de :
Je pense que la meilleure façon de l'aider et surtout de lui conseiller de :
comprendre le source avant de le modifier ;
le modifier correctement avec un minimum d'efforts ;
et surtout écrire des fonctions, ne pas caster les mallocs, bien indenter le programme, etc.
Écrire des fonctions est primordial.
Edit: et évidemment de ne pas cacher des pointeurs dans des typedef !
- Edité par White Crow 25 septembre 2021 à 18:53:52
Pile en C ( système LIFO )
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.