diff --git a/Labgen/a.out b/Labgen/a.out index 26c1cd3880170181255f8f5deff8e44319d3e462..a7f31d8ddde3f96c4943183255bde0d4207c6297 100755 Binary files a/Labgen/a.out and b/Labgen/a.out differ diff --git a/Labgen/labgen.c b/Labgen/labgen.c index 62d4a14a4221e5fc2cdf12a4363a9667fe3018d9..313e9273763e58e59446f18cf55c930b6210a8d5 100644 --- a/Labgen/labgen.c +++ b/Labgen/labgen.c @@ -198,20 +198,31 @@ int RS3_check(){ } /* RS4 : L'entrée et les sorties du labyrinthe doivent se situer sur la périphérie - * du labyrinthe */ + * du labyrinthe + * E est le point d'entrée + * S est un tableau dynamique de l'ensemble des sorties + * nb_S est le nombre de sorties + * size est un point donnant la taille du tableau */ int RS4(Point E, Point* S, int nb_S, Point size){ int i; Point tmp; if (S == NULL){ - printf("RS4 : La liste des sorties est vide.\n"); + fprintf(stderr,"RS4 : La liste des sorties est non initialisée.\n"); exit(1); } - if (E.c != 0 && E.l != 0 && E.c != size.c && E.l != size.l){ + else if (nb_S == 0){ + printf("RS4 : La liste des sorties est vide.\n"); + return 0; + } + + /* Vérification pour l'entrée */ + else if (E.c != 0 && E.l != 0 && E.c != size.c && E.l != size.l){ return 0; } + /* Vérification pour toutes les sorties */ else { for (i=0 ; i<nb_S ; i++){ tmp = S[i]; @@ -224,7 +235,9 @@ int RS4(Point E, Point* S, int nb_S, Point size){ } -/*int main(){ +/* Test des fonctions pour les règles sémantiques */ +int main(){ + char*** matrice = create_matrice(5,6); Point size = new_point(5,6); Point entree1 = new_point(0,0); @@ -232,11 +245,20 @@ int RS4(Point E, Point* S, int nb_S, Point size){ Point entree3 = new_point(5,0); Point entree4 = new_point(0,5); + change_val_matrice(entree1,"E",matrice); + change_val_matrice(entree2,"E",matrice); + change_val_matrice(entree3,"E",matrice); + change_val_matrice(entree4,"E",matrice); + Point* listeS = NULL; listeS = calloc(1,sizeof(Point)); - listeS[0] = new_point(0,0); - printf("listeS[0] : (%d,%d)\n",listeS[0].c, listeS[0].l); + listeS[0] = new_point(5,6); + /* A tester : pour plusieurs sorties */ + change_val_matrice(new_point(5,6),"S",matrice); + affichmat(matrice); + + printf("\nlisteS[0] : (%d,%d)\n",listeS[0].c, listeS[0].l); printf("Test entree1 : %d\n", RS4(entree1,listeS,1,size)); printf("Test entree2 : %d\n", RS4(entree2,listeS,1,size)); @@ -245,11 +267,12 @@ int RS4(Point E, Point* S, int nb_S, Point size){ return 0; -}*/ +} -int main () { +/* Test des fonctions de base de la matrice et de listevars */ +/*int main () { char*** matrice = create_matrice(5,6); Point p1 = new_point(4,2); @@ -278,4 +301,4 @@ int main () { printf("Deuxième valeur : %d\n",listevars.val[1]); return 0; -} +}*/