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 :

Aide Segmentation fault ( core dumped )


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut Aide Segmentation fault ( core dumped )
    Bonjour je vous contacte car j'ai un petit soucis . Voilà j'aimerai faire un programme qui remplit aléatoirement un tableau sans qu'une valeur soit répétée.
    Je créer une méthode que j'appelle a1 avec en paramètre le pointeur d'un tableau et une valeur n , qui sera la taille de celui-ci . De plus je créer 3 autres méthodes: une qui initialise un tableau, une autre qui recherche si une valeur est présente dans celui-ci, et une qui "supprime" la valeur passée en paramètre en mettant -1 à la place.
    A l'éxécution de mon programme aucunes erreurs , mais dans la console qui s'ouvre j'ai ce message : Segmentation fault ( core dumped ) .
    J'ai cherche sur internet ce que cela signifiait, c'est un problème soit de pointeur qui pointe un objet non valide ou un index qui va plus loin que le tableau. Cependant j'ai fait quelques modifications et toujours le même soucis .

    En espérant que qulqu'un puisse m'aider .
    C'est mon premier message sur le forum, merci de m'indiquer si j'ai oublié des choses ou autres .

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    #include<stdlib.h>
    #include<stdio.h>
    #include<time.h>
     
    // Méthode qui initialise le tableau avec les valeurs :
    void InitTab( int* Tab , int Taille )
    {
        int i;
        for(i=0 ; i<Taille ; i++)
            Tab[i]=i;
    }
     
    // Méthode qui met à -1 la cellule dont la valeur est celle passée en paramètre :
    void SupCell(int* Tab , int Taille , int Valeur )
    {
        int i;
        for(i=0 ; i<Taille ; i++)
        {
            if(Tab[i] == Valeur)
                Tab[i]=-1;
        }
    }
     
    // Méthode qui recherche si une valeau est dans le tableau, et retourne 1 si l'entier est trouvé :
    int SearchVal(int* Tab , int Taille , int Valeur )
    {
        int i;
        int res;
        for(i=0 ; i<Taille ; i++)
        {
            if(Tab[i] == Valeur)
                return 1;
        }
     
     
    }
     
    void a1(int* t , int n)
    {
        int i;
        srand(time(NULL));              // initialise la fonction srand
        int Tab;
        int aleat;
        int x;
        InitTab(&Tab, n );
        for( i=0 ; i<n ; i++)
        {
            aleat=rand()%n;
            x=SearchVal(&Tab,n,aleat);
            while(x!=1)
            {
                aleat=rand()%n;
                x=SearchVal(&Tab,n,aleat);
            }
            t[i]=aleat;
            SupCell(&Tab,n,aleat);
        }
    }
     
     
    int main()
    {
       int n=5;
       int i;
       int Val=3;
       int t[n];
       a1(&t,n);
       for(i=0; i<n;i++)
            printf("%d | ",t[i]);
    }

    Merci d'avoir lu mon message , bonne journée .

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Ligne 68, &t est de type int *[] donc dégénéré en int ** alors que ta fonction attend un int * : ne lui passes pas &t mais t.

    Nommes correctement tes variables et tes fonctions, surtout quand tu dois faire lire ton programme à d'autres personnes comme ici. a1() n'évoque rien à personne, d'autant plus que tes autres fonctions portent des noms compréhensibles.

Discussions similaires

  1. segmentation fault (core dumped)
    Par domdom974 dans le forum Fortran
    Réponses: 2
    Dernier message: 04/08/2009, 09h07
  2. [ASE 15.0.3] Segmentation Fault - core dumped
    Par dngaya dans le forum Adaptive Server Enterprise
    Réponses: 0
    Dernier message: 04/06/2009, 10h55
  3. segmentation fault (core dumped)
    Par miamiam dans le forum Débuter
    Réponses: 3
    Dernier message: 26/11/2008, 11h46
  4. Réponses: 1
    Dernier message: 10/12/2006, 21h37
  5. Segmentation fault (core dumped)
    Par Battosaiii dans le forum C
    Réponses: 13
    Dernier message: 25/11/2005, 18h36

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