|
| Probleme Programmation C | |
| | |
Auteur | Message |
---|
Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Probleme Programmation C Lun 22 Nov 2010 - 2:16 | |
| Voila, je dois coder un déplacement aléatoire d'un robot dans un tableau que je crée. Le tout est regroupé dans une fonction de mise à jour qui effectue un déplacement et calcule son cout ( y'a un nombre limité d'energie pour se déplacer ) et il ne doit pas y avoir plus de 5000 mises à jour... Donc moi , je veux que le robot se déplace aléatoirement sur une des cases adjacentes sauf si il y a un obstacle. La taille de la grille est [x][y], tab c'est le tableau, les coordonnées du robot sont (n,m). ( z c'est l'orientation du robot mais pour l'instant je ne m'en occupe pas ) Les obstacles sont représentés par des 'X'. Si vous avez besoin de la donnée du projet pour mieux comprendre ce que je fais ou me proposer de meilleures solutions : Projet_Aspirator ( PDF )Voici la partie de code que je n'arrive pas à faire fonctionner : - Code:
-
void mise_a_jour(char *tab, int x, int y, int n, int m, int z) { int nbr_maj, nrj; int alea; srand (time(0));
for( nbr_maj=5000, nrj=5200 ; nbr_maj!=0&&nrj!=0 ; nbr_maj-- ) { alea=rand()%7;
printf("%d", alea);
switch(alea) { case 0 : if (*(tab+x*(n-1)+(m-1)) != 'X' ) { n=n-1; m=m-1; *(tab+x*n+m)= 'o'; break; } case 1 :
if (*(tab+x*n+(m-1)) != 'X' ) { m=m-1; *(tab+x*n+m)= 'o'; break; } case 2 :
if (*(tab+x*(n+1)+(m-1)) != 'X' ) { n=n+1; m=m-1; *(tab+x*n+m)= 'o'; break; } case 3 :
if (*(tab+x*(n+1)+m) != 'X' ) { n=n+1; *(tab+x*n+m)= 'o'; break; } case 4 :
if (*(tab+x*(n+1)+(m+1)) != 'X' ) { n=n+1; m=m+1; *(tab+x*n+m)= 'o'; break; } case 5 :
if (*(tab+x*n+(m+1)) != 'X' ) { m=m+1; *(tab+x*n+m)= 'o'; break; } case 6 :
if (*(tab+x*(n-1)+(m+1)) != 'X' ) { n=n-1; m=m+1; *(tab+x*n+m)= 'o'; break; } case 7 :
if (*(tab+x*(n-1)+m) != 'X' ) { n=n-1; *(tab+x*n+m)= 'o'; break; } } } }
Si vous voulez le code en entier : - Code:
-
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h>
int define(int); void orientation(char*, int, int, int, int); void position_obstacle(char*, int, int); void mise_a_jour(char*, int, int, int, int, int); void affiche(char*, int, int);
int main() { int x, y, n, m, z; x = define(x); y = define(y); char tab[x][y];
//initialisation du tableau par des espaces vides memset(tab[0], ' ', sizeof(tab));
n = define(n); m = define(m); z = define(z);
orientation(*tab, x, n, m, z);
position_obstacle(*tab, x, y);
mise_a_jour(*tab, x, y, n, m, z);
affiche(*tab, x, y); }
int define(int x) { static int i, X, Y;
switch (i) { case 0 : printf("\n Entrez la dimension verticale de l'espace ( nombre de lignes ) : "); do (scanf("%d", &x)); while (x<=0&&printf("Erreur la valeur entrée est incorrecte. Veuillez l'entrer à nouveau.")); X=x; break; case 1 : printf("\n Entrez la dimension horizontale de l'espace ( nombre de colonnes ) : "); do (scanf("%d", &x)); while (x<=0&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); Y=x; break; case 2 : printf("\n Entrez l'abscisse du robot : "); do (scanf("%d", &x)); while ((x<=0||x>=X)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; case 3 : printf("\n Entrez l'ordonnee du robot : "); do (scanf("%d", &x)); while ((x<=0||x>=Y)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; case 4 : printf("\n Entrez l'orientation du robot : "); do (scanf("%d", &x)); while ((x<=0||x>3)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; }
i++; return x; }
void orientation(char *tab, int x, int n, int m ,int z) { switch(z) { case 0 : *(tab+x*n+m)='|'; break; case 1 : *(tab+x*n+m)='/'; break; case 2 : *(tab+x*n+m)='-'; break; case 3 : *(tab+x*n+m)=''; break; }
}
void position_obstacle(char *tab, int x, int y) { int a=0, b=0;
while(1) { printf("\n Entrez l'abscisse de l'obstacle (ou -1 si pour ne pas ajouter d'obstable) : "); scanf("%d", &a); if(a==-1) break; printf("\n Entrez l'ordonnee de l'obstacle : "); scanf("%d", &b);
if ((0<=a)&&(a<=x-1)&&(0<=b)&&(b<=y-1)) switch (*(tab+x*a+b)) { case ' ': *(tab+x*a+b)='X'; break; case 'X': printf("\n ! Il y a des obstacles à la meme position. ! "); break; default : printf("\n ! Des obstacles sont à la meme position que le robot et n'apparaitrons pas ! "); } else { printf("\n Erreur : L'obstacle n'est pas dans l'espace. Il n'y apparaitra donc pas."); break; } } }
void mise_a_jour(char *tab, int x, int y, int n, int m, int z) { int nbr_maj, nrj; int alea; srand (time(0));
for( nbr_maj=5000, nrj=5200 ; nbr_maj!=0&&nrj!=0 ; nbr_maj-- ) { alea=rand()%7;
printf("%d", alea);
switch(alea) { case 0 : if (*(tab+x*(n-1)+(m-1)) != 'X' ) { n=n-1; m=m-1; *(tab+x*n+m)= 'o'; break; } case 1 :
if (*(tab+x*n+(m-1)) != 'X' ) { m=m-1; *(tab+x*n+m)= 'o'; break; } case 2 :
if (*(tab+x*(n+1)+(m-1)) != 'X' ) { n=n+1; m=m-1; *(tab+x*n+m)= 'o'; break; } case 3 :
if (*(tab+x*(n+1)+m) != 'X' ) { n=n+1; *(tab+x*n+m)= 'o'; break; } case 4 :
if (*(tab+x*(n+1)+(m+1)) != 'X' ) { n=n+1; m=m+1; *(tab+x*n+m)= 'o'; break; } case 5 :
if (*(tab+x*n+(m+1)) != 'X' ) { m=m+1; *(tab+x*n+m)= 'o'; break; } case 6 :
if (*(tab+x*(n-1)+(m+1)) != 'X' ) { n=n-1; m=m+1; *(tab+x*n+m)= 'o'; break; } case 7 :
if (*(tab+x*(n-1)+m) != 'X' ) { n=n-1; *(tab+x*n+m)= 'o'; break; } default : printf("BUG"); break; } } }
//fonction affiche : affichage du tableau void affiche(char *tab, int x, int y) { //declaration des variables int i, j;
//affichage du tableau avec bordures for(i=0;i<x;i++) { printf("\n");
for(j=0;j<y;j++) printf("----");
printf("-"); printf("\n");
for(j=0;j<y;j++) printf(": %c ", *(tab+x*i+j));
if(j==y) printf(":"); } printf("\n");
for(j=0;j<y;j++) { printf("----"); } printf("-");
}
Voila, Merci de votre aide | |
| | | Blip Gardien
Nombre de messages : 793 Age : 35 Date d'inscription : 19/02/2008
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 2:38 | |
| C'est quoi qui ne fonctionne pas dans la partie que tu nous montres ?
Le printf s'affiche ? Je te conseillerais également de sortir tes break de tes { } dans ton switch. | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 2:48 | |
| ça me met que la console cesse de fonctionner ... :s
sinon je peux pas les sortir car sinon, si y'a un obstacle ça va pas regarder la case d'apres ... :s | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 14:20 | |
| j ai TP d info cet aprem je regarderais ca. | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 15:14 | |
| ok merci | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 15:52 | |
| y as des partie que je comprend aps tu te casse al tete sur des truc vachment compliquer pour aps grand chose. J aurai besoin d info supplementaire car ton lien ne marche pas 1: c est du C ou du C++.
Sinon
int define(int x) { static int i, X, Y;
switch (i) { case 0 : printf("\n Entrez la dimension verticale de l'espace ( nombre de lignes ) : "); do (scanf("%d", &x)); while (x<=0 && printf("Erreur la valeur entrée est incorrecte. Veuillez l'entrer à nouveau.")); X=x; break; case 1 : printf("\n Entrez la dimension horizontale de l'espace ( nombre de colonnes ) : "); do (scanf("%d", &x)); while (x<=0 && printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); Y=x; break; case 2 : printf("\n Entrez l'abscisse du robot : "); do (scanf("%d", &x)); while ((x<=0||x>=X)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; case 3 : printf("\n Entrez l'ordonnee du robot : "); do (scanf("%d", &x)); while ((x<=0||x>=Y)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; case 4 : printf("\n Entrez l'orientation du robot : "); do (scanf("%d", &x)); while ((x<=0||x>3)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; }
i++; return x; }
Ton i n'est pas initialiser | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:10 | |
| alors c'est du C le lien marche bien normalement :s
sinon le static intialise i à 0
le probleme se situe dans la la fonction de mise_a_jour car ça marche tres bien sans ( mais le robot ne se déplace pas )
comment heberger un pdf pour que vous puissiez le voir ? | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:22 | |
| | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:38 | |
| Moi en fait la console ce lance mais effectivement arrivé a la mise a jour y as un bug de segmentation | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:50 | |
| alors j'ai repéré une petite erreur dans ta fonction tu met %7 et une case 7 Or tu n'aura jamais 7 vu que s'il reste 7 ca veut dire que c est divisible par 7 et donc ca fera 0.
Quand au probleme de segmentation: Tu fait 5000 fois la meme chose en tres peu de temp. reduit juste ton nbr_Maj a 20 tu vera
Sinon je te conseille de mettre plus d affichage genre a chaque deplacement en indiquant les deplacement precedent du robot et en mettant distinctivement la position actuel du robot.
PS ton programme marche avec ces modification: alea=rand()%8; nbr_maj=20
| |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:55 | |
| mais je dois mettre 5200 maj c'est dans la donnée :s
sinon peut etre que l'affichage intermediaire enleve la segmentation ... | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 16:56 | |
| peut etre j essaye de te le faire avec 5k alors je vien de tester malheureusement il y as un probleme au niveau d la memoire. Je vais essayer de voir au bout de combiend essai ca bug. bon alors mon prof vien de me dire que c'est ta memeoire qui est pas asez grande et que pour que cela marche il faut utiliser des conaissance qui me depassent actuelement desoler
EDIT: ca bug ver 150 pour moi si je vais suffisament lentement apres j ai une saturation de memoire ... | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 17:28 | |
| Je pense pas que le probleme vienne de la mémoire :s
j'ai 8 giga de ram donc normalement je peux faire tourner un truc comme ça je pense ...
pareil j'ai un i7 720Q comme processeur :s | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 17:52 | |
| En fait je dois pas m'y prendre correctement.
Je pense que ce que je fais est trop compliqué et peut etre remplacé par quelque chose de simple ( je ne fait de la programmation que 4h par semaine depuis 3 mois ... )
Peut etre que si j'ajoute la condition de sortie de la boucle une fois toute les cases visitées ça va marcher ... | |
| | | Zildark OWien
Nombre de messages : 1124 Age : 30 Localisation : Dans ton cul ^^ Sinon c'est Dijon xD Date d'inscription : 26/04/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 18:49 | |
| Bonne chance En tout cas moi je sais que je ferais jamais ça >< | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 19:02 | |
| En fait, apres quelque test j'ai regardé ...
Au bout de 5 maj, il a parcouru les 2/3 d'une grille 10/10 ...
Donc le probleme est dans la boucle de mise à jour ...
Je pense qu'il est dans le switch plus exactement mais je vois pas ce qui ne va pas :s | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 22:00 | |
| essaye de créé ton tableau autrement. Utilise le malloc (allocation dynamic); | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 22:01 | |
| j'ai pas vu le malloc mais j'ai compris mon erreur ... en fait, j'avais pas fixé de limites pour le tableau d'ou la segmention fault des que ça en sortait bref j'ai corrigé tout ça merci de votre aide en tout cas | |
| | | Aron Gardien
Nombre de messages : 1393 Age : 32 Localisation : manche Date d'inscription : 08/05/2009
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 22:25 | |
| | |
| | | Grok Gardien
Nombre de messages : 3641 Age : 40 Localisation : Besançon / Mulhouse Date d'inscription : 09/01/2006
| Sujet: Re: Probleme Programmation C Lun 22 Nov 2010 - 22:54 | |
| Et Dieu inventa le Garbage Collector... ou c'était McCarthy. | |
| | | Zildark OWien
Nombre de messages : 1124 Age : 30 Localisation : Dans ton cul ^^ Sinon c'est Dijon xD Date d'inscription : 26/04/2010
| Sujet: Re: Probleme Programmation C Mar 23 Nov 2010 - 1:02 | |
| | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Dim 28 Nov 2010 - 20:19 | |
|
Dernière édition par hypopsis le Mer 1 Déc 2010 - 22:36, édité 1 fois | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Dim 28 Nov 2010 - 21:12 | |
| Voila, j'ai à nouveau un probleme, en fait avant, le programme ne pouvait afficher que les tableaux qui étaient carré .... Alors j'ai essayé de corriger le probleme mais j'ai pas réussi :s Je pense que le probleme se situe dans la définition du mur autour de l'espace ou le robot se déplace ou bien dans l'affichage ... Affichage : - Code:
-
void affiche(char *tab, int ligne, int colonne) { //declaration des variables int i, j;
//affichage du tableau avec bordures for(i=1;i<(ligne-1);i++) { printf("\n");
for(j=1;j<(colonne-1);j++) printf("----");
printf("-"); printf("\n");
for(j=1;j<(colonne-1);j++) printf(": %c ", *(tab+(colonne-1)*i+j));
if(j==(colonne-1)) printf(":"); } printf("\n");
for(j=1;j<(ligne-1);j++) { printf("----"); } printf("-");
printf("\n");
} Creation du mur : - Code:
-
void creation_mur(char *tab, int ligne, int colonne) { int i,j;
for(j=0;j<ligne;j++) { *(tab+j*colonne)=(char) 4; *(tab+colonne*(j-1)+1)=(char) 4; }
for(i=0;i<colonne;i++) { *(tab+i)=(char) 4; *(tab+colonne*(ligne-1)+i)=(char) 4; }
} Code complet : - Code:
-
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h>
int define(int); void orientation(char*, int, int, int, int); void creation_mur(char*, int, int); void position_obstacle(char*, int, int); void mise_a_jour(char*, int, int, int, int, int); void affiche(char*, int, int);
int main() { srand (time(0)); int ligne=0, colonne=0, ligne_robot=0, colonne_robot=0, z=0; ligne = define(ligne); colonne = define(colonne); char tab[ligne][colonne];
//initialisation du tableau par des espaces vides memset(tab[0], ' ', sizeof(tab));
ligne_robot = define(ligne_robot); colonne_robot = define(colonne_robot); z = define(z);
orientation(*tab, ligne, ligne_robot, colonne_robot, z);
creation_mur(*tab, ligne, colonne);
position_obstacle(*tab, ligne, colonne);
affiche(*tab, ligne, colonne);
mise_a_jour(*tab, ligne, colonne, ligne_robot, colonne_robot, z);
affiche(*tab, ligne, colonne);
return 0; }
int define(int x) { static int k, X, Y;
switch (k) { case 0 : printf("\n Entrez la dimension verticale de l'espace ( nombre de lignes ) : "); do (scanf("%d", &x)); while (x<=0&&printf("Erreur la valeur entrée est incorrecte. Veuillez l'entrer à nouveau.")); x=x+2; X=x; break; case 1 : printf("\n Entrez la dimension horizontale de l'espace ( nombre de colonnes ) : "); do (scanf("%d", &x)); while (x<=0&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); x=x+2; Y=x; break; case 2 : printf("\n Entrez l'abscisse du robot : "); do (scanf("%d", &x)); while ((x<=0||x>X)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); x=x+1; break; case 3 : printf("\n Entrez l'ordonnee du robot : "); do (scanf("%d", &x)); while ((x<=0||x>Y)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); x=x+1; break; case 4 : printf("\n Entrez l'orientation du robot : "); do (scanf("%d", &x)); while ((x<0||x>3)&&printf("Erreur la valeur entree est incorrecte. Veuillez l'entrer à nouveau.")); break; }
k++; return x; }
void orientation(char *tab, int ligne, int ligne_robot, int colonne_robot ,int z) { switch(z) { case 0 : *(tab+ligne*ligne_robot+colonne_robot)='|'; break; case 1 : *(tab+ligne*ligne_robot+colonne_robot)='/'; break; case 2 : *(tab+ligne*ligne_robot+colonne_robot)='-'; break; case 3 : *(tab+ligne*ligne_robot+colonne_robot)='\'; break; }
}
void creation_mur(char *tab, int ligne, int colonne) { int i,j;
for(j=0;j<ligne;j++) { *(tab+j*colonne)=(char) 4; *(tab+colonne*(j-1)+1)=(char) 4; }
for(i=0;i<colonne;i++) { *(tab+i)=(char) 4; *(tab+colonne*(ligne-1)+i)=(char) 4; }
}
void position_obstacle(char *tab, int ligne, int colonne) { int a=0, b=0;
while(1) { printf("\n Entrez l'abscisse de l'obstacle (ou -1 si pour ne pas ajouter d'obstable) : "); scanf("%d", &a); if(a==-1) break; a=a+1; printf("\n Entrez l'ordonnee de l'obstacle : "); scanf("%d", &b); b=b+1;
if ((0<a)&&(a<=ligne-1)&&(0<b)&&(b<=colonne-1)) switch (*(tab+ligne*a+b)) { case ' ': *(tab+ligne*a+b)='X'; break; case 'X': printf("\n ! Il y a des obstacles à la meme position. ! "); break; case ((char) 4): printf("\n ! L'obstacle ne peut se trouver sur un mur ! "); break; default : printf("\n ! Des obstacles sont à la meme position que le robot et n'apparaitrons pas ! "); } else { printf("\n Erreur : L'obstacle n'est pas dans l'espace. Il n'y apparaitra donc pas."); break; } } }
void mise_a_jour(char *tab, int ligne, int colonne, int ligne_robot, int colonne_robot, int z) { int alea; int xx, yy, compteur=0, nbr_maj=0, energie=5200;
while(nbr_maj < 5000 && energie >= 0) {
nbr_maj++; compteur=0;
for(xx=0; xx<ligne; xx++) { for(yy=0; yy<colonne; yy++) { if (*(tab+ligne*xx+yy) != ' ') compteur++; } }
if (compteur==(ligne*colonne)||energie==0) break;
alea=rand()%8;
switch(alea) { case 0 : if (*(tab+ligne*(ligne_robot-1)+(colonne_robot-1)) != 'X' && *(tab+ligne*(ligne_robot-1)+(colonne_robot-1)) != (char)4 ) { ligne_robot=ligne_robot-1; colonne_robot=colonne_robot-1; *(tab+ligne*ligne_robot+colonne_robot)= '\'; } break; case 1 :
if (*(tab+ligne*ligne_robot+(colonne_robot-1)) != 'X' && *(tab+ligne*ligne_robot+(colonne_robot-1)) !=(char)4) { colonne_robot=colonne_robot-1; *(tab+ligne*ligne_robot+colonne_robot)= '|'; } break; case 2 :
if (*(tab+ligne*(ligne_robot+1)+(colonne_robot-1)) != 'X' && *(tab+ligne*(ligne_robot+1)+(colonne_robot-1)) !=(char)4) { ligne_robot=ligne_robot+1; colonne_robot=colonne_robot-1; *(tab+ligne*ligne_robot+colonne_robot)= '/'; } break; case 3 :
if (*(tab+ligne*(ligne_robot+1)+colonne_robot) != 'X' && *(tab+ligne*(ligne_robot+1)+colonne_robot) !=(char)4) { ligne_robot=ligne_robot+1; *(tab+ligne*ligne_robot+colonne_robot)= '-'; } break; case 4 :
if (*(tab+ligne*(ligne_robot+1)+(colonne_robot+1)) != 'X' && *(tab+ligne*(ligne_robot+1)+(colonne_robot+1)) !=(char)4) { ligne_robot=ligne_robot+1; colonne_robot=colonne_robot+1; *(tab+ligne*ligne_robot+colonne_robot)= '\'; } break; case 5 :
if (*(tab+ligne*ligne_robot+(colonne_robot+1)) != 'X' && *(tab+ligne*ligne_robot+(colonne_robot+1)) !=(char)4) { colonne_robot=colonne_robot+1; *(tab+ligne*ligne_robot+colonne_robot)= '|'; } break; case 6 :
if (*(tab+ligne*(ligne_robot-1)+(colonne_robot+1)) != 'X' && *(tab+ligne*(ligne_robot-1)+(colonne_robot+1)) !=(char)4) { ligne_robot=ligne_robot-1; colonne_robot=colonne_robot+1; *(tab+ligne*ligne_robot+colonne_robot)= '/'; } break; case 7 :
if (*(tab+ligne*(ligne_robot-1)+colonne_robot) != 'X' && *(tab+ligne*(ligne_robot-1)+colonne_robot) !=(char)4) { ligne_robot=ligne_robot-1; *(tab+ligne*ligne_robot+colonne_robot)= '-'; } break; } }
if(nbr_maj==5000) printf("Time Out"); else if(energie==0) printf("Plus d'Energie !"); else printf("Succes !");
printf("\n Nombre de mises a jour : %d", nbr_maj); printf("\n Energie restante : %d", energie); }
//fonction affiche : affichage du tableau void affiche(char *tab, int ligne, int colonne) { //declaration des variables int i, j;
//affichage du tableau avec bordures for(i=1;i<(ligne-1);i++) { printf("\n");
for(j=1;j<(colonne-1);j++) printf("----");
printf("-"); printf("\n");
for(j=1;j<(colonne-1);j++) printf(": %c ", *(tab+(colonne-1)*i+j));
if(j==(colonne-1)) printf(":"); } printf("\n");
for(j=1;j<(ligne-1);j++) { printf("----"); } printf("-");
printf("\n");
} | |
| | | hypopsis Emissaire
Nombre de messages : 143 Age : 34 Date d'inscription : 22/09/2010
| Sujet: Re: Probleme Programmation C Dim 28 Nov 2010 - 23:55 | |
| ok je retravaillerais dessus demain pendant mon tp d'info (13h30 - 15h30) | |
| | | Ellidan Emissaire
Nombre de messages : 84 Age : 33 Date d'inscription : 14/11/2010
| Sujet: Re: Probleme Programmation C Lun 29 Nov 2010 - 0:12 | |
| ok merci | |
| | | Contenu sponsorisé
| Sujet: Re: Probleme Programmation C | |
| |
| | | | Probleme Programmation C | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|