Runtime termination

Runtime termination - C++ - Programmation

Marsh Posté le 05-04-2009 à 15:32:26    

Bonjour,
 
Je travaille sur un projet d'optimisation de reseau de distribution et tout allait bien jusqu'a hier, depuis le programme ne s'execute plus et c'est assez surprenant.
 
La compilation se passe sans soucis, le probleme survient a l'execution ou le programme s'arrete brusquement.
 
Ci-dessous le code du programme principal:
 

Code :
  1. #include "Vector.hpp"
  2. #include "Population.hpp"
  3. #include <string>
  4. #include <math.h>
  5. #include <fstream>
  6. #include <iostream>
  7. using namespace std;
  8. int main()
  9. {
  10. // Declare and initialize the parameters
  11. int popSize = 4;
  12. int numMaxWHS = 9;
  13.     ifstream file;
  14. file.open("Data/Demand.TXT" );
  15. char buffer[12];
  16. // Number of customers
  17.     file.getline(buffer, 12);
  18.     int numCS = (int)strtod(buffer, NULL);
  19.     cout << numCS;
  20. // Total volume
  21.     file.getline(buffer, 12);
  22.     double supply = strtod(buffer, NULL);
  23.     cout << " " << supply << endl;
  24.     // Customers' demand
  25.     Vector<int, int> demand = Vector<int, int>(numCS);
  26.     for(int i=0;i<numCS;i++)
  27.     {
  28.         file.getline(buffer, 12);
  29.         demand[i] = (int)strtod(buffer, NULL);
  30.     }
  31.  
  32.     file.close();
  33.  
  34. // Create population of Solutions
  35. cout << "test1" << endl;
  36.     Datasim::Population pop(popSize, numMaxWHS, numCS, supply, demand);
  37.    
  38. return 0;
  39. }


 
Et de la classe population:
 

Code :
  1. #ifndef POPULATION_CPP
  2. #define POPULATION_CPP
  3. #include "Population.hpp"
  4. #include <cmath>
  5. #include <iostream>
  6. using namespace std;
  7. namespace Datasim
  8. {
  9. // Constructors and destructor
  10. Population::Population()
  11. {
  12. }
  13. Population::Population(int popSize, int maxNumWHS, int numCS, double supply, Vector<int, int> demand)
  14. {         
  15.     cout << "test2" << endl;
  16.     size = popSize;
  17.     pop = Vector<Solution, int>(size);
  18.     Solution sol(maxNumWHS, numCS);
  19.     for (int n=size-1; n>=0;n--)
  20.     {
  21.         sol.Init(supply, demand);
  22.         pop[n]= Solution(sol);
  23.     }
  24. }
  25. }
  26. // End of name space Datasim
  27. #endif // POPULATION_CPP


 
Le resultat:
 
le message Test1 s'affiche mais pas Test2 ce qui veut dire que l'execution s'arrete entre ces deux lignes (la console se ferme toute seule). J'ai lance le programme en ligne de commande pour voir si il y avait un message d'erreur, il y en a un et c'est le suivant:
"This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information"... pas tres parlant.
 
Ce qui m'etonne le plus est que mon programme fonctionnait super bien jusqu'a hier et tout d'un coup j'ai ce probleme alors que je n'ai pas touche au bout de code que je vous ai c/c.
 
Merci d'avance pour votre aide.
 
Bonne journee,
 
Jean

Reply

Marsh Posté le 05-04-2009 à 15:32:26   

Reply

Marsh Posté le 05-04-2009 à 21:19:39    

c'ets quoi ces Vector moche ?
Deja tu le passerais par reference et non par copie, selon ca taille, ca serait deja pas mal. Parce que , genre, t'as combien d'entrée dans ton ficheir ?


Message édité par Joel F le 05-04-2009 à 21:19:54
Reply

Marsh Posté le 05-04-2009 à 21:41:50    

et utilise std::string et std::getline

Reply

Marsh Posté le 05-04-2009 à 22:12:15    

Ouaip, ton problème à l'air définitivement dans ton constructeur Vector<int, int>.
Le mieux est d'utiliser (ou d'apprendre à utiliser) un debuggeur.

Reply

Marsh Posté le 06-04-2009 à 07:40:09    

Bonjour,
 
Je vous remercie pour vos reponses, malheureusement je n'ai pas reussit a resoudre mon probleme.
 
J'ai modifie le code de la classe Population:
 

Code :
  1. #include "Population.hpp"
  2. #include <cmath>
  3. #include <iostream>
  4. using namespace std;
  5. namespace Datasim
  6. {
  7. // Constructors and destructor
  8. Population::Population()
  9. {
  10. }
  11. Population::Population(int popSize, int maxNumWHS, int numCS, double supply, const Vector<double, int> &demand)
  12. {         
  13.     cout << "test2" << endl;
  14.     int j;
  15.     cin >> j;
  16.     /*size = popSize;
  17.     pop = Vector<Solution, int>(size);
  18.     Solution sol(maxNumWHS, numCS);
  19.     for (int n=size-1; n>=0;n--)  
  20.     {  
  21.         sol.Init(supply, demand);
  22.         pop[n]= Solution(sol);
  23.     }*/
  24. }
  25. }
  26. // End of name space Datasim
  27. #endif // POPULATION_CPP


 
mais j'ai toujours le probleme a l'execution. Dans mon fichier Demand.txt je lisais 350 valeurs (sur 350 lignes differentes) mais j'ai reduit a 10 valeurs pour voir si cela changeait quelque chose. Cela ne fonctionne pas non plus, je n'y comprend rien car mon programme tournait tres bien jusqu'a cette semaine sans que je ne modifie rien dans ces deux fichiers (main et Population), j'ai surtout travaille sur ma classe Solution qui ne sert a rien a ce niveau du programme.
 
J'ai essaye d'utiliser std::getline mais cela ne fonctionne pas, est-ce vraiment important ? Mon programme fonctionnait avant avec cette structure.
 
Pour l'utilisation d'un debugger je suis interesse si vous pensez que cela peut etre utile pour comprendre ce qui se passe dans mon cas, je ne vois pas comment je peux faire (J'utilise Dev-C++).
 
Merci et bonne journee,
 
Jean

Reply

Marsh Posté le 06-04-2009 à 07:41:33    

PS: la classe Vector ne pose pas de probleme, je l'ai recuperee dans un bouquin de C++ et utilisee dans d'autres projets sans souci. Je ne dis pas que c'est la solution la plus efficace mais elle m'a bien rendu service jusqu'a present.

Reply

Marsh Posté le 06-04-2009 à 09:42:13    

c'est surtout que moi le strucs sorties d'un bouqin de C++, j'y crois moyen comparait à la solution équivalente testée et stadnardisée masi bon ...
 
Je mets 10€ sur le fait que Vector n'est pas implanter correctement et que son constructeur par defaut est foireux. Alor spour etre sur, montre le code de Vector
Montre aussi la declaration de Population.

Reply

Marsh Posté le 06-04-2009 à 09:52:43    

Bonjour,
 
Voici la declaration de Population:
 

Code :
  1. #ifndef POPULATION_HPP
  2. #define POPULATION_HPP
  3. #include "Solution.hpp"
  4. #include "Vector.hpp"
  5. namespace Datasim
  6. {
  7. class Population
  8. {
  9. private:
  10.     int size;
  11.     Vector<Solution, int> pop;
  12.     Solution sol;
  13. public:
  14.    
  15.     Population();
  16.    
  17.     Population(int popSize, int maxNumWHS, int numCS, double supply,
  18.                        const Vector<double, int> &demand);
  19. };
  20. } // End of namespace Datasim
  21. #endif // POPULATION_HPP


 
Le debut du fichier Vector.hpp:
 

Code :
  1. #ifndef Vector_hpp
  2. #define Vector_hpp
  3. #include "Array.hpp"
  4. #include "FullArray.hpp"
  5. // Default structure is FullArray with default allocator. Default integral type is int.
  6. template <class V, class I=int, class S=FullArray<V> >
  7. class Vector: public Array<V, I, S>
  8. {
  9. private:
  10. public:
  11. // Constructors & destructor
  12. Vector();         // Default constructor
  13. Vector(I size);      // Constructor with size. Start index=1.
  14. Vector(I size, I start);    // Constructor with size & start index
  15. Vector(I size, I start, const V& val); // Constructor with size & start index + value
  16. Vector(const Vector<V, I, S>& source);  // Copy constructor
  17. Vector(const Array<V, I, S>& source);  // Copy with an array as argument
  18. virtual ~Vector();       // Destructor
  19. // Return the sum of the elements
  20. // Operators
  21. Vector<V, I, S>& operator = (const Vector<V, I, S>& source);
  22. Vector<V, I, S> operator - () const;  // Unary minus
  23. template <class W, class J, class T>
  24. friend Vector<W, J, T> operator + (const Vector<W, J, T>& v,const W& a); // Add v to every element
  25. template <class W, class J, class T>
  26. friend Vector<W, J, T> operator + (const W& a, const Vector<W, J, T>& v);
  27. template <class W, class J, class T>
  28. friend Vector<W, J, T> operator - (const Vector<W, J, T>& v, const W& a); // Subtract v from every element
  29. template <class W, class J, class T>
  30. friend Vector<W, J, T> operator - (const W& a, const Vector<W, J, T>& v);
  31. template <class W, class J, class T>
  32. friend Vector<W, J, T> operator * (const Vector<W, J, T>& v,
  33.          const W& a); // Multiply every element by v
  34. template <class W, class J, class T>
  35. friend Vector<W, J, T> operator * (const W& a, const Vector<W, J, T>& v);
  36. Vector<V, I, S> operator / (const V& a) const; // Divide every element by a
  37. Vector<V, I, S> operator + (const Vector<V, I, S>& v) const; // Add the elements
  38. Vector<V, I, S> operator - (const Vector<V, I, S>& v) const; // Subtract the elements
  39. Vector<V, I, S> operator * (const Vector<V, I, S>& v) const; // Multiply the elements
  40. Vector<V, I, S> operator / (const Vector<V, I, S>& v) const; // Divide the elements
  41. Vector<V, I, S>& operator += (const V& v); // Add v to every element
  42. Vector<V, I, S>& operator -= (const V& v); // Subtract v from every element
  43. Vector<V, I, S>& operator *= (const V& v); // Multiply every element by v
  44. Vector<V, I, S>& operator /= (const V& v); // Divide every element by v
  45. Vector<V, I, S>& operator += (const Vector<V, I, S>& v);// Add the elements
  46. Vector<V, I, S>& operator -= (const Vector<V, I, S>& v);// Subtract the elements
  47. Vector<V, I, S>& operator *= (const Vector<V, I, S>& v);// Multiply the elements
  48. };
  49. // Some 'command' type functions that are useful in some applications. Most functions
  50. // are void and this promotes Efficiency. Usability is also enhanced.  
  51. //  
  52. template <class V, class I> void scale(Vector<V,I>& v, const V& a); // v * a
  53. template <class V, class I> void scale(const V& a, Vector<V,I>& v); // a * v
  54. template <class V, class I> void add(Vector<V,I>& v, const V& a); // v + a
  55. template <class V, class I> void add(const V& a, Vector<V,I>& v); // a + v
  56. template <class V, class I> void
  57.   scaleAndOffset(Vector<V,I>& v, const V& a, const V& b); // (a * v) + b  
  58. template <class V, class I> void subtract(Vector<V,I>& v, const V& a); // v - a
  59. template <class V, class I> void subtract(const V& a, Vector<V,I>& v); // a - v
  60. template <class V, class I> void divide(Vector<V,I>& v, const V& a); // v / a
  61. template <class V, class I> void toggleSign(Vector<V,I>& v); // -v (unary minus)
  62. template <class V, class I> void assign(Vector<V,I>& v, const V& RHS); // All elements = RHS
  63. // Constructors & destructor
  64. template <class V, class I, class S>
  65. Vector<V, I, S>::Vector(): Array<V, I, S>()
  66. { // Default constructor
  67. }
  68. template <class V, class I, class S>
  69. Vector<V, I, S>::Vector(I size): Array<V, I, S>(size)
  70. { // Constructor with size. Start index=1.
  71. }


 
Et le debut du fichier Array.hpp:
 

Code :
  1. #ifndef Array_hpp
  2. #define Array_hpp
  3. #include "arraystructure.hpp"
  4. #include "fullarray.hpp"
  5. #include <stddef.h>
  6. // Default structure is FullArray with default allocator. Default integral type is int.
  7. template <class V, class I=int, class S=FullArray<V> >
  8. class Array
  9. {
  10. private:
  11. S m_structure;   // The array structure
  12. I m_start;    // The start index
  13. public:
  14. // Constructors & destructor
  15. Array();       // Default constructor
  16. Array(I size);     // Constructor with size. Start index=1.
  17. Array(I size, I start);  // Constructor with size & start index
  18. Array(I size, I start, const V& value); // Size, start and value
  19. Array(const Array<V, I, S>& source);  // Copy constructor
  20. virtual ~Array();     // Destructor
  21. // Selectors
  22. I MinIndex() const;        // Return the minimum index
  23. I MaxIndex() const;        // Return the maximum index
  24. I Size() const;       // The size of the array
  25. // Operators
  26. virtual V& operator [] (I index);    // Subscripting operator
  27. virtual const V& operator [] (I index) const; // Subscripting operator
  28. Array<V, I, S>& operator = (const Array<V, I, S>& source);
  29. };
  30. // Constructors & destructor
  31. template <class V, class I, class S>
  32. Array<V, I, S>::Array()
  33. { // Default constructor
  34. m_structure=S();
  35. m_start=0;
  36. }
  37. template <class V, class I, class S>
  38. Array<V, I, S>::Array(I size)
  39. { // Constructor with size. Start index=1.
  40. m_structure=S(size_t(size));
  41. m_start=0;
  42. }


 
Je reconnais que ces Vector ne sont pas la meilleure solution pour des listes de double comme Demand[] mais je les trouve bien pratiques et simple a utiliser pour des listes d'objets plus complexes.
 
Desole de poster un message aussi long et merci beaucoup pour ton aide.
 
Jean

Reply

Marsh Posté le 06-04-2009 à 10:07:52    

Bah si tu veux rester avec ta soupe et pas nous donner de code => apprend à utiliser un debugger et debug ta classe Vector

Reply

Marsh Posté le 06-04-2009 à 10:18:52    

Bonjour Taz,
 
Desole il manquait le bout de code suivant:
 

Code :
  1. #ifndef FullArray_hpp
  2. #define FullArray_hpp
  3. // Use the STL vector class
  4. #include <vector>
  5. #include "ArrayStructure.cpp"
  6. template <class V, class TA=std::allocator<V> >
  7.       class FullArray: public ArrayStructure<V>
  8. {
  9. private:
  10. std::vector<V, TA> m_vector;        // Use STL vector class for storage
  11. public:
  12. // Constructors & destructor
  13. FullArray();
  14. FullArray(size_t size);
  15. FullArray(const FullArray<V, TA>& source);
  16. virtual ~FullArray();
  17. // Selectors
  18. virtual size_t Size() const;
  19. // Modifiers
  20. // Operators
  21. V& operator[] (size_t index);
  22. const V& operator[] (size_t index) const;
  23. FullArray<V, TA>& operator = (const FullArray<V, TA>& source);
  24. };
  25. // Constructors & destructor
  26. template <class V, class TA>
  27. FullArray<V, TA>::FullArray(): ArrayStructure<V>()
  28. { // Default constructor
  29. m_vector=std::vector<V, TA>(1); // vector object with 1 element
  30. }
  31. template <class V, class TA>
  32. FullArray<V, TA>::FullArray(size_t size): ArrayStructure<V>()
  33. { // Constructor with size
  34. m_vector=std::vector<V, TA>(size);
  35. }


 
En fait le code des classes se trouve dans les fichiers .hpp (template).
 
Je suis certain que mon code n'est pas joli, je crois que j'ai choisit le metier le plus eloigne de l'informatique (la metallurgie). Ne croyez pas que je soutienne que mes programmes sont les plus efficaces au contraire, par contre une chose est sure. Ce programme a marche :)

Reply

Marsh Posté le 06-04-2009 à 10:18:52   

Reply

Marsh Posté le 06-04-2009 à 11:02:01    

v_v tout ce bordel pour encapsuler std::vector dnas une soupe infame ...
Utilise std::vector directement et regarde si ca marche pas mieux ...

Reply

Marsh Posté le 06-04-2009 à 12:32:47    

:)
 
Je viens de faire l'essai que tu preconises. Pas de probleme a la compilation mais toujours le meme probleme a l'execution.
 
Pour info le code utilise pour cet essai:
 
Fonction main:
 

Code :
  1. #include "Population.hpp"
  2. #include <string>
  3. #include <math.h>
  4. #include <fstream>
  5. #include <iostream>
  6. using namespace std;
  7. int main()
  8. {
  9. // Declare and initialize the parameters
  10. int popSize = 4;
  11. int numMaxWHS = 9;
  12.     ifstream file;
  13. file.open("Data/Demand.TXT" );
  14. char buffer[12];
  15. // Number of customers
  16.     file.getline(buffer, 12);
  17.     int numCS = (int)strtod(buffer, NULL);
  18.     cout << numCS;
  19. // Total volume
  20.     file.getline(buffer, 12);
  21.     double supply = strtod(buffer, NULL);
  22.     cout << " " << supply << endl;
  23.     // Customers' demand
  24.     std::vector<double> demand = std::vector<double>(numCS);
  25.     for(int i=0;i<numCS;i++)
  26.     {
  27.         file.getline(buffer, 12);
  28.         demand[i] = strtod(buffer, NULL);
  29.     }
  30.  
  31.     file.close();
  32.  
  33. // Create population of Solutions
  34. cout << "test1" << endl;
  35.     Datasim::Population pop(popSize, numMaxWHS, numCS, supply, demand);
  36.    
  37. return 0;
  38. }


 
Classe population:
 

Code :
  1. #ifndef POPULATION_CPP
  2. #define POPULATION_CPP
  3. #include "Population.hpp"
  4. #include <cmath>
  5. #include <iostream>
  6. using namespace std;
  7. namespace Datasim
  8. {
  9. // Constructors and destructor
  10. Population::Population()
  11. {
  12. }
  13. Population::Population(int popSize, int maxNumWHS, int numCS, double supply, const std::vector<double> &demand)
  14. {         
  15.     cout << "test2" << endl;
  16. }
  17. }
  18. // End of name space Datasim
  19. #endif // POPULATION_CPP


 
Declaration de Population:
 

Code :
  1. #ifndef POPULATION_HPP
  2. #define POPULATION_HPP
  3. #include "Solution.hpp"
  4. //#include "Vector.hpp"
  5. namespace Datasim
  6. {
  7. class Population
  8. {
  9. public:
  10.    
  11.     Population();
  12.    
  13.     Population(int popSize, int maxNumWHS, int numCS, double supply,
  14.                        const std::vector<double> &demand);
  15.                      
  16. };
  17. } // End of namespace Datasim
  18. #endif // POPULATION_HPP


 
Je suis desole que ce soit aussi laborieux... Merci pour votre patience.
 
Jean

Reply

Marsh Posté le 06-04-2009 à 13:44:22    

Chez moi ce code marche tres bien :

Code :
  1. #include <string>
  2. #include <math.h>
  3. #include <fstream>
  4. #include <iostream>
  5. #include <vector>
  6. using namespace std;
  7.    namespace Datasim
  8.    {
  9.    class Population
  10. {
  11. public:
  12. Population() {}
  13. Population(int popSize, int maxNumWHS, int numCS, double supply, const std::vector<double> &demand) {
  14.  cout << "test2" << endl;
  15. }
  16. };
  17. } // End of namespace Datasim
  18.  
  19. int main()
  20. {
  21. // Declare and initialize the parameters
  22. int popSize = 4;
  23. int numMaxWHS = 9;
  24. ifstream file;
  25. file.open("demand.txt" );
  26. char buffer[12];
  27. // Number of customers
  28. file.getline(buffer, 12);
  29. int numCS = (int)strtod(buffer, NULL);
  30. cout << numCS;
  31. // Total volume
  32. file.getline(buffer, 12);
  33. double supply = strtod(buffer, NULL);
  34. cout << " " << supply << endl;
  35. // Customers' demand
  36. std::vector<double> demand = std::vector<double>(numCS);
  37. for(int i=0;i<numCS;i++) {
  38. file.getline(buffer, 12);
  39. demand[i] = strtod(buffer, NULL);
  40. }
  41. file.close();
  42. // Create population of Solutions
  43. cout << "test1" << endl;
  44. Datasim::Population pop(popSize, numMaxWHS, numCS, supply, demand);
  45. return 0;
  46. }


 
... Verifie que les valeurs retournees par ton fichier sont correctes.

Reply

Marsh Posté le 06-04-2009 à 13:56:05    

Code :
  1. std::vector<double> demand = std::vector<double>(numCS);


 
[:prozac] on est pas en JAVA :o
 

Code :
  1. std::vector<double> demand(numCS);

Reply

Marsh Posté le 06-04-2009 à 14:36:01    

Les deux syntaxes produisent le meme resultat  :pt1cable:  
 
Je sens que je ne vais jamais y arriver, le pire c'est que cela marchait jusqu'a samedi...
 
J'affiches demand[] avec des cout et les valeurs sont conformes a celles qui se trouvent dans mon fichier...

Reply

Marsh Posté le 06-04-2009 à 15:22:20    

sors donc ton debugger pour voir où ça plante au moins ...

Reply

Marsh Posté le 06-04-2009 à 15:22:56    

Et prie pour numCS soit >= 0;

Reply

Marsh Posté le 06-04-2009 à 15:40:29    

Il n'y a pas de probleme avec numCS, il est egal a 15 et j'affiche aussi les 15 valeurs enregistrees dans demand[] : aucun probleme.
 
Il vient de se passer quelque chose de mystique, l'execution a marche deux fois donc j'ai enleve les commentaires que j'avais mis pour simplifier mon programme dans Population.cpp et la le programme n'a pas marche. Ce qui est bizarre c'est qu'en remettant les commentaires exactement au meme endroit l'execution ne fonctionne pas.
 
Le probleme peut-il venir de Dev-C++ ou d'un probleme de memoire dans mon ordinateur ?
 
Je suis maintenant certain qu'il n'y a pas de probleme de programmation, le programme fonctionnait avant et il vient de fonctionner deux fois.
 
C'est tres bizarre...
 
Une autre idee ?
 
Edit: Je ne sais pas comment utiliser le debugger pour ce probleme. Quel type de renseignements peut-il me fournir sachant que l'erreur se produit lors de l'appel au constructeur de la classe Population ?
 
Edit pour Taz: Pour rappel, mon message "Test1" s'affiche mais "Test2" ne s'affiche pas, le programme plante entre les deux.


Message édité par hurang le 06-04-2009 à 16:03:04
Reply

Marsh Posté le 06-04-2009 à 16:04:21    

si ton programme a un comportement aleatoire, le premier truc à penser c'est une erreur du dit programme pas un pb de hardware ... Le truc ets que jusqu'ici tu as eu de la chance que ca marche c'est tout.

 

Le debugger te permettra de voir si tes données sont bien allouées, chargées et utiliser proprement. Si tes donner sont bien là, es tu sur de pas taper hors du tableau dans une qqconque boucle ?

 

Et le debugging a grand cout de cout ca marche rarement ou on veut vu que les i/o sont buffeirsées et que le plantage peut se produtre un peu avant/apres selon comment le compilo à reordonancer le bouzin.


Message édité par Joel F le 06-04-2009 à 16:07:39
Reply

Marsh Posté le 06-04-2009 à 19:09:50    

Merci Joel F et les autres. Finalement le programme refonctionne mais je n'ai pas l'impression d'avoir change quelque chose, j'espere que ce n'est pas temporaire. Sachez seulement que j'ai change tous les Vector<,> en vector<> dans chacune de mes classes et que j'utilise des passages par reference.
 
J'ai juste un petit probleme, je ne sais pas comment utilise les donnees que je passe par reference. J'ai cherche sur Internet et je ne trouve pas la reponse.
 
Exemple avec ma classe Population:
 

Code :
  1. Population::Population(int popSize, int maxNumWHS, int numCS, double supply, const std::vector<double> &demand)
  2. {   
  3.      cout << "Test" << endl;
  4.     for(int i=0;i<numCS;i++)
  5.     {
  6.         cout << demand[i] << " ";
  7.      }
  8. }


 
Affiche:
Test
 
puis plante.
 
Quelle doit etre la syntaxe ?
 
Merci d'avance

Reply

Marsh Posté le 06-04-2009 à 19:12:21    

la syntaxe est correct. Ton tableau demand a t il été initialisé avec le bon nb d'elements

Reply

Marsh Posté le 06-04-2009 à 19:28:33    

pourquoi ne pas utiliser vector::size() pour obtenir la taille du vector plutot que de passer sa taille en argument ?

Reply

Marsh Posté le 07-04-2009 à 02:38:11    

Joel F, xilebo,
 
Merci a tous les deux.
 
A l'initialisation de demand, j'utilise maintenant demand.size() et je n'ai plus de probleme dans Population.
 
A priori je n'ai plus de probleme d'autres problemes, merci beaucoup pour votre patience.
 
Bonne journee,
 
Jean
 
PS: je vis en Chine, d'ou le decalage horaire...

Reply

Marsh Posté le 07-04-2009 à 09:51:18    

fais un demand.at(i); ça va lancer une exception

Reply

Marsh Posté le 07-04-2009 à 09:53:02    

t'as quand même un gros problème puisque numCS est censé être égal à demand.size()

Reply

Marsh Posté le 07-04-2009 à 12:24:10    

C'est justement ce qui est bizarre... D'autant plus qu'a l'affichage numCS a la valeur qu'il doit avoir.
 
Je ferai l'essai demand.at(i); pour voir ce que cela donne, merci du conseil.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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