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 :

problème de tableau


Sujet :

C

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut problème de tableau
    bon jai essayer d'effectuer un petit problème qui consiste a compter le nombre d'iteration des nombres dun tableau qui N'EST PAS TRIE
    voila mon code (je pense que c'ets très logique)mais ca donne plante lors de la compilation:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        void nbocc(int tableau[100]);
        int verifier(int tablo[100],int h);
        int tableau[]={13,14,14,15,17,19};
        int i;
        nbocc(tableau);
     
        return 0;
    }
    void nbocc(int tableau[100])
    {
        int i,r,j;
        int c=1;
        for(i=0;i<6;i++)
        {
            r=verifier(tableau,i);
            if(r==1)
            {
                for(j=i+1;j<6;j++)
                {
                    if(tableau[j]==tableau[i])
                    {
                    c++;
                    }
                }
                printf("le nombre %d se repete %d fois",tableau[i],c);
                c=1;
            }
            if(r==0)
            {
                i++;
            }
        }
    }
            int verifier(int tablo[100],int h)
           {
               int e;
               while(tablo[e]!=tablo[h] && e<h)
               {
                   e++;
               }
               if(tablo[e]!= tablo[h])
               {
               return 1;
               }
               else
               {
               return 0;
           }
           }
    mon programme consiste a utiliser deux fonction la prmiere consiste a balayer les nombre un par un pour compter les iterations mais avant jai utiliser une autre fonction qui verifie si on a deja calculer les iterations de ce nombre si oui la fonction retourne 0 donc on saute ce nombre sinon la fonction retourne 1......

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut précisions???
    Tu pourrais nous expliquer quelle erreur s'affiche lors de la compilation.

    merci

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut
    ca plante.. et ca donne rien

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Il y a au moins cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            int verifier(int tablo[100],int h)
           {
               int e;
               while(tablo[e]!=tablo[h] && e<h)
    ....
    e est non initialisé. Un compilateur avec les warnings correctement configurés aurait dû le signaler.

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut
    ca marche pas toujours!!

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 502
    Par défaut
    Citation Envoyé par Cyang Voir le message
    ca marche pas toujours!!
    Si tu ne nous dis pas ce qui ne marche pas, on ne pourra pas t'aider. Poste ici (avec les balises [code] et [/code]) les messages d'erreur que tu obtiens à la compilation et, le cas échéant, à l'exécution.

  7. #7
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut
    quand je compile j'obtiens rien sur la console
    j'obtiens une console vide!!!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main()
    {
        void nbocc(int tableau[100]);
        int verifier(int tablo[100],int h);
        int tableau[]={13,14,14,15,17,19};
        int i;
        nbocc(tableau);
     
        return 0;
    }
    Estes-vous sur que cette syntaxe est autorisée : mettre des prototypes dans le corps d'une fonction?
    Mais ce n'est pas la seule faute.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut
    Bonjour,

    Hormis le problème de la déclaration de fonction dans ton 'main', qui ne devrait t'afficher que des 'Warnings' (si tu compiles avec l'option qui convient...), ton véritable problème se situe dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int verifier(int tablo[100],int h)
    ( Je ne parle pas là de ta variable 'e' qui n'est pas initialisée )
    Mais le problème vient plutôt de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(tablo[e]!= tablo[h])
    {
        return 1;
    }
    Ton test 'if' n'est pas bon !!!
    Parce que quand tu sortiras de ton 'while', deux cas seulement seront possibles
    1. tu n'as pas rencontré la valeur tablo[h] dans les valeurs précédentes
    (dans ce cas tu auras e == h et donc tablo[e] == tablo[h] !!)
    2. tu as déjà rencontré la valeur tablo[h] pour un certain e<h,
    et donc tu auras encore tablo[e] == tablo[h] !!!

    En clair, ta fonction 'verifier' ne renverra jamais '1'...

    C'est cette condition qu'il faut tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(e == h)
    {
        return 1;
    }
    Je n'ai pas testé, mais je suis prêt à parier que le problème vient de là...

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut
    une autre erreur que je n'avais pas vue !

    Il ne faut surtout pas écrire ca !
    A cause de ce test, tu vas louper certaines cases de ton tableau.
    si le test précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(r==1)
    {
        /* ...  */
    }
    échoue, la variable 'i' va automatiquement être incrémentée grâce à ta boucle 'for'.
    Les lignes
    sont à supprimer !!

    Ton programme devrait fonctionner correctement avec toutes les corrections que t'ont apportées les gens du forum...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Question : est-ce que Cyang a compris?
    Moi, je donnerai deux petits conseils à Cyang
    1- distinguer les 3 étapes différentes
    a- compilation : le compilateur vérifie qu'il n'y a pas de faute de syntaxe, et si c'est le cas, crée un fichier OBJ pour chaque module.
    b- link : le compilateur essaye de relier les différentes fonctions nécéssaires, à partir du main, et s'il y arrive, crée un fichier EXE.
    c- exécution : l'utilisateur lance le programme (.EXE), et celui-ci s'exécute avec ou sans erreur.

    2- faire du debug. Il y a deux méthodes non exclusives
    a- utiliser un debuger qui contient différentes possibilités, en particulier l'exécution pas à pas
    b- mettre des impressions intermédiaires pour vérifier que certaines valeurs sont conformes à ce qu'on attendait.

    Même les meilleurs programmeurs font du debug.

  12. #12
    Membre averti
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2010
    Messages : 48
    Par défaut le problème est résolu
    je tien a vous remercier tous pour vos précieux conseils qui m'ont été très très utils
    je reconnais les fautes que jai commis et maintenant 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
    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
     
     
    #include<stdio.h>
    #include<stdlib.h>
     
    void rech(int tableau[]);
    int verifi(int tabl[],int h);
    main()
    {
        int tableau[8]={12,12,12,14,17,14,45,14};
        int i,j;
        int compteur=1;
        for(i=0;i<1;i++)
        {
            for(j=i+1;j<=8;j++)
            {
                if(tableau[i]==tableau[j])
                {
                    compteur++;
                }
            }
            printf("le nombre %d se repete %d fois\n",tableau[i],compteur);
        }
        rech(tableau);
        return 0;
    }
    int verifi(int tabl[],int h)
    {
     
        int e;
        for(e=0;e<h;e++)
        {
            if(tabl[e]==tabl[h])
            {
                return 0;
            }
        }
        return 1;
    }
    void rech(int tableau[])
    {
        int i,r;
        int j;
        int compteur=1;
        for(i=1;i<8;i++)
        {
            r=verifi( tableau,i);
            if(r==1)
            {
                for(j=i+1;j<=8;j++)
                {
                    if(tableau[i]==tableau[j])
                    compteur++;
                }
                printf("le nombre %d se repete %d fois\n",tableau[i],compteur);
                compteur=1;
            }
            if(r==0)
            {
     
            }
        }
    }

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 251
    Par défaut
    Cyang, n'oublies donc pas de marquer résolu....

Discussions similaires

  1. Débutant en Javascript : problème de tableau !
    Par bluheim dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/11/2005, 15h03
  2. [XHTML] problème de tableau
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/04/2005, 07h18
  3. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  4. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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