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 :

erreur de segmentation


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut erreur de segmentation
    Hello

    voila jai un probblème sous dev cpp (encore et toujours!!)

    mon programme est un générateur de grilles de sudoku qui marche bien sous windows avec VS 2005 mais qui me pose des problèmes sous dev cpp et pareil sous linux...

    quelqu'un peut il me dire vers quoi je dois regarder, probablement des pointeurs certe mais lequel exactement et quoi comme problème ?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Hum....

    Attend, je sors la boule de cristal ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Lol Swoög

    Il faut que tu te dises que l'erreur était là avant de passer sous devcpp et linux, c'était juste un hasard si elle se manifestait pas

    Donc repasse ton code à la loupe

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut
    ah je crois qu'il y a un problème au niveau de la fonction my_rand car quand je la vire ca marche :

    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
     
    #define RAND_MAX 10000
     
    ...
     
     
    int my_rand (void)
    {
     static int tab[N];
     static int first = 0;
     int index;
     int rn;
     if (first == 0)
     {
      int i;
      srand (time (NULL));
      for (i = 0; i < N; i++)
      tab[i] = rand();
      first = 1;
     }
     index = (int)(rand() / RAND_MAX * (N - 1));
     rn = tab[index];
     tab[index] = rand();
     return (rn);
    }

  5. #5
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    heu... elle sert à quoi cette fonction ? à part gaspiller de la ram et du temp proc ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  6. #6
    J&B
    J&B est déconnecté
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Par défaut
    Un simple srand (time (NULL)); au debut de ton prog et rand(); à la place de l'appel de my_rand();

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 422
    Par défaut
    ben c'est la fonction que j'ai récupéré de la FAQ de developpez.com je vous signal tout de même!!!

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Swoög
    heu... elle sert à quoi cette fonction ? à part gaspiller de la ram et du temp proc ?
    Moi je l'aime bien cette fonction Jouons à la loterie

    Par contre il ne faut pas redéfinir RAND_MAX, il l'est déjà dans stdlib.h.

  9. #9
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Citation Envoyé par gege2061
    Moi je l'aime bien cette fonction Jouons à la loterie
    en attendant, je vois pas à quoi elle sert

    Citation Envoyé par gege2061
    Par contre il ne faut pas redéfinir RAND_MAX, il l'est déjà dans stdlib.h.
    +1 ou alors le définir avant l'include de stdlib.h
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gege2061
    Moi je l'aime bien cette fonction Jouons à la loterie
    Moi je ne l'aime pas du tout. Je ne suis pas sur que ca augmente bien l'aspect aleatoire de la suite generee d'une part (j'ai pas ete voir l'article s'il y avait des references). D'autre part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index = (int)(rand() / RAND_MAX * (N - 1));
    fait vraissemblablement autre chose que ce que je pense l'auteur.

  11. #11
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    D'autre part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index = (int)(rand() / RAND_MAX * (N - 1));
    fait vraissemblablement autre chose que ce que je pense l'auteur.
    Je suis d'accord, pour être correct ce serait pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double tmp = rand();
     tmp = (tmp / RAND_MAX)*(N-1);
     index = tmp;
    Jc

  12. #12
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par fearyourself
    Je suis d'accord, pour être correct ce serait pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double tmp = rand();
     tmp = (tmp / RAND_MAX)*(N-1);
     index = tmp;
    Jc
    Un gros probleme: le passage de double a int tronque, donc index ne vaudra N-1 que si rand() retourne RAND_MAX.

    Un petit probleme (du moins pour des valeurs de N petites par rapport a RAND_MAX): si N ne divise pas RAND_MAX+1, il y a certaines valeurs qui sont retournees plus souvent que d'autres.

    Je me permets de reciter http://www.bourguet.org/cpp/random.pdf
    ou j'ai decris ce qui me semble la meilleure maniere d'eviter tout les petits et gros problemes quand on veut reduire l'intervalle.

  13. #13
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Un gros probleme: le passage de double a int tronque, donc index ne vaudra N-1 que si rand() retourne RAND_MAX.

    Un petit probleme (du moins pour des valeurs de N petites par rapport a RAND_MAX): si N ne divise pas RAND_MAX+1, il y a certaines valeurs qui sont retournees plus souvent que d'autres.

    Je me permets de reciter http://www.bourguet.org/cpp/random.pdf
    ou j'ai decris ce qui me semble la meilleure maniere d'eviter tout les petits et gros problemes quand on veut reduire l'intervalle.
    Certes, je suis entièrement d'accord et j'ai lu ton pdf qui est très bon. Mais je faisais remarquer que le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index = (int)(rand() / RAND_MAX * (N - 1));
    est faux puisque rand() retourne un entier qui, divisé par RAND_MAX, vaudra toujours 0 ou 1 (division entière) et c'est donc pas ce que voulait l'auteur...

    Ensuite, pour avoir une bonne répartition, un vrai générateur de nombre aléatoire correct, c'est évident que ce n'est pas comme cela qui faudrait s'y prendre...

    Jc

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par benthebest
    voila jai un pb sous dev cpp (encore et tjrs!!)

    mon programme est un generateur de grilles de sudoku qui marche bien sous win avec VS 2005 ms ki me pose des pb sous dev cpp et pareil sous linux...
    C'est sûrement de la faute du compilateur...
    kkun peut il me dire vers koi je dois regarder , probablement des pointeurs certe ms lekel exactement et koi kom pb??
    Je rappelle qua la langue de ce forum est le français. Moi pas comprendre langage reptilien...

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par benthebest
    ben c la fct ke jai recuperer de la FAC de developpez.com je vous signal tt de meme!!!
    Elle est où cette FAC ? On s'inscrit où ?

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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