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.
Code :
- 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.