Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1389 connectés 

  FORUM HardWare.fr
  Programmation
  C

  liste langage C (bug compilation code blocks)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

liste langage C (bug compilation code blocks)

n°2191286
aminasmile
Posté le 22-05-2013 à 11:02:33  profilanswer
 

re Bonjour :)  
 
j'ai un exercice et le principe c'est : on a une liste de livre emprunté par des étudiants dans une prériode de temps :  bon il nous demande de déclarer la structure  et puis voir si un livre donnée et emprunté par l'un des étudiants : j'ai rédigé le programme je compile (sans erreur) mais avec des bugs dans le premier niveau après  rien d'autre s'affiche !!

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. struct cellule{
  5. char Prenom[10];
  6. int jd; \\jour de début de la période
  7. int jf; \\fin de la prériode
  8. struct cellule * next;
  9. };
  10. typedef struct cellule* etudiant;
  11. struct cel{
  12. char titre[20];
  13. etudiant petudiant;
  14. struct cel * suiv;
  15. };
  16. typedef struct cel* livre;
  17. etudiant creer(char P[],int j1, int j2)
  18. {
  19. etudiant debut= NULL, nouveau ;
  20. nouveau=malloc(sizeof(struct cellule));
  21. strcpy(nouveau->Prenom,P);
  22. nouveau->jd=j1;
  23. nouveau->jf=j2;
  24. nouveau->next=debut;
  25. nouveau=debut;
  26.   return debut ;
  27. }
  28. livre suite(char N[],etudiant pet){
  29. livre begin = NULL, nouveau ;
  30. nouveau=malloc(sizeof(struct cel));
  31. strcpy(nouveau->titre,N);
  32. nouveau->petudiant=pet;
  33. nouveau->suiv=begin;
  34. nouveau=begin;
  35.   return begin ;
  36. }
  37. void afficher(livre l)
  38. {livre p ;
  39. for(p=l;p!=NULL;p=p->suiv){
  40.     printf("le titre du livre est %d\n" ,p->titre);
  41. }
  42. }
  43. int trouver( livre l ,int j, char Nom[])
  44. { livre p=l; etudiant q;
  45. while(p!=NULL && strcmp(p->titre,Nom)!=0)
  46. {
  47. p=p->suiv;
  48. }
  49. if(p=NULL) return 0;
  50. else q=p->petudiant;
  51. while(q!=NULL){
  52. if(j>=q->jd&&j<=q->jf) return 1 ;
  53. q=q->next;
  54. }
  55. return 0;
  56. }
  57. void main()
  58. {
  59. int n,b,c;
  60. int i ,J;
  61. char titro[10];
  62. char nomet[10];
  63. livre L, LL;
  64. etudiant et;
  65. printf("saisir n\n" );
  66. scanf("%d,&n" );
  67. for(i=0;i<n;i++){
  68. printf("entrer le titre du livre:\n" );
  69. gets(titro);
  70. printf("entrer nom d'étudiant \n" );
  71. gets(nomet);
  72. printf("entrer jour debut \n" );
  73. scanf("%d",&c);
  74. printf("entre jour fin \n" );
  75. scanf("%d",&b);
  76. }
  77. L= creer(nomet,c,b);
  78. LL=suite(titro,et);
  79. afficher(L);
  80. printf(" l'emprunte du livre est %d\n",trouver(L,J,titro));
  81. system("pause" );
  82. }

 
merci d'avance ... :)

mood
Publicité
Posté le 22-05-2013 à 11:02:33  profilanswer
 

n°2191291
aminasmile
Posté le 22-05-2013 à 11:19:46  profilanswer
 

eliminer le 1er voir celui la ...
 

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. struct cellule {
  5.     char Prenom[10];
  6.     int jd;
  7.     int jf;
  8.     struct cellule * next;
  9. };
  10. typedef struct cellule* etudiant;
  11. struct cel {
  12.     char titre[20];
  13.     etudiant petudiant;
  14.     struct cel * suiv;
  15. };
  16. typedef struct cel* livre;
  17. etudiant creer(char P[],int j1, int j2)
  18. {
  19.     etudiant debut= NULL, nouveau ;
  20.     nouveau=malloc(sizeof(struct cellule));
  21.     strcpy(nouveau->Prenom,P);
  22.     nouveau->jd=j1;
  23.     nouveau->jf=j2;
  24.     nouveau->next=debut;
  25.     nouveau=debut;
  26.     return debut ;
  27. }
  28. livre suite(char N[],etudiant pet)
  29. {
  30.     livre begin = NULL, nouveau ;
  31.     nouveau=malloc(sizeof(struct cel));
  32.     strcpy(nouveau->titre,N);
  33.     nouveau->petudiant=pet;
  34.     nouveau->suiv=begin;
  35.     nouveau=begin;
  36.     return begin ;
  37. }
  38. void afficher(livre l)
  39. {
  40.     livre p ;
  41.     for(p=l; p!=NULL; p=p->suiv) {
  42.         printf("le titre du livre est %d\n" ,p->titre);
  43.     }
  44. }
  45. int trouver( livre l ,int j, char Nom[])
  46. {
  47.     livre p=l;
  48.     etudiant q;
  49.     while(p!=NULL && strcmp(p->titre,Nom)!=0) {
  50.         p=p->suiv;
  51.     }
  52.     if(p=NULL) {
  53.         return 0;
  54.     } else {
  55.         q=p->petudiant;
  56.     }
  57.     while(q!=NULL) {
  58.         if(j>=q->jd&&j<=q->jf) {
  59.             return 1 ;
  60.         }
  61.         q=q->next;
  62.     }
  63.     return 0;
  64. }
  65. void main()
  66. {
  67.     int n,b,c;
  68.     int i ,J;
  69.     char titro[10];
  70.     char nomet[10];
  71.     livre  LL;
  72.     etudiant L;
  73.     etudiant et;
  74.     printf("saisir n\n" );
  75.     scanf("%d,&n" );
  76.     for(i=0; i<n; i++) {
  77.         printf("entrer le titre du livre:\n" );
  78.         gets(titro);
  79.         printf("entrer nom d'étudiant \n" );
  80.         gets(nomet);
  81.         printf("entrer jour debut \n" );
  82.         scanf("%d",&c);
  83.         printf("entre jour fin \n" );
  84.         scanf("%d",&b);
  85.     }
  86.     L= creer(nomet,c,b);
  87.     LL=suite(titro,et);
  88.     afficher(L);
  89.     afficher(LL);
  90.     printf(" l'emprunte du livre est %d\n",trouver(LL,J,titro));
  91.     system("pause" );
  92. }


Message édité par gilou le 22-05-2013 à 13:51:12
n°2191311
Profil sup​primé
Posté le 22-05-2013 à 12:45:25  answer
 

Bonjour.
 
Pour moi, il y a plusieurs choses qui font que ça ne peut pas compiler.
En voici quelques unes :
- Tu crées un 'etudiant nouveau' puis tu lui dis via une flèche '->' d'aller chercher une value rdans la structure.
Ce n'est sitrctement pas un pointeur, ça ne peut pas compiler!
Tu fais ça pour chaque structure, j'ai l'impression.
- A la fin, tu dis

Code :
  1. L = creer(nomer, c, b);

Mais creer retourne un etudiant ! et L est un livre..
 
PS : Tu ne peux pas malloc une variable qui n'est pas un pointeur.

n°2191322
gilou
Modérateur
Modzilla
Posté le 22-05-2013 à 14:11:41  profilanswer
 

Il y a une grosse faute de conception:
Il faut au départ séparer la saisie de la librairie de celle des emprunts.
Avec ce que tu as fait, tu ne peux saisir que les livres empruntés.
Il faut dans un premier temps te focaliser sur la librairie:
Créer une librairie comme une liste d'ouvrages.
Créér un enregistrement ouvrage avec saisie, et après validation, l'ajouter à la librairie (avec éventuellement un test pour ne pas ajouter deux fois le même ouvrage).
Sauver ta librairie dans un fichier.
Recharger ta librairie à partir d'un fichier sauvegardé.
 
Une fois que tu as cela, tu peux passer a la partie emprunt:
- Chercher un livre dans la librairie (et indication du fait qu'il est emprunté ou non si le livre est trouvé dans la librairie)
- Signaler qu'un livre non emprunté est maintenant emprunté, avec saisie du nom de l'emprunteur et la date de retour
- modifier tes opérations de lecture/écriture de la librairie pour sauvegarder ces nouvelles informations
...
 
A+,


Message édité par gilou le 22-05-2013 à 14:12:05

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  liste langage C (bug compilation code blocks)

 

Sujets relatifs
probleme langage CQuel langage choisir ?
Quel langage pour une petite appli web?script en langage batch
[C] Allocation memoire structuresCode imcomplet
Liste déroulante & Autofilter VBAC++ : Certification - laquelle ?
Code VBA pour coller un tableau excel dans corps de mail Outlook 
Plus de sujets relatifs à : liste langage C (bug compilation code blocks)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR