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 :

gestion de tableaux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut gestion de tableaux
    bonjour,

    j'aimerais utiliser un tableau de 100 données de type entier.
    Je dois remplir ce tableau par des variables aléatoires qui arrivent au compte goute.
    Je ne dois faire aucun traitement tant que je n'ai pas 100 valeurs dans mon tableau.
    Une fois que j'ai 100 valeurs, je dois faire la moyenne de ces 100valeurs.
    En même temps, je dois gérer l'arrivée de nouvelle valeur dans mon tableau en remplaçant la valeur la plus ancienne par une nouvelle valeur. et donc ensuite faire la moyenne de ces valeurs. et ainsi de suite.

    Pouvez vous m'aider pour faire cela?
    Merci

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    Bel exercice !!
    Le genre qu'on trouve lors d'un entretien d'embauche ou à l'école.

    Avant même de coder, il faut penser à l'algorithme. Ca ressemble à une "pile".

  3. #3
    Membre expérimenté Avatar de brachior
    Homme Profil pro
    Doctorant
    Inscrit en
    Mai 2011
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 190
    Par défaut
    Dans ce que j'ai compris,
    Vu que la taille est fixe,
    J'utiliserai un tableau "circulaire" avec un index
    Ainsi qu'une variable de somme pour éviter un calcul long à chaque fois

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Par défaut Eratosthène ?
    Cela m'a fait penser au crible d'Eratosthène (ici), mais ce n'est pas cet algorithme que vous voulez

    En fait, deux fonctions sont nécessaires:

    l'une pump(élément)
    Si la liste fait 100 éléments
    remplacer le Xième élément dans la liste
    Sinon
    insérer
    Si la liste fait 100 éléments alors calculer la moyenne

    enfin un main()
    boucler sur 500 éléments
    Générer aléatoirement un élement
    appeler la fonction pump(élément)
    C:
    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
     
    int *liste;
    int size;
    int position;
     
    void calcule_moyenne()
    {
           /* calculer la moyenne */
    }
     
    void pump(int e)
    {
       if (size < 100)
       {
          liste[position] = e;
          position = position + 1;
          size = size + 1;
       }
       else {
          if (!(position % 100)) {
             position = 0;
          }
          liste[position] = e;
          position = position + 1;
       }
       if (size >= 100)
       {
          calcul_moyenne();
       }
    }
     
    void main(char *argv[], int argc)
    {
      int ielement;
      size = 0;
      liste = (int*)malloc(100*sizeof(int));
      position = 0;
      for(ielement = 0; ielement < 500; ielement = ielement + 1)
      {
         int r = (int)(random() * 1000);
         pump(r);
      }
    }

  5. #5
    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
    On peut suivre le schéma suivant :
    - N  : une constante entière (#define N 100)
    - tab : un tableau de N entier
    - cpt : un compteur de données initialisé à 0
    - somme : une variable initialisée à 0 stockant la somme des données stockées dans le tableau
    ---------------------------------------
    - A chaque nouvelle valeur val
      - ajouter val à la somme : somme += val
      - Si cpt < N , stocker val dans tab[cpt] : tab[cpt] = val
      - Sinon il faut rechercher la position de la plus ancienne valeur. 
             Elle est située en ianc = (cpt-N) modulo N. 
             - retrancher cette valeur de somme  :  somme -= tab[ianc]
             - ranger la nouvelle valeur à la place de l'ancienne : tab[ianc] = val
      - incrémenter cpt : cpt++
      - Si cpt >= N calculer la moyenne : somme/(float)N

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    Olivieram quelle la difference entre position et size?? Comment je sais quel est l element le plus ancien dans le tableau?

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Par défaut position et size
    Citation Envoyé par sandball22 Voir le message
    Olivieram quelle la difference entre position et size?? Comment je sais quel est l element le plus ancien dans le tableau?
    Bonjour sandball22,
    'position' est la position courante dans la liste.
    'size' est la taille de la liste.

    Avant qu'il y ait 100 éléments dans la liste, 'size' et 'position' augmentent au fûr et à mesure.
    Quand il y a 100 éléments dans la liste, on calcule la moyenne.
    'position' est toujours la position courante, mais on revient toujours à 0 quand la position a atteint 100.

    Pour moi, le plus ancien élément dans la liste, c'est l'élément qui se trouve dans l'index 0 de la liste. Mais, au fûr et à mesure que l'on écrase le plus ancien à ce moment là, le plus ancien élément se trouve à l'index 'position'.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 342
    Par défaut
    je ne comprends pas trop la condition suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          if (!(position % 100)) 
          {
             position = 0;
          }

    ce n'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          if ((position % 100)) 
          {
             position = 0;
          }
    ???

Discussions similaires

  1. [MySQL] Gestion des tableaux
    Par fedayn dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 08/12/2008, 15h40
  2. [Ibatis] Gestion des tableaux
    Par nonolerobot77 dans le forum Persistance des données
    Réponses: 0
    Dernier message: 13/08/2008, 18h32
  3. Réponses: 3
    Dernier message: 12/08/2007, 16h49
  4. Bibliothèque C pour la gestion des tableaux
    Par alphalog dans le forum C
    Réponses: 13
    Dernier message: 19/04/2007, 19h11
  5. [VBA-E]Gestion de tableaux
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 60
    Dernier message: 26/04/2006, 14h47

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