begin process at 2010 02 09 15:29:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

faire une pile en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

faire une pile en C

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ée 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales