Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct unite_enseignement {
- char identifiant[10 + 1];
- char nom[200 + 1];
- int credits;
- char responsable[60 + 1];
- struct unite_enseignement *prerequis[5];
- struct unite_enseignement *corequis[5];
- };
- void encoder_ue(void);
- void print_prerequis(struct unite_enseignement *ue);
- void ajouter_prerequis(struct unite_enseignement *ue1,
- struct unite_enseignement *ue2);
- struct unite_enseignement creer_ue(char identifiant[11], char nom[201], int credits,
- char responsable[61]);
- /**
- * Renvoie l'index du premier élément libre ou length si tab est plein.
- */
- static int premier_libre(struct unite_enseignement *tab[], int length) {
- for (int i = 0; i < length; i++) {
- if (tab[i] == NULL)
- return i;
- }
- return length;
- }
- int main() { encoder_ue(); }
- struct unite_enseignement creer_ue(char identifiant[11], char nom[201], int credits,
- char responsable[61]) {
- struct unite_enseignement unite;
- strcpy(unite.identifiant, identifiant);
- strcpy(unite.nom, nom);
- unite.credits = credits;
- strcpy(unite.responsable, responsable);
- for (int i = 0; i < 5; i++) {
- unite.corequis[i] = NULL;
- unite.prerequis[i] = NULL;
- }
- return unite;
- }
- void encoder_ue() {
- struct unite_enseignement ue = creer_ue("", "", 0, "");
- printf("Entrer l'identifiant de l'unité : ");
- scanf("%10[^\n]%*c", &(ue.identifiant));
- printf("Entrer le nom de l'unité : ");
- scanf("%200[^\n]%*c", &(ue.nom));
- printf("Entrer le nombre de crédits : ");
- scanf("%i%*c", &(ue.credits));
- printf("Entrer le nom du responsable : ");
- scanf("%60[^\n]%*c", &(ue.responsable));
- }
- void print_prerequis(struct unite_enseignement *ue) {
- printf("--------- Prérequis de %s ---------\n", ue->nom);
- int max_index = premier_libre(ue->prerequis, 5);
- if (max_index == 0) {
- printf("Aucune.\n");
- } else {
- for (int i = 0; i < max_index; i++) {
- struct unite_enseignement *pr = ue->prerequis[i];
- printf("%d) %s (%dc)\n", i, pr->nom, pr->credits);
- }
- }
- }
- void ajouter_prerequis(struct unite_enseignement *ue1,
- struct unite_enseignement *ue2) {
- if (ue1 == NULL || ue2 == NULL) {
- return;
- }
- int first_null = premier_libre(ue2->prerequis, 5);
- if (first_null == 5) {
- return;
- }
- ue2->prerequis[first_null] = ue1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement