begin process at 2008 08 20 14:23:25
1 228 866 membres
232 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec Visual C++ [ Algorithme / Compression, Split & Cryptage ] (Frederick_Etudiant)

Problème avec Visual C++ le 01/05/2008 14:29:21

Frederick_Etudiant
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.

Re : Problème avec Visual C++ le 02/05/2008 13:34:48

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


Classé sous : int, id, tableauaenregistrer, ligneainserer, tableauoriginal

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS