From 6ccd2ebf276198eb5f868cefa534bf22e8695466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9l=C3=A8ne=20TRAN?= <helene.tran@ensiie.fr> Date: Wed, 27 Dec 2017 14:08:59 +0100 Subject: [PATCH] =?UTF-8?q?Probl=C3=A8me=20de=20SIZE=20r=C3=A9gl=C3=A9=20+?= =?UTF-8?q?=20rajout=20de=20quelques=20r=C3=A8gles=20RS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Labgen/a.out | Bin 13464 -> 13656 bytes Labgen/labgen.c | 159 ++++++++++++++++++++++++++++++++++++++---------- Labgen/labgen.h | 12 ++-- 3 files changed, 134 insertions(+), 37 deletions(-) diff --git a/Labgen/a.out b/Labgen/a.out index 9afc3faa27b9fecef4426a5efd8435c6cd41ce9b..26c1cd3880170181255f8f5deff8e44319d3e462 100755 GIT binary patch delta 3488 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 delta 2453 zcmaJ@du&rx7(e%Rmvyb%`Wjt<b$7UK-54_^3}k?G;Kj=vVLS>5q6k|8NMMo~CSg=) zG&Gm$-~_~11VV^2i&-cpQ*qtHQ9&cl2${$qbBs`!NYydQHoSi4+}k>c@g%*!bAI1< ze&6Gq-nM7U(ajA`wx{S|;VIo26Qbjc>EM;toH+(%HOJtllQ`BYG^)j)Gv8WnEWVx9 zG40nX`_h{iH0b60rj5KKc$9rlV=$z-kr-}2mP#OeNgtd)j$ul#`q~)rsMy}C5&hxF z`+v)_=ocbkp_i!MJP8j;=mm#>rHe44Bt*o(Bvul7aDB2@=z;CCg?{g0pU}%l0#TbS z^rpYPSe9k*2~?`2|1zlGr0U$(Odf@~J-Iv)gjo$P(H1UtLVA&+2eLe{NfM%OwAGbM z!XUr`$rF`0GwhkwQ9ncS3`(3%SrmZZLz%@y<_A$i;DejAnR*cvTS$mVAHJx~8%HA? z!6VwoH|($yx%2?3N%HhdT(wG^0fN>D>8=|k%?L*hQxsyN<cWYSCi*WE+79%iz3GW( z(2rkFu{`r|<Nh^@8-Enr`!tF((F%_IuhuUqS^By}HJ@UQZi)M|#Cip6_6ehm#1)U{ z(QIMV+Y<VcbaNs##K2&rhM4zA!}(5+=)WH3((xhPOj|N|_=Qnl{U~~sgVF{pK7sgm z;y&Hd@>g<rG*^a>?6HK}h+xIAEQc5%A}3%bWmSR$bfkxr;0A_Z9mNiDW2fl1bhYv8 zk;FN1y*@K};6Ci(Qt$`*OmCFu5!@9&cLOF3qVH?x+I2KD(f6C7H3>q5I1*<eBnTHW zHioh)RFqr=A?iODiY7X73L=EG>5%Den8A6$nF-O>S-_Cgn#e&?(hE07ImKjpxaUH1 z!AH3)8;D3H5qWZ~$X-=sQ$i%6(MdBJt6_(o5;tn*QJ@kgcVOa+Fp%qhC5#tJ8;L=j zMiQqRX3E71M@r!vpyY8HX04>zp$_7d0$-k1HnALj*g8O#q+_9Pi1SrgN?ahDM-cO( z5)(r1r-8V=W-pu@SRx6_cCbj?OB3ma;RL-}+3+0XPyCJW>QR!LNBv6_e@B9L0!<yx zcQ%x*DqC6Rm&-h5D=Gqx7Ysb|h=HjDmoGB=hZgxSRTNx@<JOAp4>S?)y<m2F4l}-T z`{r%6e2t5DI;x5sRRubz38COq#!|*x1G7~4OusA3X94>G4**^nlI4EDA;2W)m=&@p z0&E1V0Q?zFV=LfVxS9t5w*oc+wgY|#_%58^AYc`A%>pg{3GjJ93uuzT>{^DHIs?u( z8`;XcxYS(C)(qk;=DhOXA%jW8r7X?xCc7YY+^WZtwXn>EPZfM_fjtM56L!I;(O4P9 z323sHRB&wwUoqQR&pkX0P#wb)EOs^=!=(T%F}w!gb`0;b<W2q%YPm30QPV}`o(7d# z;KdQVFJpenS(w&9S!}R7W1cqHn^B~}2D_WJqy?AR&uPjn@SS;dXpjN%|H&Is{KsbO z9t|>~W<zkp<ROM_HsLk7Z?SU>_*QPQjr`P*L9Qzq#gL5&rJ?KC<;cL79j2`1DzjYc zrXGjr6OIUY9(OZlW+FcBu-bOQ+K48gWAGj!gEW_n-MHIfWg6)71ZMKGjgMB;NNl#R z)Hn}xZo03BJ`wt!SY3Up^<&lQQLO_iKP_3=MUN0{!!(`^|B+|q@}M{q$&@RFnUeD& zyfoihy^>g<+6+~7pQ^eZc;lEJC#ifR<tHHWt|TL-r+~JrI^-9djB5Hs$V+$<8TaOA z+OkzIew>@y3so<SjZSOHN2>LbUa``v10E+;{v9<(qq-{yJgp@wta^-BdqA%_cy$w= zL@&7pGb3w5HEQ0f1iC|bIJ1_b^^}U&`4{k1+x8mKKzdZkx#OEC9uK+-Rx=nEeuAH! zvIL);5=hxrz4OHy@=gefMbRYo&tzQcD%Qmh+meQNxMrB*x0X*+<R-EB3s<o*ere<X xoNDoX*AvEOcw3Rttp1-$3eK9glV!W6;M3C=G6sBq`b=Gmle(Z(4IZ9q{|Aga59I&= diff --git a/Labgen/labgen.c b/Labgen/labgen.c index 1f520ba..62d4a14 100644 --- a/Labgen/labgen.c +++ b/Labgen/labgen.c @@ -1,37 +1,42 @@ #include "labgen.h" -point size; /*Attention c'est la taille réelle de la matrice*/ +Point size; /*Attention c'est la taille de l'énoncé. */ /* char *** matrice = NULL ; */ int in,out; variables listevars; -/* Crée un nouveau point de coordonnées (x,y) */ -point new_point(int x, int y) +/* Crée un nouveau point de coordonnées (c,l) + * --> Attention : l'ordre n'est pas logique (colonne, ligne) + */ +Point new_point(int c, int l) { - point monpoint; - monpoint.x = x; - monpoint.y = y; + Point monpoint; + monpoint.c = c; + monpoint.l = l; return monpoint; } /* Crée une matrice de taille (s1, s2) + * --> Attention : l'ordre n'est pas logique (colonne, ligne) + * s1 est le nombre de colonnes + * s2 est le nombre de lignes + * Implémentation de la matrice en mode naturel <------- * /!\ Attention : toujours créer la matrice avant d'utiliser * les autres fonctions */ char*** create_matrice(int s1, int s2) { int i,j; - char*** matrice = malloc((s1+1)*sizeof(char **)); + char*** matrice = malloc((s2+1)*sizeof(char **)); - for (i= 0; i<s1+1; i++){ - matrice[i] = malloc((s2+1) * sizeof(char *)); - for (j=0; j<s2+1; j++) { + for (i= 0; i<=s2; i++){ + matrice[i] = malloc((s1+1) * sizeof(char *)); + for (j=0; j<=s1; j++) { matrice[i][j] = malloc(sizeof(char)); strcpy(matrice[i][j],""); } } - size = new_point(s1+1,s2+1); - /*Attention c'est la taille réelle de la matrice*/ + size = new_point(s1,s2); in = 0; out = 0; return matrice; @@ -39,40 +44,40 @@ char*** create_matrice(int s1, int s2) /* Renvoie la valeur de la matrice de coordonnées p */ -char* lecture(point p, char*** matrice) +char* lecture(Point p, char*** matrice) { if (matrice == NULL){ printf("Matrice non initialisée.\n"); } - else if (p.x >= 0 && p.y >= 0 && p.x < size.x && p.y < size.y){ - return matrice[p.x][p.y]; + else if (p.c >= 0 && p.l >= 0 && p.c <= size.c && p.l <= size.l){ + return matrice[p.l][p.c]; } else - printf("Impossible de lire la valeur au point (%d,%d).\n", p.x,p.y); + printf("Impossible de lire la valeur au point (%d,%d).\n", p.c,p.l); return NULL; } /* void stock_val */ /* Change la valeur de la matrice de coordonnées p par la valeur msg */ -void change_val_matrice(point p, char * msg, char*** matrice) +void change_val_matrice(Point p, char * msg, char*** matrice) { if (matrice == NULL){ printf("Matrice non initialisée.\n"); } - else if (p.x >= 0 && p.y >= 0 && p.x < size.x && p.y < size.y) { + else if (p.c >= 0 && p.l >= 0 && p.c <= size.c && p.l <= size.l) { char * m1; m1 = malloc(strlen(msg)*sizeof(char)); strcpy(m1,msg); - if (matrice[p.x][p.y] != NULL){ - free(matrice[p.x][p.y]) ; + if (matrice[p.l][p.c] != NULL){ + free(matrice[p.l][p.c]) ; } - matrice[p.x][p.y] = m1; + matrice[p.l][p.c] = m1; } else { printf("Impossible de changer de valeur la valeur au point (%d,%d).\n", - p.x,p.y); + p.c,p.l); } } @@ -80,7 +85,7 @@ void change_val_matrice(point p, char * msg, char*** matrice) /*void ligne(){ int j; - for (j=0;j<size.y;j++) + for (j=0;j<size.l;j++) printf(" -------"); printf("\n"); }*/ @@ -89,8 +94,8 @@ void affichmat(char*** matrice) { int i,j; /*ligne();*/ - for(i=0;i<size.x;i++){ - for(j=0;j<size.y;j++){ + for(i=0;i<=size.l;i++){ + for(j=0;j<=size.c;j++){ printf("|%s \t",matrice[i][j]); } printf("|\n"); @@ -152,11 +157,103 @@ void create_modif_var(char* nom, int val) { } -/*int main () { - char*** matrice = create_matrice(5,4); +/* Règles sémantiques : + * Retourne 1 quand c'est correct + * Retourne 0 sinon */ - point p1 = new_point(5,4); - printf("Point p1 (%d,%d)\n",p1.x,p1.y); +/* RS1 : Le labyrinthe doit avoir au moins 2 lignes et au moins 2 colonnes */ +int RS1(Point size){ + if (size.c >= 1 && size.l >= 1) + return 1; + printf("RS1 : Le labyrinthe doit avoir au moins 2 lignes et au moins 2 colonnes.\n"); + return 0; +} + +/* RS2_count : Le labyrinthe doit avoir une et une seule entrée */ +int RS2_count(int countE){ + if (countE == 1) + return 1; + printf("RS2 : Le labyrinthe doit avoir une et une seule entrée.\n"); + return 0; +} + +/* RS2_check : L'entrée ne peut être ni une sortie ni une entrée de trou de vers */ +int RS2_check(){ + /* A faire */ + return 0; +} + +/* RS3_count : Le labyrinthe doit avoir au moins une sortie */ +int RS3_count(int countS){ + if (countS >= 1) + return 1; + printf("RS3 : Le labyrinthe doit avoir au moins une sortie.\n"); + return 0; +} + +/* RS3_check : La sortie ne peut être ni l'entrée ni une entrée de trou de vers */ +int RS3_check(){ + /* A faire */ + return 0; +} + +/* RS4 : L'entrée et les sorties du labyrinthe doivent se situer sur la périphérie + * du labyrinthe */ +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"); + exit(1); + } + + if (E.c != 0 && E.l != 0 && E.c != size.c && E.l != size.l){ + return 0; + } + + else { + for (i=0 ; i<nb_S ; i++){ + tmp = S[i]; + if (tmp.c != 0 && tmp.l != 0 && tmp.c != size.c && tmp.l != size.l){ + return 0; + } + } + } + return 1; + } + + +/*int main(){ + Point size = new_point(5,6); + + Point entree1 = new_point(0,0); + Point entree2 = new_point(5,6); + Point entree3 = new_point(5,0); + Point entree4 = new_point(0,5); + + + 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); + + printf("Test entree1 : %d\n", RS4(entree1,listeS,1,size)); + printf("Test entree2 : %d\n", RS4(entree2,listeS,1,size)); + printf("Test entree3 : %d\n", RS4(entree3,listeS,1,size)); + printf("Test entree4 : %d\n", RS4(entree4,listeS,1,size)); + + + return 0; +}*/ + + + +int main () { + char*** matrice = create_matrice(5,6); + + Point p1 = new_point(4,2); + printf("Point p1 (%d,%d)\n",p1.c,p1.l); printf("\nAppel de la fonction change_val_matrice(p1,ABC)\n"); change_val_matrice(p1,"ABC",matrice); @@ -165,7 +262,7 @@ void create_modif_var(char* nom, int val) { change_val_matrice(p1, "DEF", matrice); printf("Point p1 :%s\n", lecture(p1,matrice)); - printf("\nTaille de la matrice : (%d,%d)\n",size.x-1,size.y-1); + printf("\nTaille de la matrice : (%d,%d)\n",size.c,size.l); printf("Matrice correspondante :\n"); affichmat(matrice); @@ -181,4 +278,4 @@ void create_modif_var(char* nom, int val) { printf("Deuxième valeur : %d\n",listevars.val[1]); return 0; -}*/ +} diff --git a/Labgen/labgen.h b/Labgen/labgen.h index 5aeb11e..c943c52 100644 --- a/Labgen/labgen.h +++ b/Labgen/labgen.h @@ -4,9 +4,9 @@ #define TAILLE 255 typedef struct { -int x; -int y; -} point; +int c; +int l; +} Point; typedef struct { char* ident[TAILLE]; @@ -14,11 +14,11 @@ int val[TAILLE]; int last; } variables; -point new_point(int ,int); +Point new_point(int ,int); char*** create_matrice(int,int); -char* lecture(point,char***); -void change_val_matrice(point,char*, char***); +char* lecture(Point,char***); +void change_val_matrice(Point,char*, char***); void affichmat(char***); void init_listevars(); -- GitLab