CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programme Labyrinthe

Astarasa
Astarasa
Niveau 3
11 novembre 2011 à 15:33:59

Bonjour,

J'ai un problème dans mon labyrinthe.
Il est simple c'est un labyrinthe fermer entouré " * ".
Le point de départ et d'arrivé est fixe " D " et " A ".
Pour voir un chemin du Départ à l'arrivé on fait :

  • 32D23456789+++*
  • 4323456789++++*
  • 543456789+++++*
  • 65456789++++++*
  • 76567A789+++++*

J'ai réussi la fonction qui initialise tout + l'affichage et la fonction qui place les caractères autour de D et A. Mais je n'arrive pas à finir ma fonction qui doit calculer le chemin le plus court.

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <assert.h>
  4. include <time.h>
  1. define N 10
  2. define M 10

matrice[2][4]='D';
matrice[7][3]='A';

void chemincourt(char matrice[N][M])
{
int i;
int j;
int xmin, ymin;
int xcourant,ycourant;
int minimun;
int haut=255,droite=255,gauche=255,bas=255;

for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{

if(matrice[i][j]=='A')
{

if(matrice[i][j+1]!='*')
{
droite=matrice[i][j+1];
}

if(matrice[i+1][j]!='*')
{
haut=matrice[i+1][j];
}

if(matrice[i-1][j]!='*')
{
bas=matrice[i-1][j];
}

if(matrice[i][j-1]!='*')
{
gauche=matrice[i][j-1];
}

if(droite <= haut && droite <= gauche && droite <= bas)
{
xmin=i;
ymin=j+1;
}
else if(gauche <= haut && gauche <= droite && gauche <= bas)
{
xmin=i;
ymin=j-1;

}
else if(bas <= haut && bas <= droite && bas <= gauche)
{
xmin=i-1;
ymin=j;
}
else if(haut <= gauche && haut <= droite && haut <= bas)
{
xmin=i+1;
ymin=j;
}

}
}
}
xcourant=xmin;
ycourant=ymin;
minimun=matrice[xcourant][ycourant];
printf("%i %i %i",minimun,xcourant,ycourant);
matrice[xmin][ymin]='o';

//En compilant le programme reste dans la boucle infini.

while(matrice[xcourant][ycourant]!='D') // Tant que Matrice est différent de D
{

for(i=1;i<N-1;i++)
{
for(j=1;j<M-1;j++)
{

if(matrice[i][j]==matrice[xmin][ymin]) // Lecture du tableau pour recherche la valeur minimun autour de l'arrivé
{
if(matrice[i][j+1]!='*')
{
droite=matrice[i][j+1];
}
if(matrice[i+1][j]!='*')
{
haut=matrice[i+1][j];
}
if(matrice[i-1][j]!='*')
{
bas=matrice[i-1][j];
}
if(matrice[i][j-1]!='*')
{
gauche=matrice[i][j-1];
}
if(droite==minimun-1) // Si a droite de cette valeur minimun il y a une valeur égale à minimun-1 alors on prend les coordonnées
{
xmin=i;
ymin=j+1;
}
else if(gauche==minimun-1) // Si a gauche de cette valeur minimun il y a une valeur égale à minimun-1 alors on prend les coordonnées
{
xmin=i;
ymin=j-1;
}
else if(bas==minimun-1) // Si en bas de cette valeur minimun il y a une valeur égale à minimun-1 alors on prend les coordonnées
{
xmin=i-1;
ymin=j;
}
else if(haut==minimun-1) // Si en haut de cette valeur minimun il y a une valeur égale à minimun-1 alors on prend les coordonnées
{
xmin=i+1;
ymin=j;
}
xcourant=xmin; // xcourant égale les coordonnées en xmin
ycourant=ymin; // de même pour y
minimun=matrice[xcourant][ycourant];
matrice[xcourant][ycourant]='o'; //Enfin à la position du minimun-1 le caractère o sera écrit
}
}
}

}
printf("\n");
}

int main ()
{
char matrice[N][M];

init(matrice);
demineur(matrice);
affiche_mat(matrice);
chemincourt(matrice);
affiche_mat(matrice);

return 0;
}

Tout marche sauf la fonction chemin court, j'ai vous ai mit juste cette fonction plus le main. Si vous trouvez ce qui va pas dîtes le moi car je bloque depuis des heures.

godrik
godrik
Niveau 30
11 novembre 2011 à 17:51:24

comment resouds tu le probleme manuellement?

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment