Lire un fichier contenant une matrice et le stocker dans un vecteur

Lire un fichier contenant une matrice et le stocker dans un vecteur - C++ - Programmation

Marsh Posté le 26-07-2006 à 10:11:13    

Bonjour,
 
Je voudrais lire à partir d'une fichier .txt une matrice triangulaire supérieure et la stocker dans une variable matrice. Est ce que quelqu'un aurait une idée sur la façon de s'y prendre. Je ne suis pas un expert en C++, mais je suis ouvert à toutes vos remarques qui peuvent me faire avancer.
 
Le fichier .txt à la configuration suivante :  
 
Matrice de covariance  
3.08787791981153E-02  
6.5040824508478E-03 0.227357513661848  
-3.30917216603529E-03 -1.79684729334368E-04 0.1  
ect...  
 
J'ai de mon côté trouver quelque chose qui tient la route mais je ne suis pas ur que ça me stocker ça dans une variable matrice d'autant plus que je ne sais pas si ça peut marcher pour une matrice triangulaire supérieur je vous donne la partie du code que j'ai trouvé:
 
 
#include <vector> //pour std::vector
#include <string> // pour std::string et std::getline
#include <sstream> //pour std::istreamstring
#include <iostream> //pour les std::cout, std::cin....
#include <fstream> //pour lire les fichiers
 
std::vector<std::vector<int> > MatriceA;
 
std::ifstream fichier("toto.txt" );
 
 
if(fichier)
{
std::string tmpLine;
 
while(std::getline(fichier,tmpLine))
{
std::vector<int> tmpVector;
std::istringstream toto(tmpLine);
std::string mot;
while ( std::getline(toto, mot, ';' ) )
{
std::istringstream mot_nombre(mot);
int nombre;
mot_nombre >> nombre;
 
tmpVector.push_back(nombre);
}
 
correlation.push_back(tmpVector);
}
 
////-- Display Matrice:
//std::vector<std::vector<int> >::iterator ita = MatriceA.begin();
//std::vector<int>::iterator ita2;
//while(ita != MatriceA.end())
//{
// ita2 = ita->begin();
// while(ita2 != ita->end())
// {
// std::cout<<"\t" <<*ita2;
// ita2++;
// }
// std::cout<<std::endl;
// ita++;
//}
 
////-- Or display again with []
 
//-- get indice I and indice j
std::vector<std::vector<int> >::iterator ita = MatriceA.begin();
std::vector<int>::iterator ita2;
 
long xlen =0;
long ylen =0;
 
if(ita !=MatriceA.end())  
{
ylen=MatriceA.size(); //Y axis
xlen =MatriceA[0].size(); //X axis
}
 
for(long i =0; i<ylen; i++)
{
for(long j=0; j<xlen; j++)
{
std::cout<<"\t" <<MatriceA[j];
}
std::cout <<std::endl;
}
 
}
 
std::cin.ignore();
return 0;

Reply

Marsh Posté le 26-07-2006 à 10:11:13   

Reply

Marsh Posté le 26-07-2006 à 10:30:48    

Ca donne quoi à l'execution ?


Message édité par _darkalt3_ le 26-07-2006 à 10:31:04

---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 11:04:02    

utilise des double et pas des int déjà.

Reply

Marsh Posté le 26-07-2006 à 13:56:15    

Je vous prie de m'excuser pour le retard de ma réponse , mais en fait j'ai changé le code, celui là me parait plus approprié pour lire la matrice, mais bien sur il ne marche pas du premier coup. Cette fois ci j'ai inclus ce qui sort  
Merci de votre aide  
 
Voilà le code en question :  
 
Ne fait pas attention aux include, il y a tout ce qu'il faiut,  
 
#include "essai.h"
 
 
 
void main ()
{
istream fichier("D:\\Documents and Settings\\AMOR\\My Documents\\Visual Studio Projects\\covariance.txt",ios::in)
char dim[2];
fichier.getline(dim,2);
ArrayLengthSpecifier dimension((int)dim[1]);
SymmetricMatrix& covariance(dimension);
int i=0;
int compteur=0;
do
{
i++;
char ligne[2*i];
fichier.getline(ligne,2*i);
for (int j=1;j<=2*i;j++)
{
if (!j%2==0)
{
compteur = compteur++
covariance(i,compteur) =ligne[j];  
}
}
 
}
while (!fichier.eof());
for (i=1;i<=dim[1];i++)
{
for (j>i;j<=dim[1];j++)
{
covariance(i,j)=covariance(j,i);
}
}
Matrix C;
C=chol(covariance);
cout << "le premier element de la matrice de Cholesky est:" << C(1,1) << "\n";
}
 
Le fichier d'entrée resemble à la configuration suivante :
4
1
5 1.2356
1 2 3.2589713
0.9 0.754896321 1 0.3
 
Les messages d'erreurs sortis par le code sont :
 
------ Début de la régénération globale*: Projet*: CorrelSimul, Configuration*: Release Win32 ------
 
Supprimer des fichiers de sortie et des fichiers intermédiaires du projet 'CorrelSimul', configuration 'Release|Win32'.
Compilation...
Stdafx.cpp
Compilation...
Submat.cpp
sort.cpp
Solution.cpp
Sl_ex.cpp
Newmatex.cpp
Newmat9.cpp
Newmat8.cpp
Newmat7.cpp
Newmat6.cpp
Newmat5.cpp
Newmat4.cpp
Newmat3.cpp
Newmat2.cpp
Newmat1.cpp
Myexcept.cpp
evalue.cpp
essai.cpp
essai.cpp(9) : error C2448: 'fichier'*: l'initialiseur de style fonction semble être une définition de fonction
essai.cpp(10) : error C2065: 'fichier'*: identificateur non déclaré
essai.cpp(10) : error C2228: la partie gauche de '.getline' doit avoir un type class/struct/union
le type est ''unknown-type''
essai.cpp(10) : error C2065: 'dim'*: identificateur non déclaré
essai.cpp(11) : error C3861: 'dim': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(12) : error C2440: 'initialisation'*: impossible de convertir de 'ArrayLengthSpecifier' en 'SymmetricMatrix &'
Une référence qui ne retourne pas à 'const' ne peut pas être liée à une non-lvalue
essai.cpp(18) : error C2057: expression de constante attendue
essai.cpp(18) : error C2466: impossible d'allouer un tableau de taille constante 0
essai.cpp(19) : error C2228: la partie gauche de '.getline' doit avoir un type class/struct/union
le type est ''unknown-type''
essai.cpp(19) : error C2065: 'ligne'*: identificateur non déclaré
essai.cpp(19) : error C3861: 'fichier': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(22) : warning C4804: '%'*: utilisation risquée du type 'bool' dans l'opération
essai.cpp(25) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'covariance'
essai.cpp(25) : error C3861: 'ligne': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(30) : error C2228: la partie gauche de '.eof' doit avoir un type class/struct/union
le type est ''unknown-type''
essai.cpp(30) : error C3861: 'fichier': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(31) : error C3861: 'dim': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(33) : error C2065: 'j'*: identificateur non déclaré
essai.cpp(33) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(33) : error C3861: 'dim': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(33) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(35) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(35) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(39) : error C2065: 'C'*: identificateur non déclaré
essai.cpp(40) : error C2593: 'operator <<' est ambigu
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(434): peut être 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits>::_Mysb *)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(414): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(394): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(374): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(double)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(354): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(float)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(333): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(313): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(292): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(272): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(long)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(252): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(227): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(int)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(207): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(174): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(short)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(154): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(148): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base & ))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(142): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits>::_Myios &(__cdecl *)(std::basic_ostream<_Elem,_Traits>::_Myios & ))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\ostream(137): ou 'std::basic_ostream<_Elem,_Traits>::_Myt &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits>::_Myt &(__cdecl *)(std::basic_ostream<_Elem,_Traits>::_Myt & ))'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
lors de la tentative de mise en correspondance de la liste des arguments '(std::basic_ostream<_Elem,_Traits>::_Myt, 'unknown-type')'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
essai.cpp(40) : error C3861: 'C': identificateur introuvable, même avec une recherche qui dépend de l'argument
CorrelSimul.cpp
Cholesky.cpp
Bandmat.cpp
 
Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Release\BuildLog.htm"
CorrelSimul - 25 erreur(s), 1 avertissement(s)
 
 
---------------------- Terminé ----------------------
 
Régénération globale*: 0 a réussi, 1 a échoué, 0 a été ignoré

Reply

Marsh Posté le 26-07-2006 à 14:03:36    

c'est parti pour de la lecture de doc alors ... le reflexe dans ces cas là :

  • Identifier les lignes où sont situées les erreurs.
  • Vérifier dans la doc si tu te sers bien de la fonction où se situe l'erreur
  • vérifier les paramètres des fonctions de la ligne
  • vérifier les retour des fonctions de la ligne.


bon courage.
 
(et aussi, quand tu copy/paste du code, utilise la balise [ code ]stp)


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 14:24:39    

Bon voici ma nouvelle version du code,  
 

Code :
  1. #include "essai.h"
  2. void main ()
  3. {
  4. ifstream fichier("D:\\Documents and Settings\\AMOR\\My Documents\\Visual Studio Projects\\covariance.txt",ios::in);
  5. char dim[2];
  6. fichier.getline(dim,2);
  7. ArrayLengthSpecifier dimension((int)dim[1]);
  8. SymmetricMatrix covariance(dimension);
  9. int i=0;
  10. int compteur=0;
  11. do
  12. {
  13.  i++;
  14.  char ligne[2*i];
  15.  fichier.getline(ligne,2*i);
  16.  for (int j=1;j<=2*i;j++)
  17.  {
  18.   if (!j%2==0)
  19.   {
  20.    compteur = compteur++
  21.    covariance(i,compteur) =ligne[j];
  22.   }
  23.  }
  24. }
  25. while (!fichier.eof());
  26. for (i=1;i<=dim[1];i++)
  27. {
  28.  for (j>i;j<=dim[1];j++)
  29.  {
  30.   covariance(i,j)=covariance(j,i);
  31.  }
  32. }
  33. Matrix C;
  34. C=chol(covariance);
  35. cout << "le premier element de la matrice de Cholesky est:" << C(1,1) << "\n";
  36. }


 
Mais il y a 9 erreurs qui interviennet dont je ne comprend pas trop l'origine peut-tu m'aider la dessus, le fichier de sortie est :
 
------ Début de la régénération globale : Projet : CorrelSimul, Configuration : Release Win32 ------
 
Supprimer des fichiers de sortie et des fichiers intermédiaires du projet 'CorrelSimul', configuration 'Release|Win32'.
Compilation...
Stdafx.cpp
Compilation...
Submat.cpp
sort.cpp
Solution.cpp
Sl_ex.cpp
Newmatex.cpp
Newmat9.cpp
Newmat8.cpp
Newmat7.cpp
Newmat6.cpp
Newmat5.cpp
Newmat4.cpp
Newmat3.cpp
Newmat2.cpp
Newmat1.cpp
Myexcept.cpp
evalue.cpp
essai.cpp
essai.cpp(17) : error C2057: expression de constante attendue
essai.cpp(17) : error C2466: impossible d'allouer un tableau de taille constante 0
essai.cpp(17) : error C2133: 'ligne' : taille inconnue
essai.cpp(21) : warning C4804: '%' : utilisation risquée du type 'bool' dans l'opération
essai.cpp(24) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'covariance'
essai.cpp(32) : error C2065: 'j' : identificateur non déclaré
essai.cpp(32) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(32) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(34) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(34) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
CorrelSimul.cpp
Cholesky.cpp
Bandmat.cpp
 
Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Release\BuildLog.htm"
CorrelSimul - 9 erreur(s), 1 avertissement(s)
 
 
---------------------- Terminé ----------------------
 
    Régénération globale : 0 a réussi, 1 a échoué, 0 a été ignoré


Message édité par iamora le 26-07-2006 à 14:33:00
Reply

Marsh Posté le 26-07-2006 à 14:38:00    

La taille d'un tableau,  doit être connu à la compilation. Or, tu as mis une taille fonction d'une variable.


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 14:57:05    

_darkalt3_ a écrit :

La taille d'un tableau,  doit être connu à la compilation. Or, tu as mis une taille fonction d'une variable.


 
oui effectivement il faut une allocation dynamique que j'ia faite mais ça ne marche toujours pas, excuse ma novicité en c++
 

Code :
  1. #include "essai.h"
  2. void main ()
  3. {
  4. ifstream fichier("D:\\Documents and Settings\\AMOR\\My Documents\\Visual Studio Projects\\covariance.txt",ios::in);
  5. char dim[2];
  6. fichier.getline(dim,2);
  7. ArrayLengthSpecifier dimension((int)dim[1]);
  8. SymmetricMatrix covariance(dimension);
  9. int i=0;
  10. int compteur=0;
  11. do
  12. {
  13.  i++;
  14.  ligne = new char [2*i];
  15.  fichier.getline(ligne,2*i);
  16.  for (int j=1;j<=2*i;j++)
  17.  {
  18.   if (!j%2==0)
  19.   {
  20.    compteur = compteur++
  21.    covariance(i,compteur) =ligne[j];
  22.   }
  23.  }
  24.  delete ligne;
  25. }
  26. while (!fichier.eof());
  27. for (i=1;i<=dim[1];i++)
  28. {
  29.  for (j>i;j<=dim[1];j++)
  30.  {
  31.   covariance(i,j)=covariance(j,i);
  32.  }
  33. }
  34. Matrix C;
  35. C=chol(covariance);
  36. cout << "le premier element de la matrice de Cholesky est:" << C(1,1) << "\n";
  37. }


 
J'obtiens le message d'erreur suivant
 
------ Début de la régénération globale : Projet : CorrelSimul, Configuration : Release Win32 ------
 
Supprimer des fichiers de sortie et des fichiers intermédiaires du projet 'CorrelSimul', configuration 'Release|Win32'.
Compilation...
Stdafx.cpp
Compilation...
Submat.cpp
sort.cpp
Solution.cpp
Sl_ex.cpp
Newmatex.cpp
Newmat9.cpp
Newmat8.cpp
Newmat7.cpp
Newmat6.cpp
Newmat5.cpp
Newmat4.cpp
Newmat3.cpp
Newmat2.cpp
Newmat1.cpp
Myexcept.cpp
evalue.cpp
essai.cpp
essai.cpp(17) : error C2065: 'ligne' : identificateur non déclaré
essai.cpp(18) : error C3861: 'ligne': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(21) : warning C4804: '%' : utilisation risquée du type 'bool' dans l'opération
essai.cpp(24) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'covariance'
essai.cpp(24) : error C3861: 'ligne': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(27) : error C2541: 'delete' : impossible de détruire des objets qui ne sont pas des pointeurs
essai.cpp(27) : error C3861: 'ligne': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(32) : error C2065: 'j' : identificateur non déclaré
essai.cpp(32) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(32) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(34) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
essai.cpp(34) : error C3861: 'j': identificateur introuvable, même avec une recherche qui dépend de l'argument
CorrelSimul.cpp
Cholesky.cpp
Bandmat.cpp
 
Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Release\BuildLog.htm"
CorrelSimul - 11 erreur(s), 1 avertissement(s)
 
 
---------------------- Terminé ----------------------
 
    Régénération globale : 0 a réussi, 1 a échoué, 0 a été ignoré
 
 

Reply

Marsh Posté le 26-07-2006 à 15:02:13    

ligne 17 : ta variable n'existe pas ...
 
Lis un peu les messages, là c'est vraiment pas très dur...


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 15:21:24    

_darkalt3_ a écrit :

ligne 17 : ta variable n'existe pas ...
 
Lis un peu les messages, là c'est vraiment pas très dur...


 
OK là je compile sans erreur:

Code :
  1. #include "essai.h"
  2. void main ()
  3. {
  4. ifstream fichier("D:\\Documents and Settings\\AMOR\\My Documents\\Visual Studio Projects\\covariance.txt",ios::in);
  5. char dim[2];
  6. fichier.getline(dim,2);
  7. ArrayLengthSpecifier dimension((int)dim[1]);
  8. SymmetricMatrix covariance(dimension);
  9. int i=0;
  10. int compteur=0;
  11. do
  12. {
  13.  i++;
  14.  char* ligne;
  15.  ligne = new char [2*i];
  16.  fichier.getline(ligne,2*i);
  17.  for (int j=1;j<=2*i;j++)
  18.  {
  19.   if (!j%2==0)
  20.   {
  21.    compteur++;
  22.    covariance(i,compteur) =ligne[j];
  23.   }
  24.  }
  25.  delete ligne;
  26. }
  27. while (!fichier.eof());
  28. for (int u=1;u<=dim[1];u++)
  29. {
  30.  for (int v=u+1;v<=dim[1];v++)
  31.  {
  32.   covariance(u,v)=covariance(v,u);
  33.  }
  34. }
  35. Matrix C;
  36. C=chol(covariance);
  37. cout << "le premier element de la matrice de Cholesky est:" << C(1,1) << "\n";
  38. }


 
Mais j'ai un truc étrange quand j'execute le programme, la fenetre dos me sort le message suivant :
"This application has requested the runtime to terminate it an unsual way"
Sais-tu pourquoi ça me fait ça ??
 
La fenêtre de sortie a le message suivant :  
 
------ Début de la régénération globale : Projet : CorrelSimul, Configuration : Release Win32 ------
 
Supprimer des fichiers de sortie et des fichiers intermédiaires du projet 'CorrelSimul', configuration 'Release|Win32'.
Compilation...
Stdafx.cpp
Compilation...
Submat.cpp
sort.cpp
Solution.cpp
Sl_ex.cpp
Newmatex.cpp
Newmat9.cpp
Newmat8.cpp
Newmat7.cpp
Newmat6.cpp
Newmat5.cpp
Newmat4.cpp
Newmat3.cpp
Newmat2.cpp
Newmat1.cpp
Myexcept.cpp
evalue.cpp
essai.cpp
essai.cpp(22) : warning C4804: '%' : utilisation risquée du type 'bool' dans l'opération
CorrelSimul.cpp
Cholesky.cpp
Bandmat.cpp
Édition des liens en cours...
nafxcw.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) déjà défini dans libcpmt.lib(newop.obj) ; seconde définition ignorée
nafxcw.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) déjà défini dans LIBCMT.lib(delete.obj) ; seconde définition ignorée
nafxcw.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) déjà défini dans libcpmt.lib(newaop.obj) ; seconde définition ignorée
nafxcw.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) déjà défini dans LIBCMT.lib(delete2.obj) ; seconde définition ignorée
.\Release/CorrelSimul.exe : warning LNK4088: image en cours de génération à cause de l'option /FORCE ; l'image risque de ne pas s'exécuter
LINK : warning LNK4089: toutes les références à 'ADVAPI32.dll' ignorées par /OPT:REF
LINK : warning LNK4089: toutes les références à 'SHELL32.dll' ignorées par /OPT:REF
LINK : warning LNK4089: toutes les références à 'SHLWAPI.dll' ignorées par /OPT:REF
LINK : warning LNK4089: toutes les références à 'comdlg32.dll' ignorées par /OPT:REF
LINK : warning LNK4089: toutes les références à 'ole32.dll' ignorées par /OPT:REF
 
Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Release\BuildLog.htm"
CorrelSimul - 0 erreur(s), 11 avertissement(s)
 
 
---------------------- Terminé ----------------------
 
    Régénération globale : 1 a réussi, 0 a échoué, 0 a été ignoré
 
 
Merci  
 
 
 
 

Reply

Marsh Posté le 26-07-2006 à 15:21:24   

Reply

Marsh Posté le 26-07-2006 à 15:24:55    

utilises le debugger et execute ton programme pas à pas.
 
Je pense cependant que tu n'a pas vraiment écouté ma remarque concernant les tableaux.


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 15:29:05    

_darkalt3_ a écrit :

utilises le debugger et execute ton programme pas à pas.
 
Je pense cependant que tu n'a pas vraiment écouté ma remarque concernant les tableaux.


 
En faisant

Code :
  1. ligne = new char [2*i]

; ça ne resout pas le problème puisque je définis à chaque fois une variable char ?
 
 

Reply

Marsh Posté le 26-07-2006 à 15:35:52    

t'as passé le debugger ?


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 15:53:48    

_darkalt3_ a écrit :

t'as passé le debugger ?


 
Je viens de le faire, excuse les lignes qui suivent mais c'est l'explication d'un débutant que tu vas écouter, en fait quand j'exécute pas à pas il ne met pas de curseur jaune sur les lignes de code comme VB pour pourcourir ligne par ligne même si je met un point d'arrêt par contre je pense qu'il me donne les étapes qu'il a effectué en language machine et il me sort le message suivant :
 
Exception non gérée à 0x0040cc69 dans CorrelSimul.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000008.
 
Je me demande à quoi ça pourrait correpondre. Je voudrai bien qu'on m'explique aussi comment on peut débogger en c++, est ce que c'est pareil qu'en VB???
 
Merci pour votre aide ça me pousse à avancer!!!

Reply

Marsh Posté le 26-07-2006 à 15:58:20    

tu as quoi comme environnement de dev ?
visual c++ ?


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 15:59:08    

_darkalt3_ a écrit :

tu as quoi comme environnement de dev ?
visual c++ ?


 
Visual studio.net 2003

Reply

Marsh Posté le 26-07-2006 à 15:59:57    

iamora a écrit :

Visual studio.net 2003


 
En code machine le debugger m'indique une erreur à cette ligne, mais pour comprendre ce que ça veut dire!!!!
0040CC69  cmp         eax,dword ptr [ecx+8]

Reply

Marsh Posté le 26-07-2006 à 16:03:17    

index tes tableaux de 0 à N-1, pas de 1 à N
 
ton code rime a rien, ca fais n'importe quoi alors que celui du premier poste était nettement mieux, pourquoi cette régression ?

Reply

Marsh Posté le 26-07-2006 à 16:05:38    

pour debugger:
 
F9 pour placer un point d'arret, à la premiere ligne de ton code par exemple
F10 pour dérouler le programme pas à pas  
F11 pour entrer dans une méthode
 
ensuite, t'as des fenetres à afficher ou tu peux faire glisser tes variables pour en analyser le contenu.
 
Déroule ton programme jusqu'à ce qu'il plante, répertorie les variables en jeu, et analyse leurs valeurs.


---------------
Töp of the plöp
Reply

Marsh Posté le 26-07-2006 à 16:10:59    

skelter a écrit :

index tes tableaux de 0 à N-1, pas de 1 à N
 
ton code rime a rien, ca fais n'importe quoi alors que celui du premier poste était nettement mieux, pourquoi cette régression ?


 
Merci poour le debuggage.
En fait pour le premier code, je ne comprenais pas grand chose puisque je l'avais recupérer d'un forum, j'ai preferé faire mon propre code, mais apparement c'est du n'importe koi!!!
 
Donc je reprend dès le début  
 
Merci pour votre aide

Reply

Marsh Posté le 26-07-2006 à 16:13:07    

hésite pas :jap:
 
Néanmoins, il a l'air de te manquer certaines bases, il serait sans doutes bon de se documenter un petit peu. Y'a pas mal d'url qui trainent sur le forum.


---------------
Töp of the plöp
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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