Probleme tableau 2 dimensions
Bonjour,
ceci est mon premier post. Je suis en train de faire un projet pour résoudre un mot mystere en c++ avec un tableau de template vector a 2 dimensions: CMatrice <char> m_oMatrice .
Tout mon tableau est initialisé avec les caracteres lus dans un fichier .txt.
Quand j'arrive au moment pour verifier la premiere lettre d'un mot dans un tableau, et ensuite verifier si la deuxieme lettre est aux alentours, cela me donne un erreur. J'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
string sMotTrouve = "";
string sPositionPremiereLettre = "";
int iPosCar = 0;
//Nombre de lignes du tableau 2 dimensionel
for(int i = 0; i < m_oMatrice.GetNbLignes(); i++)
{
//Nombre de colonnes du tableau 2 dimensionel
for(int j = 0; j < m_oMatrice.GetNbColonnes(); j++)
//On trouve la premiere lettre de sNom recu en parametre
while(sMotTrouve.data() !=sNom.data() )
{
if(sNom[iPosCar] == m_oMatrice.GetCaractere(i,j))
{
//On ajoute le premier caractere
sMotTrouve += m_oMatrice.GetCaractere(i,j);
iPosCar++;
//On verifie si le deuxieme caractere est aux alentours
if(GetSens(sNom,i ,j,iPosCar))
{
//On rajoute les autres caracteres
sPositionPremiereLettre +=i + "," +j;
sMotTrouve += m_oMatrice.GetCaractere(i,j);
}
}
}
}
}
char GetCaractere(int iLigne, int iColonne)
{
return m_Vecteur[iLigne][iColonne];
}
bool CMotMystere::GetSens(string &sNom, int &i , int &j, int &iPosCar)
{
bool bATrouveLettre=false;
if(sNom[iPosCar] == m_oMatrice.GetCaractere(i+1,j) )
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Ouest-Est : OE";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i-1,j) && i > 0 )
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Est-Ouest : EO";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i,j+1) )
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Nord-Sud : NS";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i,j-1) && j > 0 )
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Sud-Nord : SN";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i+1,j+1))
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Nord-Ouest-Sud-Est : NOSE";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i-1,j+1) && i > 0)
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Nord-Est-Sud-Ouest : NESO";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i+1,j-1) && j >0)
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Nord-Ouest-Sud-Est : NOSE";
}
else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i-1,j-1) && j >0 && i >0)
{
bATrouveLettre=true;
m_sChaineDirection = "Direction Nord-Est-Sud-Ouest : NESO";
}
return bATrouveLettre;
} |
Il plante au : else if(sNom[iPosCar] == m_oMatrice.GetCaractere(i-1,j) && i > 0 )
et me dit access violation mais je ne comprend pas pourquoi.