Java Taquin, cellule adjacente matrice
Résolu/Fermé
Aktayen
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
-
10 nov. 2010 à 21:32
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 10 nov. 2010 à 23:02
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 10 nov. 2010 à 23:02
A voir également:
- Java Taquin, cellule adjacente matrice
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
4 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
Modifié par KX le 11/11/2010 à 13:28
Modifié par KX le 11/11/2010 à 13:28
Il faudra rajouter des conditions pour chaque appel à un calcul sur la matrice susceptible de déborder.
Certaines conditions sont implicites mais si on devait toutes les expliciter on aurait, pour chaque appel :
if (a>=0 && a<n && b>=0 && b<n && matrice[a][b]==0)
a pouvant être i, i-1, i+1
b pouvant être j, j-1, j+1
La confiance n'exclut pas le contrôle
Certaines conditions sont implicites mais si on devait toutes les expliciter on aurait, pour chaque appel :
if (a>=0 && a<n && b>=0 && b<n && matrice[a][b]==0)
a pouvant être i, i-1, i+1
b pouvant être j, j-1, j+1
La confiance n'exclut pas le contrôle
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
10 nov. 2010 à 22:25
10 nov. 2010 à 22:25
Dans la mesure où tu sais ce que tes conditionnes ne suffisent pas, rajoutes en !
Grace à l'évaluation paresseuse en Java, tu peux cumuler tes conditions :
(i+1<n && matrice[i+1][j]==0) || ...
Si tu as i+1 qui dépasses la dimension de ta matrice, l'instruction i+1<n renverra false, en conséquence le programme n'a pas besoin de calculer matrice[i+1][j] puisque de tout de façon le résultat est connu et sera false.
Donc le calcul n'est pas fait et l'exception n'est pas levée !
Grace à l'évaluation paresseuse en Java, tu peux cumuler tes conditions :
(i+1<n && matrice[i+1][j]==0) || ...
Si tu as i+1 qui dépasses la dimension de ta matrice, l'instruction i+1<n renverra false, en conséquence le programme n'a pas besoin de calculer matrice[i+1][j] puisque de tout de façon le résultat est connu et sera false.
Donc le calcul n'est pas fait et l'exception n'est pas levée !
Aktayen
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
19
10 nov. 2010 à 22:45
10 nov. 2010 à 22:45
Merci déjà d'être venu à mon aide.
Avec cette solution, comment je fais pour vérifier les voisins si ma cellule choisi est dans un coin? ça marchera quand même?
Avec cette solution, comment je fais pour vérifier les voisins si ma cellule choisi est dans un coin? ça marchera quand même?
Aktayen
Messages postés
189
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
17 décembre 2015
19
10 nov. 2010 à 22:54
10 nov. 2010 à 22:54
ouai ok, je vais m'amuser ^^. Je faisais plus ou moins comme ça avant mais j'avais espéré qu'il y est quelques choses de moins lourd..
En tout cas merci de ton aide.
En tout cas merci de ton aide.
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
10 nov. 2010 à 23:02
10 nov. 2010 à 23:02
Comme je l'ai dit la plupart sont implicites.
En fait tout ce qui est k (i ou j) ne nécessite pas de test particulier si tu es dans ton intervalle 1..n
Seuls les tests k-1>=0 et k+1<n sont véritablement utiles si tu utilises [k-1] ou [k+1]
Les deux si tu testes un coin...
En fait tout ce qui est k (i ou j) ne nécessite pas de test particulier si tu es dans ton intervalle 1..n
Seuls les tests k-1>=0 et k+1<n sont véritablement utiles si tu utilises [k-1] ou [k+1]
Les deux si tu testes un coin...