begin process at 2012 05 30 03:47:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Liste chainéés


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

Liste chainéés

samedi 17 avril 2004 à 21:48:12 | Liste chainéés

anek971

Bonjour a tous
Enfaite il y a déà eu un poste sur le site sur ce sujet mais ayant le mm tp a faire je me suis rendu compte ke sa fonction quitter ne marchait pas, biensur je tiens a dire que je n'ai pas fait du copier coller mais que j'ai bien fait mon tp et j'ai chercher de l'aide sur ce site :).
C'est un programme qui fait un agenda,

Mais j'ai un prob avec ma fonction quitter elle efface le nom seulement et laisse le numero de tel.
Alors je poste

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define N 40
#define T 10
struct personne
{
char nom[N+1];
char tel[T+1];
};
struct fiche
{
struct personne p;
struct fiche * p_suivant;
};
void ajouter(struct fiche **pp_liste)
{
char name[N+1];
char phone[T+1];
struct fiche *p_nouv;
printf("Tapez le nom: ");
scanf("%s",&name);
printf("Tapez le numero de tel: ");
scanf("%s",&phone);
p_nouv=(struct fiche *)malloc(sizeof(struct fiche));
strcpy((*p_nouv).p.nom,name);
strcpy((*p_nouv).p.tel,phone);
p_nouv->p_suivant=*pp_liste;
*pp_liste=p_nouv;
}
void afficher(struct fiche *p_liste,int compteur)
{
int a;
a=0;
struct fiche *p_look;
p_look=(struct fiche *)malloc(sizeof(struct fiche));
p_look=p_liste;
if(p_look==NULL)
{
printf("Personne pour l'instant dans l'agenda!\n");
}
while(p_look!=NULL)
{

printf("%s : %s\n",(*p_look).p.nom,(*p_look).p.tel);
p_look=(*p_look).p_suivant;
a++;
}

}
void quitter(struct fiche **pp_liste)
{
int fin_free=0;
int search=0;
struct fiche *p_look; //variable qui contient
// la liste des personnes
struct fiche *p_suiv;
struct fiche *p_temp;
p_look=(struct fiche*)malloc(sizeof(struct fiche));
p_suiv=(struct fiche*)malloc(sizeof(struct fiche));
p_temp=(struct fiche*)malloc(sizeof(struct fiche));
p_look=*pp_liste;
while(search==0)
{
if(p_look==NULL) //verifie si l'agenda n'est pas vide
{
printf("Espace deja libre\n");
search=1;
}
if((p_look!=NULL)&&(p_look->p_suivant==NULL))
search=2; //verifie si l'agenda contient 1 seule personne
if((p_look!=NULL)&&(p_look->p_suivant!=NULL))
/*verifie si l'agenda contient plus d'une personne*/
{
search=3;
fin_free=0;
}
}
printf("%d\n",search);
if(search==3)// si plusieurs personne dans l'agenda
{
while(fin_free==0)/*plus loin free prendra une autre valeur et indiquera qu'il n' y a plus personne */
{
if(p_look!=NULL)/* si l'agenda n'est pas vide*/
{
p_suiv=p_look->p_suivant;/*on met la fiche suivante ds p_suiv*/
free(p_look);/* on libere la place*/
p_look=NULL;/*ca j'ai vu ca ds un de mes boukins :)*/
p_look=p_suiv;/*ensuite on met p_look au suivant*/
}
if(p_look==NULL)/*si plus personne dans l'agenda */
{
fin_free=4;/*fin_free change de valeur ainsi on sor de la condition*/
}

}
if(search==2)/*si une personne ds l'agenda seulement*/
{
/*pareil que pour l'autre sauf ke la on a pas besoin du suivant*/
free(p_look);
p_look=NULL;


}
}
}
int main(void)
{
int compteur=0;
int choix;
struct fiche *p_liste=NULL;
free(p_liste);
do
{
printf("Vous pouvez:\n");
printf(" 1-Ajouter une personne.\n");
printf(" 2-Afficher le contenu de l'agenda.\n");
printf(" 3-Retirer une personne.\n");
printf(" 4-Trier les personnes.\n");
printf(" 0-quitter l'application.\n");
printf("\nVotre choix: ");
scanf("%d",&choix);
if(choix==1)
compteur++;
if((compteur>0)&&(choix==3))
compteur=compteur-1;
if(choix==0)
compteur=0;
switch(choix)
{
case 0:quitter(&p_liste);
break;
case 1:ajouter(&p_liste);
break;
case 2:afficher(p_liste,compteur);
break;
case 3:retirer(&p_liste,compteur);
break;
case 4:trier(&p_liste,compteur);
break;
}
printf("vous avez entrez: %d personne(s)\n",compteur);
}
while(choix!=5);

}
J'ai pas mis le reste parceke ca marche enfin aumoins al fonction retirer ou je ne rencontre pas ce porbleme la.
désolé si le poste est long, et merci d'avance
samedi 17 avril 2004 à 21:51:00 | Re : Liste chainéés

anek971

heu un dernier truc a search=2
dans le if j'ai mis
if(search==2)
{
p_suiv=p_look->p_suivant;
free(p_look);
p_look=NULL;
p_look=p_suiv;

}
et la ca m'affiche tjs rien ou des caractere bizzare pr le nom du genre 1$. :(


Cette discussion est classée dans : liste, printf, fiche, struct, look


Répondre à ce message

Sujets en rapport avec ce message

Passage par adresse d'un tableau de structures. [ par alekine ] Bonjour, j'ai un problème pour passer par adresse un tableau de structures. Voilà mon code:#include #define L_MAX 2struct point //la structure d'un p Fonction recherche (listes chainées) [ par adri10 ] Bonjour à tous, Bon voilà j'ai un gros problème avec ma fonction recherche en liste chainées. Je pensais que mon programme était correct puisqu'en le fonctions de listes chainees en c [ par loftiteau ] bonjourje souhaite avoir d'aide pour faire des fonctions d'ajout et suppression et modification en utilisant la liste chainé suivante en language c :s Problème de code (tri et structure) [ par krolis ] Salut tout le monde, je rencontre un problème lors de l'exécution de ce code au niveau du tri par notes. Veuillez m'aidez s'il vous plaît. Merci d'ava Division de deux polynomes [ par tareknaj ] Bonjour, J'ai besoin d'une fonction qui effectue la division de deux polynomes. Un polynome est exprime sous forme d'une liste chainee: ////////////// probleme d'erreur dans un programme [ par jekburn ] Bonjour,Mon programme qui est un répertoire téléphonique, avec recherche de fiche par "nom"comet une erreur, mais je ne sais pas d'ou elle viensMerci Liste de classes template [ par Rouliann ] Bonjour à tous.Mon problème est le suivant :J'ai une classe que je définis comme cecitemplate class property{        string name;        T value;     Fichier + liste chainée [ par Evisu ] Bonsoir,J'ai une question concernant l'écriture et la lecture de liste chainée dans un fichier.dataJ'ai une structure PERS qui contient des infos (nom supprimer dans un fichier [ par juju0612 ] donc voila mon programme fais une gestion d'un club de foot!!donc ici c pour supprimer des joueurs.tout marche sauf que j'ai un probleme avec ma fonct


Nos sponsors


Sondage...

Comparez les prix

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

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