IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Une classe très simple


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut Une classe très simple
    Bonjour à tous,

    J'ai un problème pour déclarer une classe : je peux compiler mais j'obtiens un segfault...

    Voilà ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
     
    const int NB_SOMMETS_MAX = 1000;
    const int nbIterations = 100;
    const int nbFourmis = 100;
     
    class graph
    {
    public:
      int nbSommets;
      long double distance[NB_SOMMETS_MAX][NB_SOMMETS_MAX];
      long double visibilite[NB_SOMMETS_MAX][NB_SOMMETS_MAX];
     
     
      int solution[NB_SOMMETS_MAX];
      long double longueurSolution;
     
      void lireEntree()
      {
        cin >> nbSommets;
     
        long double coords[nbSommets][2];
     
        for (int i = 0 ; i < nbSommets ; i++)
          cin >> coords[i][0] >> coords[i][1];
     
        for (int i = 0 ; i < nbSommets ; i++)
          for (int j = i ; j < nbSommets ; j++)
    	{
    	  long double curDist = sqrt(pow(coords[i][0]-coords[j][0],2)+pow(coords[i][1]-coords[j][1],2));
    	  distance[i][j] = distance[j][i] = curDist;
    	  visibilite[i][j] = visibilite[j][i] = 1/curDist;
    	}
     
      }
     
      void printParcours()
      {
        for (int i = 0 ; i < nbSommets ; i++)
          cout << solution[i] << " ";
     
        cout << endl;
        cout << "L=" << longueurSolution;
      }
    };
     
    int main()
    {
      cout.precision(16);
     
      graph g;
     
      g.lireEntree();
     
      return 0;
    }
    Apparemment, c'est lireEntree qui ne marche pas...
    Cela peut-il venir du fait que j'aie décdidé de tout mettre en public (ouais c'est pas bien je sais) ? Comment y remédier ?

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut et bienvenu,
    Que vaut la distance (curDist) quand i==j (c'est à dire dès la première itération)? Et par conséquent, que se passe-t-il pour visibilite?

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Fichtre !

    Merci pour le bug, mais ce n'est pas ça... A vrai dire même en commentant toutes les lignes sauf la première dans la fonction lireEntree, j'ai toujours un segfault...

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Effectivement, tu exploses la pile :
    sizeof(distance[NB_SOMMETS_MAX][NB_SOMMETS_MAX]) +
    sizeof(visibilite[NB_SOMMETS_MAX][NB_SOMMETS_MAX]) +
    sizeof(int solution[NB_SOMMETS_MAX]) = trop gros !

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Pour éviter cela, passe à boost::multi_array.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Merci !

    C'est vrai que je n'avais pas fait attention à la taille de mes données... 1000, 100, 100 me paraissait correct...
    Ca m'apprendra !

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Penses à

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête multi-critère dans une table très simple
    Par flashnet dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/05/2013, 20h56
  2. [MySQL] erreur de syntaxe sur une requête très simple
    Par Anandamine dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 01/06/2012, 09h45
  3. Assigner une fonction à une classe? Pas simple!
    Par Spidyy dans le forum Langage
    Réponses: 23
    Dernier message: 10/09/2009, 19h36
  4. Demande d'avis : critique d'une classe toute simple
    Par _skip dans le forum Débuter
    Réponses: 20
    Dernier message: 01/09/2009, 18h24
  5. Requête très longue sur une table très simple
    Par kragenskul dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/06/2009, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo