begin process at 2012 05 29 17:44:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb avec les piles et les files


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

Pb avec les piles et les files

dimanche 23 avril 2006 à 15:06:16 | Pb avec les piles et les files

manta7

Salut à tous, j'ai essayé de créer un programme qui permet de gérer les piles et les files mais le programme suivant a tout le temps des problèmes et rien ne marche mais j'ai beau cherché, je ne trouve pas l'erreur : #include #include typedef struct pile *Pile; typedef struct file *File; struct pile{ int val; Pile deb; Pile fin; Pile suiv; }; struct file{ int val; File deb; File fin; File suiv; }; void pini(Pile p) { p->deb=NULL; p->fin=NULL; } void fini(File f) { f->deb=NULL; f->fin=NULL; } int pvide(Pile p) { if(p->deb==NULL) return 1; return 0; } int fvide(File f) { if(f->deb==NULL) return 1; return 0; } File newf(int e) { File temp=NULL; temp->val=e; return temp; } Pile newp(int e) { Pile temp=NULL; temp->val=e; return temp; } void fpush(File f,int e) { if(f->deb!=NULL) { f->fin->suiv=newf(e); f->fin=f->fin->suiv; } else { f->deb=newf(e); f->fin=f->deb; } } void ppush(Pile p,int e) { if(p->deb!=NULL) { p->fin->suiv=newp(e); p->fin=p->fin->suiv; } else { p->deb=newp(e); p->fin=p->deb; } } void fpop(File f) { File temp; temp=f->deb; f->deb=f->deb->suiv; free(temp); } void ppop(Pile p) { Pile temp,temp2; if(p->suiv==NULL) { free(p); p->deb=NULL; p->fin=NULL; } else { temp=p; temp2=p->suiv; while(temp2->suiv!=NULL) { temp=temp->suiv; temp2=temp2->suiv; } free(temp2); temp->suiv=NULL; p->fin=temp; } } void pprint(Pile p) { if(p->suiv==NULL) printf("Pile vide\n"); else { while(p->suiv!=NULL) { printf("%d\n",p->val); p=p->suiv; } } } void fprint(File f) { if(f->suiv==NULL) printf("File vide\n"); else { while(f->suiv!=NULL) { printf("%d\n",f->val); f=f->suiv; } } } int main() { Pile p=NULL; File f=NULL; int x; while(1) { printf("0:quitter\n1:pini\n2:pvide\n3:ppush\n4:ppop\n5:fini\n6:fvide\n7:fpush\n8:fpop\n9:pprint\n10:fprint\n"); scanf("%d",&x); switch(x) { case 0: exit(0); break; case 1: pini(p); break; case 2: pvide(p); break; case 3: scanf("%d",&x); ppush(p,x); break; case 4: ppop(p); break; case 5: fini(f); break; case 6: fvide(f); break; case 7: scanf("%d",&x); fpush(f,x); break; case 8: fpop(f); break; case 9: pprint(p); break; case 10: fprint(f); break; } } return 0; } Merci de votre aide !!!
dimanche 23 avril 2006 à 15:11:26 | Re : Pb avec les piles et les files

SAKingdom

Membre Club
Nous non plus on ne pourra pas trouver l'erreure. Met ton code avec des saut de ligne au moin stp.

___________________________________________
Les plus grands esprits trouvent toujours une solution

dimanche 23 avril 2006 à 15:13:00 | Re : Pb avec les piles et les files

Ndisalvio

Instancie ton code
dimanche 23 avril 2006 à 15:18:35 | Re : Pb avec les piles et les files

manta7

#include <stdio.h>
#include <stdlib.h>

typedef struct pile *Pile;
typedef struct file *File;

struct pile{
 int val;
 Pile deb;
 Pile fin;
 Pile suiv;
};

struct file{
 int val;
 File deb;
 File fin;
 File suiv;
};

void pini(Pile p)
{
 p->deb=NULL;
 p->fin=NULL;
}

void fini(File f)
{
 f->deb=NULL;
 f->fin=NULL;
}

int pvide(Pile p)
{
 if(p->deb==NULL)
  return 1;
 return 0;
}

int fvide(File f)
{
 if(f->deb==NULL)
  return 1;
 return 0;
}

File newf(int e)
{
 File temp=NULL;
 temp->val=e;

 return temp;
}

Pile newp(int e)
{
 Pile temp=NULL;
 temp->val=e;

 return temp;
}

void fpush(File f,int e)
{
 if(f->deb!=NULL)
 {
  f->fin->suiv=newf(e);
  f->fin=f->fin->suiv;
 }
 else
 {
  f->deb=newf(e);
  f->fin=f->deb;
 }
}

void ppush(Pile p,int e)
{
 if(p->deb!=NULL)
 {
  p->fin->suiv=newp(e);
  p->fin=p->fin->suiv;
 }
 else
 {
  p->deb=newp(e);
  p->fin=p->deb;
 }
}

void fpop(File f)
{
 File temp;
 temp=f->deb;
 f->deb=f->deb->suiv;
 free(temp);
}

void ppop(Pile p)
{
 Pile temp,temp2;
 
 if(p->suiv==NULL)
 {
  free(p);
  p->deb=NULL;
  p->fin=NULL;
 }
 else
 {
  temp=p;
  temp2=p->suiv;
  while(temp2->suiv!=NULL)
  {
   temp=temp->suiv;
   temp2=temp2->suiv;
  }
  free(temp2);
  temp->suiv=NULL;
  p->fin=temp;
 }
}

void pprint(Pile p)
{
 if(p->suiv==NULL)
  printf("Pile vide\n");
 else
 {
  while(p->suiv!=NULL)
  {
   printf("%d\n",p->val);
   p=p->suiv;
  }
 }
}

void fprint(File f)
{
 if(f->suiv==NULL)
  printf("File vide\n");
 else
 {
  while(f->suiv!=NULL)
  {
   printf("%d\n",f->val);
   f=f->suiv;
  }
 }
}

int main()
{
 Pile p=NULL;
 File f=NULL;
 int x;

 while(1)
 {
  printf("0:quitter\n1:pini\n2:pvide\n3:ppush\n4:ppop\n5:fini\n6:fvide\n7:fpush\n8:fpop\n9:pprint\n10:fprint\n");
  scanf("%d",&x);
  switch(x)
  {
  case 0:
   exit(0);
   break;
  case 1:
   pini(p);
   break;
  case 2:
   pvide(p);
   break;
  case 3:
   scanf("%d",&x);
   ppush(p,x);
   break;
  case 4:
   ppop(p);
   break;
  case 5:
   fini(f);
   break;
  case 6:
   fvide(f);
   break;
  case 7:
   scanf("%d",&x);
   fpush(f,x);
   break;
  case 8:
   fpop(f);
   break;
  case 9:
   pprint(p);
   break;
  case 10:
   fprint(f);
   break;
  }
 }
 return 0;
}

 

dimanche 23 avril 2006 à 15:21:06 | Re : Pb avec les piles et les files

SAKingdom

Membre Club
D'accord. Peu tu nous dire quel est le problème, quesqui arrive. Ya t-il un message d'erreure?

___________________________________________
Les plus grands esprits trouvent toujours une solution

dimanche 23 avril 2006 à 15:25:27 | Re : Pb avec les piles et les files

SAKingdom

Membre Club
Attend un peu. C'est normal que je vois des free mais sans malloc???

___________________________________________
Les plus grands esprits trouvent toujours une solution

dimanche 23 avril 2006 à 15:43:02 | Re : Pb avec les piles et les files

manta7

Ok, j'ai remplacé pini par :

void pini(Pile p)
{
 p=(Pile)malloc(sizeof(struct pile));
 p->deb=NULL;
 p->fin=NULL;
}

lors de l'appel de pini() ça marche mais apres lorsque j'essaie d'appeller pvide() y'a une erreur de l'exécution et le programme se ferme...
dimanche 23 avril 2006 à 15:47:53 | Re : Pb avec les piles et les files

SAKingdom

Membre Club
Il faut que tu alloue la mémoire à p avant l'execution de la fonction pas dedans.

___________________________________________
Les plus grands esprits trouvent toujours une solution

dimanche 23 avril 2006 à 15:55:22 | Re : Pb avec les piles et les files

manta7

Merci pour ton aide maintenant j'ai les fonction pini() et pvide() qui fonctionne mais pprintf() ne marche tjrs pas...

dimanche 23 avril 2006 à 15:57:23 | Re : Pb avec les piles et les files

SAKingdom

Membre Club
Je vois pas de pprintf. Est tu sur que tu la posté?

___________________________________________
Les plus grands esprits trouvent toujours une solution


1 2 3

Cette discussion est classée dans : file, temp, pile, deb, suiv


Répondre à ce message

Sujets en rapport avec ce message

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 Afficher la pile d'exécution [ par GrosTony ] Salut,Je voudrais savoir s'il était possible en C/C++, d'afficher la pile d'exécution, comme par exemple avec la commande where dans gdb après une seg 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 Projet Morpion [ par albjohan ] Bonsoir, Voici une fonction recusive qui me permet de créer l ensemble des possibilitees du morpion. Malheureusement en ajoutant dans cette arbre a je Fichier et arbre binaire [ par metek ] Bonjour! Je suis en train de faire un programme gerant une base de donnée grace a des fichiers textes! J'ai deux fichier txt un avec les données e [C++] Ouvrir un fichier en donnant le chemin + parcours par caractère [ par Tamahoma ] Bonjour,je voudrais savoir comment ouvrir un fichier en donnant son cheminj'ai testé comme ceci :string chemin;cout << "saisir le chemin du fichier a modifier le fonctionnement normale de la pile tcp/ip [ par kayssar ] est ce que quelqu'un peut m'expliquer comment on peut modifier le fonctionnement de la pile tcp/ip . moi par exemple je travaille sur un projet et j'a CFileException::sharingViolation en ouverture de fichier [ par ducheseb ] Bonjour, J'essaie dans mon programme d'ouvrir un fichier. A chaque fois, j'obtiens une sharingViolation alors que mon fichier n'es ouvert nul part. listview petit probleme [ par babylone2019 ] Bonjour,voila j'ai creer cette fonction pour inserer du texte dans ma list view, mais bon il me retourne -1 des la fonction ListView_InsertItem();Mais


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 7,816 sec (3)

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