Question c++
Fermé
alexpower
-
10 oct. 2008 à 05:30
dindoun Messages postés 1027 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 17 février 2017 - 10 oct. 2008 à 18:11
dindoun Messages postés 1027 Date d'inscription mercredi 23 janvier 2008 Statut Membre Dernière intervention 17 février 2017 - 10 oct. 2008 à 18:11
7 réponses
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 11:52
10 oct. 2008 à 11:52
l algo marche
je vois pas le pb des bords alors que le deuxième test est censé le régler
je vois pas le pb des bords alors que le deuxième test est censé le régler
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
10 oct. 2008 à 13:02
10 oct. 2008 à 13:02
à la place de ((tableau[i+1][j]==0)&&(i+1<height)) essaie ((i+1<height)&&(tableau[i+1][j]==0))
car si i== height-1 i+1== height et donc le test tableau[i+1][j]==0 doit générer une erreur.
Si ça ne fonctionne toujours pas (mais normalement si la première condition est fausse la deuxième n'est pas évalué), il faudra couper le if en deux :
if(i+1<height)if(tableau[i+1][j]==0){...}
car si i== height-1 i+1== height et donc le test tableau[i+1][j]==0 doit générer une erreur.
Si ça ne fonctionne toujours pas (mais normalement si la première condition est fausse la deuxième n'est pas évalué), il faudra couper le if en deux :
if(i+1<height)if(tableau[i+1][j]==0){...}
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 18:11
10 oct. 2008 à 18:11
tout à fait
par contre les tests des indices tableau[i+1][j]==0)&&(i+1<height) n'est pas top sur les bords (c'est le cas de le dire)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 06:30
10 oct. 2008 à 06:30
solution=false;
tableau[0][0]=2;
int temp;
temp=1;
while (temp !=0){
temp=0;
for (int i = 0; i<height;i++){for (int j = 0; j<width;j++){
if ( tableau[i][j]==2 ) {
if{ tableau[i+1][j]==0){ tableau[i+1][j]=2;temp++;}
if{ tableau[i-1][j]==0){ tableau[i-1][j]=2;temp++;}
if{ tableau[i1][j-1]==0){ tableau[i][j-1]=2;temp++;}
if{ tableau[i1][j+1]==0){ tableau[i][j+1]=2;temp++;}
}
}}
}
resultat=false;
if ( tableau[height][width]==2 ) { resultat=true;}
return resultat;
tableau[0][0]=2;
int temp;
temp=1;
while (temp !=0){
temp=0;
for (int i = 0; i<height;i++){for (int j = 0; j<width;j++){
if ( tableau[i][j]==2 ) {
if{ tableau[i+1][j]==0){ tableau[i+1][j]=2;temp++;}
if{ tableau[i-1][j]==0){ tableau[i-1][j]=2;temp++;}
if{ tableau[i1][j-1]==0){ tableau[i][j-1]=2;temp++;}
if{ tableau[i1][j+1]==0){ tableau[i][j+1]=2;temp++;}
}
}}
}
resultat=false;
if ( tableau[height][width]==2 ) { resultat=true;}
return resultat;
DJ Fire-Black
Messages postés
6555
Date d'inscription
vendredi 28 décembre 2007
Statut
Non membre
Dernière intervention
19 février 2023
458
10 oct. 2008 à 06:31
10 oct. 2008 à 06:31
Salut,
Avec google translate :
Nous avons un tableau 2D rempli avec les valeurs 0 et 1.
0 signifie terrain et 1 signifie mur.
Nous ne pouvons que marcher haut, bas, gauche ou la droite.
Vous êtes autorisé à modifier le tableau de tenir des valeurs temporaires.
Nous aimerions savoir si un chemin existe de (0,0) à (largeur-1, hauteur-1)
Créer une fonction pour ce faire, utilisez l'un des prototypes suivants:
C: boolean findZeroArraySize (const int * array, int largeur, hauteur int);
Input:
array - Pointeur vers le tableau 2D
largeur - Largeur de la gamme 2D
hauteur - Hauteur de la série 2D
Output:
Valeur de retour - si un vrai chemin d'accès existe, faux sinon
Par exemple, étant donné le tableau:
001011110
100001100
010000011
110001000
111011100
La fonction retourne 1 (vrai).
Avec google translate :
Nous avons un tableau 2D rempli avec les valeurs 0 et 1.
0 signifie terrain et 1 signifie mur.
Nous ne pouvons que marcher haut, bas, gauche ou la droite.
Vous êtes autorisé à modifier le tableau de tenir des valeurs temporaires.
Nous aimerions savoir si un chemin existe de (0,0) à (largeur-1, hauteur-1)
Créer une fonction pour ce faire, utilisez l'un des prototypes suivants:
C: boolean findZeroArraySize (const int * array, int largeur, hauteur int);
Input:
array - Pointeur vers le tableau 2D
largeur - Largeur de la gamme 2D
hauteur - Hauteur de la série 2D
Output:
Valeur de retour - si un vrai chemin d'accès existe, faux sinon
Par exemple, étant donné le tableau:
001011110
100001100
010000011
110001000
111011100
La fonction retourne 1 (vrai).
dindoun
Messages postés
1027
Date d'inscription
mercredi 23 janvier 2008
Statut
Membre
Dernière intervention
17 février 2017
135
10 oct. 2008 à 06:57
10 oct. 2008 à 06:57
#include <stdio.h>
int main(void){
int width,height;
width=9;
height=5;
int temp,i,j;
//int tableau[width][height]={{0,0},{0,0}};
int tableau[5][9]={
{0,0,1,0,1,1,1,1,0},
{1,0,0,0,0,1,1,0,0},
{0,1,0,0,0,0,0,1,1},
{1,1,0,0,0,1,0,0,0},
{1,1,1,0,1,1,1,0,0}
};
//int tab1[width]={0,0,1,0,1,1,1,1,0 }
for (i = 0; i<height;i++){for ( j = 0; j<width;j++){
printf("%d",tableau[i][j]);}
printf("\n");
}
//tableau[0][0]=2;
tableau[0][0]=2;
temp=1;
while (temp !=0){
temp=0;
for (i = 0; i<height;i++){for ( j = 0; j<width;j++){
if ( tableau[i][j]==2 ) {
if ((tableau[i+1][j]==0)&&(i+1<height)) { tableau[i+1][j]=2;temp++;}
if ((tableau[i-1][j]==0)&&(i-1>=0)) { tableau[i-1][j]=2;temp++;}
if ((tableau[i][j-1]==0)&&(j-1>=0)) { tableau[i][j-1]=2;temp++;}
if ((tableau[i][j+1]==0)&&(j+1<width)) { tableau[i][j+1]=2;temp++;}
}
}}
for (i = 0; i<height;i++){for ( j = 0; j<width;j++){
printf("%d",tableau[i][j]);}
printf("\n");
}
printf(" \n");
}
printf("%d \n",tableau[height-1][width-1]);
}
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
10 oct. 2008 à 11:21
10 oct. 2008 à 11:21
Tu tente la méthode de la tache d'huile ?
ton algo semble pas mal.
ton algo semble pas mal.