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 :

élement tableau qui se décalle


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut élement tableau qui se décalle
    bonjour ,Je veux utiliser un tableau qui stocke des double et a mesure de l'éxecution du programme ,vider le tableau afin de liberer la mémoire tout en conservant les derniéres données
    par exemple j'initialise un tableau de 20 éléments doubles et je stocke mes variables pour arriver au dernier élément du tableau, là je veux décaller les derniers éléments donc effacer l'élément tableau[0] et le remplacer par l'élément tableau[1] et ainsi de suite jusqu'au dernier.
    voila je suis assez nul en programmation alors soyez pas trop compliqué svp

  2. #2
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Mais ton tableau c'est pour faire quoi au juste? Sois un peu plus précis, car au lieu d'un tableau tu pourrais peut etre utiliser une liste par exemple.
    Ca depend du probleme que tu veux résoudre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    en fait je stocke des nombres double qui différe toute les 10 secondes et vu qu'il est impossible de tous les stocker dans un tableau (jai essayer avec un tableau statique et mon prog plante) je veux alleger mon tableau tout en conservant les 20 derniers nombres stockés.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    en fait je stocke des nombres double qui différe toute les 10 secondes et vu qu'il est impossible de tous les stocker dans un tableau (jai essayer avec un tableau statique et mon prog plante) je veux alleger mon tableau tout en conservant les 20 derniers nombres stockés.
    M'est avis qu'une liste serait peut être la meilleure solution.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    une liste ?

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    une liste ?
    Là il va falloir approfondir largement tes connaissances en C (pointeurs, structures, allocation dynamique, implémentation de structures de données, etc...). Voici deux tutoriels sur les listes chaînées:

    http://nicolasj.developpez.com/articles/listesimple/
    http://nicolasj.developpez.com/articles/listedouble/

    L'avantage c'est que tu peux garder toutes tes données, t'est pas obligé de supprimer pour éviter de planter (débordement de la pile si tu utilises les tableaux statiques, etc...) !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    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
    un buffer circulaire ?

  8. #8
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Tu as déjà étudié quoi comme structure de données en cours?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    Là il va falloir approfondir largement tes connaissances en C (pointeurs, structures, allocation dynamique, implémentation de structures de données, etc...). Voici deux tutoriels sur les listes chaînées:

    http://nicolasj.developpez.com/articles/listesimple/
    http://nicolasj.developpez.com/articles/listedouble/
    en effet,
    je suis débutant mais avec les tableaux c pas possible?

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    en effet,
    je suis débutant mais avec les tableaux c pas possible?
    Si, avec des tableaux statiques il faut juste bien gérer la chose, passer surement par des tableaux temporaires etc... Tu peux très bien aussi créer un tableau dynamique que tu peux donc agrandir au grès des besoins !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    j'ai peur que si jaggrandis un tableau dynamique ça plante pareil au bout d'un certains nombre de données stockés non?

  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    j'ai peur que si jaggrandis un tableau dynamique ça plante pareil au bout d'un certains nombre de données stockés non?
    Quel serait un nombre possible de données ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    le programme génère 1 double par 10 secondes
    le programme doit tourner toute la journée

  14. #14
    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
    Mais tu n'as besoin de conserver que les 20 derniers ? Dans ce cas, tu n'as besoin que d'un tableau de 20 valeurs.

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    le programme génère 1 double par 10 secondes
    le programme doit tourner toute la journée
    Outch Effectivement, garder que les plus récentes reste surement une bonne chose dans ce cas ... fallait le préciser tout de suite ca

    Bin comme il a été proposé plus haut, un buffer circulaire est une bonne chose. On devrait s'en sortir sans faire de tableau dynamique et sans tableau temporaire ... juste un ou deux pointeurs pour décaler les données avant chaque ajout, ca fait quand même pas mal d'opération pour toutes les 10 secondes
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    un buffer circulaire c'est une boucle simple qui deplace les éléments du tableau?
    ou c'est autre chose?

  17. #17
    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 ne déplace pas les éléments du tableau (de dimension Taille) et c'est l'avantage. On a par exemple
    - un indice Pre qui dit où est le premier élément du tableau
    - un indice Der qui dit où est le premier élément non utilisé du tableau
    - un indicateur P qui dit si le tableau est plein

    - Les indices sont toujours calculés modulo(Taille) (d'où le qualificatif circulaire)
    - Le tableau est plein si P==1 (ce qui implique Pre==Der)
    - Le tableau est vide si P==0 et Pre==Der

    - Au début, le tableau est vide et Pre== 0 Der ==0 et P ==0
    - On remplit le tableau (si il n'est pas plein : P!= 1) en mettant les nouveaux éléments à l'indice Der puis en incrémentant Der : Der <- (Der+1)mod(Taille). Si alors Der==Pre, le tableau est plein et on mets P à 1
    - On vide le tableau (si il n'est pas vide: P==1 ou Pre != Der) en prenant l'élément à l'indice Pre puis en incrémentant Pre : Pre <- (Pre+1)mod(Taille). P passe à 0
    - Dans ton cas, si une donnée arrive et que le tableau est plein (P==1), tu la mets dans le tableau à l'indice Pre ( == Der) et tu incrémentes Pre et Der mod(Taille). P reste à 1. C'est tout.

  18. #18
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    bah..... Une donnée toutes les 10 secondes = 360 par heure = 8640 par 24h...

    Ce n'est pas ça l'argument... On peut sans problème faire un tableau de 8640 doubles...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Par défaut
    bah..... Une donnée toutes les 10 secondes = 360 par heure = 8640 par 24h...

    Ce n'est pas ça l'argument... On peut sans problème faire un tableau de 8640 doubles...
    __________________
    ben pourtant j'ai une operation non conforme aprés 1 heure ou 2 donc c'est un problème de mémoire je suppose

  20. #20
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par hitcher48
    ben pourtant j'ai une operation non conforme aprés 1 heure ou 2 donc c'est un problème de mémoire je suppose
    Sauf si tu as trop peu de mémoire, ce qui m'étonnerait, un double ne fait pas plus de 8 bits (ce qui devrait faire si je me trompe pas, 1 octet), du moins chez moi, sur un processeur AMD Athlon 32 bits et sous Linux !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Tableau qui marche pas
    Par solp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2006, 19h21
  2. [Tableaux] tableau qui ne s'additionne pas
    Par apprenti-fab dans le forum Langage
    Réponses: 8
    Dernier message: 21/01/2006, 14h19
  3. Réponses: 1
    Dernier message: 24/12/2005, 14h18
  4. [HTML] Image en fond d'un tableau qui ne se répète pas.
    Par yoyot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 17h08
  5. tableau qui englobe un autre tableau
    Par skea dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/12/2004, 13h58

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