[C++]Probleme de logique
balinou
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 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
- Afpa tests niveau 3 d'entrée en formation : français, maths, logique - Forum Études / Formation High-Tech
- Lecteur logique ✓ - Forum Windows
- Tests AFPA d'entrer en formation TSAII ✓ - Forum Études / Formation High-Tech
- 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++;
};-)