Advertisement
iSach

Untitled

Oct 19th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 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. 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. 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. char *identifiant, *nom, *responsable;
  51. int *credits;
  52.  
  53. printf("Entrer l'identifiant de l'unité : ");
  54. scanf("%10[^\n]%*c", identifiant);
  55. printf("Entrer le nom de l'unité : ");
  56. scanf("%200[^\n]%*c", nom);
  57. printf("Entrer le nombre de crédits : ");
  58. scanf("%i%*c", credits);
  59. printf("Entrer le nom du responsable : ");
  60. scanf("%60[^\n]%*c", responsable);
  61.  
  62. struct unite_enseignement *ue = creer_ue(identifiant, nom, credits, responsable);
  63. }
  64.  
  65. void print_prerequis(struct unite_enseignement *ue) {
  66. printf("--------- Prérequis de %s ---------\n", ue->nom);
  67. int max_index = premier_libre(ue->prerequis, 5);
  68. if (max_index == 0) {
  69. printf("Aucune.\n");
  70. } else {
  71. for (int i = 0; i < max_index; i++) {
  72. struct unite_enseignement *pr = ue->prerequis[i];
  73. printf("%d) %s (%dc)\n", i, pr->nom, pr->credits);
  74. }
  75. }
  76. }
  77.  
  78. void ajouter_prerequis(struct unite_enseignement *ue1,
  79. struct unite_enseignement *ue2) {
  80. if (ue1 == NULL || ue2 == NULL) {
  81. return;
  82. }
  83.  
  84. int first_null = premier_libre(ue2->prerequis, 5);
  85.  
  86. if (first_null == 5) {
  87. return;
  88. }
  89.  
  90. ue2->prerequis[first_null] = ue1;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement