Problème avec Visual C++

Frederick_Etudiant Messages postés 17 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 14 janvier 2009 - 1 mai 2008 à 14:29
Frederick_Etudiant Messages postés 17 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 14 janvier 2009 - 2 mai 2008 à 13:34
Bonjour,

J'ai passé la nuit à résoudre ce problème.

J'ai crée un winform avec 2 RichTextBox dont je me sers pour les
tests (au lieu de m'embêter à passer par un terminal) et un bouton pour
tout lancer.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
richTextBoxResume->Text = "";
richTextBoxResultat->Text = "";
int tableauOriginal[22][104];

//Tout un long code qui remplit le premier tableau

//On a le fichier sous forme de tableau

//Ouvrir un fichier en écriture
StreamWriter^ pwriter = gcnew StreamWriter("C:/Fac/Nouveau.txt");

//int id = 1
int id = 1;

int tableauAEnregistrer[76];
//Pour j allant de 1 à 104 (parcours d'une colonne)
for(int j=1;j<=104;j++)
{
//Tout un code qui remplit tableauAEnregistrer sauf les 2 premières cases. Si je vérifie, en commentant la suite, c'est bon, j'ai tout comme il faut

//Pour i allant de 1 à 22
for(int i=1;i<=22;i++)
{
//Pour(int toto=0;toto<tableauOriginal[i-1][j-1];toto++)
for(int toto=0;toto<tableauOriginal[i-1][j-1];toto++)
{
//tableauAEnregistrer[0]=id
tableauAEnregistrer[0]=id;
//id++
id++;
//tableauAEnregistrer[1]=i
tableauAEnregistrer[1]=i;
//Ecrire le contenu de tableauAEnregistrer dans un fichier autant de voir que la valeur de tableauOriginal[i-1][j-1] avec juste la première case qui est incrémentée, et sauter une ligne dans le fichier à chaque fois
//Cette partie est bien complexe alors je la commente en attendant de trouver l'erreur actuelle
/*String ^ligneainserer;
ligneainserer->Empty;
for(int parcourstab=0;parcourstab<75;parcourstab++) //On lit tout les élèments sauf le dernier
ligneainserer = ligneainserer + tableauAEnregistrer[parcourstab].ToString() + "\t";

ligneainserer = ligneainserer + tableauAEnregistrer[75].ToString(); //Insertion du dernier élément
pwriter->WriteLine(ligneainserer);*/
//Test
for(int test=0;test<76;test++)
{
richTextBoxResume->AppendText(tableauAEnregistrer[test].ToString());
richTextBoxResume->AppendText(" ");
}
//Test
richTextBoxResume->AppendText("\n");
}
}
}
pwriter->Close();
}

Alors, quand tableauOriginal[i-1][j-1] est égale à 0, c'est ok, ça
passe à la suite. Ensuite j'arrive à ma première valeur
(tableauOriginal[7][11] = 1680), je le lance en mode débogage pas à
pas, si je vérifie dans le tableau j'ai la bonne valeur à cet
emplacement mais quand il entre dans la boucle il me met
tableauOriginal[i-1][j-1] = 0. Alors 1) Pourquoi ne met-il pas la bonne
valeur? 2) Pourquoi y rentre-t-il s'il le croit égal à 0? Bon je
regarde pas à pas, ça met les lignes, je fais un saut pour passer à
l'itération de la boucle suivante et là le PC plante et j'ai un mal de
chien à éviter de devoir redémarrer à la barbare. Donc, il boucle
indéfiniment, pourtant je ne dépasse pas INT_MAX (1680, ce n'est pas si
gros).

Voilà j'espère avoir été clair, je remercie par avance ceux qui
auront le courage de tout lire et encore plus ceux qui pourront
m'aider.

1 réponse

Frederick_Etudiant Messages postés 17 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 14 janvier 2009
2 mai 2008 à 13:34
J'ai trouvé. Pas de problème, juste une grosse occupation des ressources mémoires
0
Rejoignez-nous