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 :

Occurence de valeurs dans un tableau


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Occurence de valeurs dans un tableau
    Voilà, je dois rédiger un programme dans lequel on demande à l'utilisateur combien de valeurs il veut rentrer dans un tableau.
    Une fois la saisie effectuée, le programme doit retourner les valeurs maxi et mini de la série avec leur occurrence respective.

    Mon problème vient du décompte des occurrences.

    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
    #include <stdio.h>
    #include <conio.h>
     
    int NBVAL, i, TAB[100];
     
    // fonction mini
    int MinTab(int *TAB, int NBVAL)
    {
        int Minimum=TAB[0];
        for (i=1; i<NBVAL; i++)
        if (TAB[i]<Minimum)
        Minimum=TAB[i];
        return Minimum;
    }
     
    //fonction maxi
    int MaxTab(int *TAB, int NBVAL)
    {
        int Maximum=TAB[0];
        for (i=1; i<NBVAL; i++)
        if (TAB[i]>Maximum)
        Maximum=TAB[i];
        return Maximum;
    }
     
     
    // fonction principale
    int main ( int argc, char** argv )
    {
        printf("Nombre de valeurs : ");
        scanf("%d", &NBVAL);
        for (i=0; i<NBVAL; i++)
        {
            printf("valeur %d : ", i+1);
            scanf("%d", &TAB[i]);
        }
     
        int iMaxTab=1;
        if (TAB[i]==MaxTab(TAB, NBVAL))
        iMaxTab++;
     
        int iMinTab=1;
        if (TAB[i]==MinTab(TAB, NBVAL))
        iMinTab++;
     
        printf("Le minimum de la serie est %d (%d occurences) et le maximum %d (%d occurences).\n", MinTab(TAB, NBVAL), iMinTab, MaxTab(TAB, NBVAL), iMaxTab);
     
        getch();
    }
    Le programme me retourne 0 occurrences, j'ai beau retourner le problème, je ne vois pas.

    Merci d'avance pour vos conseils.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    Petite erreur : main doit retourner un int, donc ajoute return 0; à la fin de ton main.

    Pour ton problème :
    Ton code ne peut pas fonctionner. Tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        int iMaxTab=1;
        if (TAB[i]==MaxTab(TAB, NBVAL))
        iMaxTab++;
    - i vaut quoi ici ? Il vaut NBVAL, donc deja comportement indeterminé car tu dépasse les limites du tableau.
    - Il faudrait plutôt reparcourir tout le tableau et tester pour chaque case si TAB[i] == maxTab (mais calculer MaxTab une seule fois). Donc faire une boucle de i = 0 a i < NBVAL.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Min, Max
    Bonjour,
    Tu peux essayer de remplacer la partie "int iMaxTab=1;" jusqu'au printf par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        int Max = MaxTab(TAB, NBVAL);
        int Min = MinTab(TAB, NBVAL);
        int iMinTab = iMaxTab = 0;
        for (i=0;i<NBVAL;i++)
    	{
    	if (TAB[i]==Min) iMinTab++;
            if (TAB[i]==Max) iMaxTab++;
    	}
     
     
        printf("Le minimum de la serie est %d (%d occurences) et le maximum %d (%d occurences).\n", Min, iMinTab, Max, iMaxTab);

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour vos lumières et bon réveillon à tous.

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

Discussions similaires

  1. calcul nombre d'occurences de valeurs dans un tableau
    Par solenne74 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/09/2012, 12h45
  2. [LG] Valeur dans un tableau
    Par hunter dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2005, 13h59
  3. [tableau]Valeur dans un tableau
    Par kisscool31 dans le forum Collection et Stream
    Réponses: 30
    Dernier message: 17/05/2005, 09h45
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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