[C++]Probleme de logique
balinou
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
voila, je fait de la programmation en C++ , et je bloque sur une partie. le but de ce code est simple : on lui donne les coordonnées d'une case de la matrice, et on test les cellules environnantes pour savoir si elles sont occupé (true) ou libre (false). le code renvois le nombre d'"amis" que la case possède. Il me semble que ce code possède des erreurs non pas de compilation, mais de logique.
Merci à vous .
voila, je fait de la programmation en C++ , et je bloque sur une partie. le but de ce code est simple : on lui donne les coordonnées d'une case de la matrice, et on test les cellules environnantes pour savoir si elles sont occupé (true) ou libre (false). le code renvois le nombre d'"amis" que la case possède. Il me semble que ce code possède des erreurs non pas de compilation, mais de logique.
int Matrice::test_t(int l,int h) // test des cases adjacentes pour compter le nombre de cellule pleine { int amis =0 ; if ( l == 0 ) { if (h == 0) // X00 { // 000 if ( m_matrice[1][0]) // 000 amis++ ; if ( m_matrice[0][1]) amis++ ; if ( m_matrice[1][1]) amis++ ; return amis ; } if ( h == m_taille_hauteur-1 ) { // 000 if ( m_matrice[l][h-1]) // 000 amis++ ; // X00 if ( m_matrice[l+1][h-1]) amis++ ; if ( m_matrice[l+1][h]) amis++ ; return amis ; } if ( h > 0 && h < m_taille_largeur ) { // 000 if ( m_matrice[l][h-1]) // X00 amis++ ; // 000 if ( m_matrice[l][h+1]) amis++ ; if ( m_matrice[l+1][h-1]) amis++ ; if ( m_matrice[l+1][h]) amis++ ; if ( m_matrice[l+1][h+1]) amis++ ; return amis ; } } if ( l == m_taille_largeur-1 ) { if ( h==0 ) { // 00X if ( m_matrice[l-1][h]) // 000 amis++ ; // 000 if ( m_matrice[l][h+1]) amis++ ; if ( m_matrice[l-1][h+1]) amis++ ; return amis ; } if ( h == m_taille_hauteur-1 ) { // 000 if ( m_matrice[l-1][h-1]) // 000 amis++ ; // 00X if ( m_matrice[l][h-1]) amis++ ; if ( m_matrice[l-1][h]) amis++ ; return amis ; } if ( h > 0 && h < m_taille_largeur ) { // 000 if ( m_matrice[l][h-1]) // 00X amis++ ; // 000 if ( m_matrice[l][h+1]) amis++ ; if ( m_matrice[l-1][h-1]) amis++ ; if ( m_matrice[l-1][h]) amis++ ; if ( m_matrice[l-1][h+1]) amis++ ; return amis ; } } if ( l > 0 && l < m_taille_largeur ) { if ( h==0 ) { // 0X0 if ( m_matrice[l-1][h]) // 000 amis++ ; // 000 if ( m_matrice[l+1][h]) amis++ ; if ( m_matrice[l-1][h+1]) amis++ ; if ( m_matrice[l][h+1]) amis++ ; if ( m_matrice[l+1][h+1]) amis++ ; return amis ; } if ( h == m_taille_hauteur-1 ) { // 000 if ( m_matrice[l-1][h]) // 000 amis++ ; // 0X0 if ( m_matrice[l+1][h]) amis++ ; if ( m_matrice[l-1][h-1]) amis++ ; if ( m_matrice[l][h-1]) amis++ ; if ( m_matrice[l+1][h-1]) amis++ ; return amis ; } if ( h > 0 && h < m_taille_largeur ) { // 000 if ( m_matrice[l-1][h-1]) // 0X0 amis++ ; // 000 if ( m_matrice[l][h-1]) amis++ ; if ( m_matrice[l+1][h-1]) amis++ ; if ( m_matrice[l-1][h]) amis++ ; if ( m_matrice[l+1][h]) amis++ ; if ( m_matrice[l-1][h+1]) amis++ ; if ( m_matrice[l][h+1]) amis++ ; if ( m_matrice[l+1][h+1]) amis++ ; return amis ; } } }
Merci à vous .
A voir également:
- [C++]Probleme de logique
- Et logique excel - Guide
- Lecteur logique ✓ - Forum Windows
- Afpa tests niveau 3 d'entrée en formation : français, maths, logique - Forum Études / Formation High-Tech
- Tableau analyse logique pdf - Guide
- Simulateur logique combinatoire en ligne - Télécharger - Vie quotidienne
2 réponses
je ne vois pas de problème de logique, juste de gros "bourinisme".
int Matrice::test_t(int l,int h) // test des cases adjacentes pour compter le nombre de cellule pleine { unsigned char amis=0; for (int i=l-1;i<=l+1;++i) for (int j=h-1;j<=h+1;++j) if(i>=0 && j>=0 && i<m_taille_hauteur && j<m_taille_largeur) if(m_matrice[i][j]) amis++; };-)