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 !

PILES BASÉ SUR DES TABLEAUX


Information sur la source

Catégorie :Application Classé sous : piles, gestion, dynamique, creation, suppression Niveau : Expert Date de création : 12/06/2003 Date de mise à jour : 12/06/2003 22:54:06 Vu : 2 417

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Code trés fort pour bien gerer les piles, creation dynamique, effecement, avec bonne gestion de la memoire.
 

Source

  • // Program name : Stack Manager
  • // Description : Manage Stacks based on tables.
  • // Creator : By Mohamed K. Nasrallah
  • // Company : Dreamwood Studios - SmartScript Inc.
  • // Credits : All rights are reserved, (c) 2003 SmartScript Inc.
  • // Comment : Free of charge source code -dreamoudi@linuxmail.org
  • #include <iostream.h>
  • #define max 99
  • #define min 0
  • struct pile
  • {
  • int data[max+1];
  • int top;
  • };
  • pile*CreatPile(pile*loader)
  • {
  • loader = new pile;
  • loader->top = -1;
  • return loader;
  • }
  • int IsEmpty(pile*loader)
  • {
  • if(loader->top < min)
  • return 1;
  • else return 0;
  • }
  • void PrintPile(pile*loader)
  • {
  • if(loader && (IsEmpty(loader) == 0))
  • {
  • int i;
  • for(i = loader->top; i>=0 ; i--)
  • cout <<endl<<"["<<loader->data[i]<<"]"<<endl;
  • }
  • else
  • cout <<endl<<"Can't print, stack is empty"<<endl;
  • }
  • int PushData(pile*loader,int data)
  • {
  • if(loader && (loader->top < max))
  • {
  • loader->top++;
  • loader->data[loader->top] = data;
  • return 1;
  • }
  • else
  • {
  • return 0;
  • }
  • }
  • int PopData(pile*loader)
  • {
  • if(IsEmpty(loader))
  • {
  • return 0;
  • }
  • else
  • {
  • loader->top--;
  • return 1;
  • }
  • }
  • int PileFree(pile*loader)
  • {
  • if(IsEmpty(loader) == 0)
  • {
  • loader->top = -1;
  • return 1;
  • }
  • else return 0;
  • }
  • int SpyOnTop(pile*loader)
  • {
  • if(loader && (loader->top >= min))
  • {
  • int spyed = loader->data[loader->top];
  • return spyed;
  • }
  • else return NULL;
  • }
  • void main()
  • {
  • pile*loader = NULL;
  • double data;
  • int choice = 0;
  • int status;
  • while(choice!=6)
  • {
  • cout <<endl
  • <<"Choose an option "<<endl
  • <<" "<<endl
  • <<" 1- Push to stack "<<endl
  • <<" 2- Pop from stack "<<endl
  • <<" 3- Spy on top "<<endl
  • <<" 4- Clear stack "<<endl
  • <<" 5- Print Stack "<<endl
  • <<" 6- Exit "<<endl<<endl;
  • cout << "CHOICE\\>: ";
  • cin >> choice;
  • switch(choice)
  • {
  • case 1:
  • {
  • if(loader == NULL)
  • loader = CreatPile(loader);
  • cout <<endl<<endl<<"Enter a value: ";
  • cin >>data;
  • status = PushData(loader,data);
  • if (status == 1)
  • cout<<endl<<"Data was pushed succefully"<<endl;
  • else
  • cout<<endl<<"Stack is full"<<endl;
  • break;
  • }
  • case 2:
  • {
  • if(loader)
  • {
  • status = PopData(loader);
  • if(status == 1)
  • cout <<endl<<"Stack was been poped 1 time"<<endl;
  • else
  • cout <<endl<<"No data in stack"<<endl;
  • break;
  • }
  • else
  • cout <<endl<<"No stack"<<endl;
  • break;
  • }
  • case 3:
  • {
  • status = SpyOnTop(loader);
  • if(status != NULL)
  • cout <<endl<<"Top value is ["<<status<<"]"<<endl;
  • else
  • cout <<endl<<"Stack is empty, or no stack"<<endl;
  • break;
  • }
  • case 4:
  • {
  • if(loader)
  • {
  • status = PileFree(loader);
  • if(status == 1)
  • cout <<endl<<"Stack cleared"<<endl;
  • else
  • cout <<endl<<"Already cleared"<<endl;
  • }
  • else
  • cout <<endl<<"No stack to clear"<<endl;
  • break;
  • }
  • case 5:
  • {
  • PrintPile(loader);
  • break;
  • }
  • case 6:
  • {
  • break;
  • }
  • default:
  • {
  • cout <<endl<<"\aThis is an illegal choice, note that you must"<<endl
  • <<"read well the menu.\a"<<endl;
  • break;
  • }
  • }
  • }
  • delete loader;
  • }
// Program name         : Stack Manager
// Description	 : Manage Stacks based on tables.
// Creator		 : By Mohamed K. Nasrallah
// Company	 : Dreamwood Studios - SmartScript Inc.
// Credits		 : All rights are reserved, (c) 2003 SmartScript Inc.
// Comment	 : Free of charge source code -dreamoudi@linuxmail.org

#include <iostream.h>
#define max 99
#define min 0

struct pile
	{
   	int data[max+1];
      int top;
   };

pile*CreatPile(pile*loader)
	{
   	loader = new pile;
      loader->top = -1;
      return loader;
   }

int IsEmpty(pile*loader)
	{
   	if(loader->top < min)
      	return 1;
      else return 0;
   }

void PrintPile(pile*loader)
	{
   	if(loader && (IsEmpty(loader) == 0))
      	{
				int i;
            for(i = loader->top; i>=0 ; i--)
            cout  <<endl<<"["<<loader->data[i]<<"]"<<endl;
         }
      else
      	cout	<<endl<<"Can't print, stack is empty"<<endl;
   }

int PushData(pile*loader,int data)
	{
      if(loader && (loader->top < max))
      	{
					loader->top++;
               loader->data[loader->top] = data;
					return 1;
      	}
      else
      	{
      		return 0;
      	}
   }

int PopData(pile*loader)
	{
    			if(IsEmpty(loader))
      			{
               	return 0;
      		   }
            else
         		{
                  loader->top--;
                  return 1;
               }
   }

int PileFree(pile*loader)
	{
    			if(IsEmpty(loader) == 0)
      			{
						loader->top = -1;
               	return 1;
      		   }
            else return 0;
   }

int SpyOnTop(pile*loader)
	{
    			if(loader && (loader->top >= min))
         		{
                  int spyed = loader->data[loader->top];
                  return spyed;
               }
            else return NULL;
   }

void main()
	{
   	pile*loader = NULL;
      double data;
      int choice = 0;
      int status;

      	while(choice!=6)
				{
      			cout  <<endl
               		<<"Choose an option			"<<endl
      					<<"					 			"<<endl
            			<<"	1- Push to stack		"<<endl
         			   <<"	2- Pop from stack		"<<endl
     			      	<<"	3- Spy on top			"<<endl
            			<<"	4- Clear stack			"<<endl
                     <<"	5- Print Stack			"<<endl
                     <<"	6- Exit					"<<endl<<endl;
               cout	<< "CHOICE\\>: ";
               cin	>> choice;

            	switch(choice)
               	{
                  	case 1:
                     	{
                        	if(loader == NULL)
                           	loader = CreatPile(loader);
                           cout	<<endl<<endl<<"Enter a value: ";
                           cin	>>data;
                           status = PushData(loader,data);
                           	if (status == 1)
                              	cout<<endl<<"Data was pushed succefully"<<endl;
                              else
                              	cout<<endl<<"Stack is full"<<endl;
                           break;
                        }
                     case 2:
                     	{
                           if(loader)
                           	{
			                       	status = PopData(loader);
         	                  	if(status == 1)
            	                  	cout	<<endl<<"Stack was been poped 1 time"<<endl;
               	               else
                  	            	cout	<<endl<<"No data in stack"<<endl;
                     	         break;
                              }
                           else
                           	cout	<<endl<<"No stack"<<endl;
                           break;
                        }
                     case 3:
                     	{
                        	status = SpyOnTop(loader);
                           if(status != NULL)
                        		cout	<<endl<<"Top value is ["<<status<<"]"<<endl;
                           else
                           	cout	<<endl<<"Stack is empty, or no stack"<<endl;
                           break;
                        }
                     case 4:
                     	{
                           if(loader)
                           	{
	                        		status = PileFree(loader);
											if(status == 1)
												cout	<<endl<<"Stack cleared"<<endl;
											else
												cout	<<endl<<"Already cleared"<<endl;
										}
                           else
                           	cout	<<endl<<"No stack to clear"<<endl;

                           break;
                        }
                     case 5:
                     	{
                         	PrintPile(loader);
                           break;
                        }
                     case 6:
                     	{
									break;
                        }
                     default:
                     	{
                        	cout	<<endl<<"\aThis is an illegal choice, note that you must"<<endl
                           		<<"read well the menu.\a"<<endl;
                           break;
                        }
                  }
				}

	delete loader;
	}

Conclusion

Pour qui aime avoir ce code ecrit en list chainee, envoyer une message.
Merci.
 

Commentaires et avis

signaler à un administrateur
Commentaire de gillig le 13/06/2003 12:57:56

Pas mal, mais c'est typiquement le genre de code dont on peut faire une classe. Et pendant qu'on y est, avec template, histoire de pouvoir stocker autre chose que des int...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Creation logiciel Video/Gestion [ par lezabour55 ] Bonjour a tous,Je pense a developper un logiciel qui aura 3 missions, il me semble assez simple, mais a vous de me confirmer 1) Recuperation d'un fi creation dynamique [ par sheorogath ] bonjour a tous ,g reussi a developper un programme permetant la gestion des stock en mode console avec entre autre l'aide de ce forum . mais je voudra Gestion dynamique des controles (button, listbox, static text ....etc) [ par SaNcOdeR ] Bonjour, je recherche une classe de gestion dynamique des controles tel que les bouttons, les check box, les tree ...etc... afin de pouvoir g&#233;r&# [.net c++] gestion du port serie [ par stgi02 ] bonjour, j'ai une question sur la gestion du port s&#233;rie pouvez-vous m'expliquer ce que signifie SetCommTimeouts ,GetCommTimeouts , COMMTIMEOUTS s Creation d'une palette couleur [ par julienbornet ] Bonjour ben comme je dis dans le titre je souhaite creer un genre de palette couleur (genre celle de paint) mais un peu differente. En fait je veux av creation d'un chat; [ par loverjeckill ] Je voudrai cr&#233;er un chat pour une communaut&#233;; ce chat devrai disposer d'une liste de pseudo, ainsi que des petites fonctionnalit&#233; du ge gestion du volume avec FMOD [ par cowboybebop95 ] "Bonjour &#224; tous,Voila dans le cadre d'un projet de fin d'ann&#233;e je suis ammen&#233; a utiliser la librairie Fmod pour la gestion des audiosPo gestion des periphériques [ par mimiaka ] bsr bon voila je doi realisé un programme sous c ou c++ qui porte sur la gestion des periphériques et j'en ai aucune idée si quelqu'un pourai m'aidé j creation en projet [ par bonjour__ ] salut toutle monde;je suis debutant sur programmationmon question comment cree un projet sur visual c++ merci a tous Gestion d'une école [ par Romerocharvet ] du code source en Langage c " Gestion d'une école"-Les fichiers-Les Listes-Les poiteurs... merci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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,577 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é.