Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : faire une pile en C [ Divers / Débutant(e) ] (lenanttais44)

lundi 28 janvier 2008 à 09:43:21 | faire une pile en C

lenanttais44

Bonjour,
je voudrais faire une pile de fonctions en C
mais je ne sais pas du tout comment la faire sans utiliser de malloc
Je veux pas de malloc car je veux une vrai pile(comme en assembleur) mais pas de liste chainée
Si quelqu'un sait comment le faire je suis preneur
merci d'avance

lundi 28 janvier 2008 à 10:26:17 | Re : faire une pile en C

Spiffou

et bien si tu connais la taille max de ta pile tu peux toujours allouer un tableau statique et gérer toi même l'ajout et le rentrait d'éléments non?

lundi 28 janvier 2008 à 15:46:57 | Re : faire une pile en C

SAKingdom

Membre Club
Un tableau, comme dit par Spiffou et un index. C'est le minimum.
int pile[50];
int i = 0;

pile[i++] = 5; // On empile
j = pile[--i]; // On dépile

Tu peux aussi te faire des fonctions push et pop pour savoir si, par exemple, la pile est plein ou vide etc.

Sinon, sera un peu dur de faire une pile dynamique si tu ne veux pas utiliser l'allocation dynamique.

C++ (@++)


mercredi 30 janvier 2008 à 14:41:34 | Re : faire une pile en C

lenanttais44

je me suis mal fait comprendre apparemment
j'ai dit pile de fonction

genre pile[0]=&fonction.o;
ou pile[0]=&fonction.c

jeudi 31 janvier 2008 à 14:40:21 | Re : faire une pile en C

SAKingdom

Membre Club
Je ne comprend pas. Si tu parles d'une pile de pointeurs sur fonction, ok, c'est le même principe. Mais, d'après ton exemple, je ne vois vraiment pas de quoi tu parles.

C++ (@++)


jeudi 31 janvier 2008 à 16:57:58 | Re : faire une pile en C

lenanttais44

Mon exemple était un peu nul

Je crois qu'on est tous d'accord qu'une fonction et une procédure c'est quasi comparable.
Un pointeur de fonction c'est un truc du genre

int (*p_1ms)(int, int)=NULL;
p_1ms =&add;
int (*tab_fct[3]) () = {p_1ms, p_10ms,p_100ms};

mais comment faire une pile de pointeur de fonction(ou plutot de programme genre  add.c?
car toi tu fais une pile d'entier.
En gros par rapport à toi faudrais mettre les adresses des  fonctions ou des programmes.
Ca serait encore mieux pour moi 

jeudi 31 janvier 2008 à 22:11:26 | Re : faire une pile en C

SAKingdom

Membre Club
Comme ça le dis, il s'agit de pointeurs de fonction.
Un pointeur fait 4 octets (32bits).
Tu fais donc un tableau de DWORD dans lequel tu stocks l'adresse pointé, puis quand tu fais l'appel, tu transtypes (cast).


C++ (@++)


jeudi 31 janvier 2008 à 22:12:00 | Re : faire une pile en C

SAKingdom

Membre Club
"Un pointeur fait 4 octets (32bits)."
Sur un système 32 bits bien sûr.

C++ (@++)


vendredi 1 février 2008 à 00:56:50 | Re : faire une pile en C

SAKingdom

Membre Club
Ou encore si tes fonctions ont toutes le même prototype:
Exemple:

typedef void(__stdcall *EXEMPLE)(int, int, int);

EXEMPLE pile[50];
int i = 0;

pile[i++] = fonction1; // On empile la fonction void __stdcall fonction1 (int a, int b, int c)
pile[--i](1, 2, 3); // On dépile et appel la fonction dans la pile

C++ (@++)




Cette discussion est classé dans : pile


Répondre à ce message

Sujets en rapport avec ce message

pile memoire avec structure de pointeur [ par Nonobis ] slttjs avec ma calculatrice des p'titsproblemes ...ils faut que je recupere les valeurs saisies que cela soit nombre ou signe et les stock dans la pil [C++] Optimisation de pile [ par guiguikun ] Vider la pile [ par Tyozhebes ] Bonjoir à tous! J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes program Pile des sockets [ par darsh99 ] Bonjour,je suis toujours sur mon client serveur et j'ai un petit problème de paquets :J'envoie des paquets de taille variable mais avec une taille max reponse au sujet : travail sur les files [ par tagada_du_loft ] Yahoo :) j ai reussi pour infos voila mes deux ti prog sur les files et les pilescelui sur les piles: -creer une pile -depile -affiche le sommet de Utilisation de stack en C++ [ par jagdjg ] J essaie de faire un stack mais ca ne marche pas La declaration est : Stack* pile = new Stack();le push : pile->Push(strPile);le pop : strPile = pile- undo redo [ par youpla51 ] BonjourVoici mon probleme je fais avec une cricheditctrl des actions qui devraient etre invisible a l'utilisteur (cacher du texte, créer des link ...) Classe et Piles... [ par Amanobuo ] Bonjours,j'apprend les class et je voudrais pour m'entrainer realiser une implementation statique de type pile grace a une class. Le code est bugé car Probleme avec mon programme en C [ par nono1307 ] Je dois faire une fonction insertion dans un arbre ternaire.Voici ce que j'ai fait :#include #include #includ Patron de classe et precompilation [ par popi0016 ] Bonjour, j'essaie de programmer avec Builder6 (Borland) mes 1ers patrons de classe. Malgre bien avoir suivit mon tutorial le compilateur refuse la com


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.