Advertisement
iSach

Untitled

Oct 19th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct unite_enseignement {
  7. char identifiant[10 + 1];
  8. char nom[200 + 1];
  9. int credits;
  10. char responsable[60 + 1];
  11. struct unite_enseignement *prerequis[5];
  12. struct unite_enseignement *corequis[5];
  13. };
  14.  
  15. void encoder_ue(void);
  16. void print_prerequis(struct unite_enseignement *ue);
  17. void ajouter_prerequis(struct unite_enseignement *ue1,
  18. struct unite_enseignement *ue2);
  19. struct unite_enseignement creer_ue(char identifiant[11], char nom[201], int credits,
  20. char responsable[61]);
  21.  
  22. /**
  23. * Renvoie l'index du premier élément libre ou length si tab est plein.
  24. */
  25. static int premier_libre(struct unite_enseignement *tab[], int length) {
  26. for (int i = 0; i < length; i++) {
  27. if (tab[i] == NULL)
  28. return i;
  29. }
  30. return length;
  31. }
  32.  
  33. int main() { encoder_ue(); }
  34.  
  35. struct unite_enseignement creer_ue(char identifiant[11], char nom[201], int credits,
  36. char responsable[61]) {
  37. struct unite_enseignement unite;
  38. strcpy(unite.identifiant, identifiant);
  39. strcpy(unite.nom, nom);
  40. unite.credits = credits;
  41. strcpy(unite.responsable, responsable);
  42. for (int i = 0; i < 5; i++) {
  43. unite.corequis[i] = NULL;
  44. unite.prerequis[i] = NULL;
  45. }
  46. return unite;
  47. }
  48.  
  49. void encoder_ue() {
  50. struct unite_enseignement ue = creer_ue("", "", 0, "");
  51.  
  52. printf("Entrer l'identifiant de l'unité : ");
  53. scanf("%10[^\n]%*c", &(ue.identifiant));
  54. printf("Entrer le nom de l'unité : ");
  55. scanf("%200[^\n]%*c", &(ue.nom));
  56. printf("Entrer le nombre de crédits : ");
  57. scanf("%i%*c", &(ue.credits));
  58. printf("Entrer le nom du responsable : ");
  59. scanf("%60[^\n]%*c", &(ue.responsable));
  60. }
  61.  
  62. void print_prerequis(struct unite_enseignement *ue) {
  63. printf("--------- Prérequis de %s ---------\n", ue->nom);
  64. int max_index = premier_libre(ue->prerequis, 5);
  65. if (max_index == 0) {
  66. printf("Aucune.\n");
  67. } else {
  68. for (int i = 0; i < max_index; i++) {
  69. struct unite_enseignement *pr = ue->prerequis[i];
  70. printf("%d) %s (%dc)\n", i, pr->nom, pr->credits);
  71. }
  72. }
  73. }
  74.  
  75. void ajouter_prerequis(struct unite_enseignement *ue1,
  76. struct unite_enseignement *ue2) {
  77. if (ue1 == NULL || ue2 == NULL) {
  78. return;
  79. }
  80.  
  81. int first_null = premier_libre(ue2->prerequis, 5);
  82.  
  83. if (first_null == 5) {
  84. return;
  85. }
  86.  
  87. ue2->prerequis[first_null] = ue1;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement