Problème avec Visual C++

Problème avec Visual C++ - C++ - Programmation

Marsh Posté le 01-05-2008 à 14:35:13    

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 :
  1. private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
  2.         richTextBoxResume->Text = "";
  3. richTextBoxResultat->Text = "";
  4. int tableauOriginal[22][104];
  5. //Tout un long code qui remplit le premier tableau
  6. //On a le fichier sous forme de tableau
  7. //Ouvrir un fichier en écriture
  8. StreamWriter^ pwriter = gcnew StreamWriter("C:/Fac/Nouveau.txt" );
  9. //int id = 1
  10. int id = 1;
  11. int tableauAEnregistrer[76];
  12. //Pour j allant de 1 à 104 (parcours d'une colonne)
  13. for(int j=1;j<=104;j++)
  14. {
  15.  //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
  16.  //Pour i allant de 1 à 22
  17.  for(int i=1;i<=22;i++)
  18.  {
  19.   //Pour(int toto=0;toto<tableauOriginal[i-1][j-1];toto++)
  20.   for(int toto=0;toto<tableauOriginal[i-1][j-1];toto++)
  21.   {
  22.    //tableauAEnregistrer[0]=id
  23.    tableauAEnregistrer[0]=id;
  24.    //id++
  25.    id++;
  26.    //tableauAEnregistrer[1]=i
  27.    tableauAEnregistrer[1]=i;
  28.    //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
  29.    //Cette partie est bien complexe alors je la commente en attendant de trouver l'erreur actuelle
  30.    /*String ^ligneainserer;
  31.    ligneainserer->Empty;
  32.    for(int parcourstab=0;parcourstab<75;parcourstab++) //On lit tout les élèments sauf le dernier
  33.    ligneainserer = ligneainserer + tableauAEnregistrer[parcourstab].ToString() + "\t";
  34.    ligneainserer = ligneainserer + tableauAEnregistrer[75].ToString(); //Insertion du dernier élément
  35.    pwriter->WriteLine(ligneainserer);*/
  36.    //Test
  37.    for(int test=0;test<76;test++)
  38.    {
  39.     richTextBoxResume->AppendText(tableauAEnregistrer[test].ToString());
  40.     richTextBoxResume->AppendText(" " );
  41.    }
  42.    //Test
  43.    richTextBoxResume->AppendText("\n" );
  44.   }
  45.  }
  46. }
  47. pwriter->Close();
  48. }


 
 
 
 
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.

Reply

Marsh Posté le 01-05-2008 à 14:35:13   

Reply

Marsh Posté le 02-05-2008 à 13:32:59    

J'ai trouvé. Pas de problème, juste une grosse occupation des ressources mémoires

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed