liste langage C (bug compilation code blocks)

liste langage C (bug compilation code blocks) - C - Programmation

Marsh Posté le 22-05-2013 à 11:02:33    

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 ... :)

Reply

Marsh Posté le 22-05-2013 à 11:02:33   

Reply

Marsh Posté le 22-05-2013 à 11:19:46    

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
Reply

Marsh Posté le 22-05-2013 à 12:45:25    

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.

Reply

Marsh Posté le 22-05-2013 à 14:11:41    

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é!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed