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 :

l'infini


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Points : 65
    Points
    65
    Par défaut l'infini
    bonjour
    je voudrais seulement votre aide pour savoir comment declaré un tablau qui ne contient que de l'infini
    j'ai besoin d'un tableau dont tout ces elément sont que l'infini.
    merci d'avance.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    L'infini est une notion mathématique, pas informatique.

    Pourquoi avoir l'infini dans toutes les cases d'un tableau ? Pour tenter de représenter une partie finie de l'univers ?

    Plus sérieusement, tout dépend aussi de ce que tu entends par infini, se peut-il que la valeur la plus grande que peut contenir ton type de donnée te suffise ?

    A+
    K

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    ah oui je voudrais que ca ce soit en C. J'ai seulement oublié de le préciser. Merci

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par KiLVaiDeN
    Salut,

    L'infini est une notion mathématique, pas informatique.

    Pourquoi avoir l'infini dans toutes les cases d'un tableau ? Pour tenter de représenter une partie finie de l'univers ?

    Plus sérieusement, tout dépend aussi de ce que tu entends par infini, se peut-il que la valeur la plus grande que peut contenir ton type de donnée te suffise ?

    A+
    Alors ce que je comprend c'est de faire un grand nombre dans une case dont je serais sur que ce nombre ne sera jamais utlisé par mon programme est suffisant
    alors je doit seulement initialisé normalement un tableau avec un grand nombre tel que (3000 ou...........), c'est ca?

  5. #5
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Oui c'est le principe auquel je pense.

    Initialise une constante équivalente à ton "INFINI" avec la valeur la plus grande du type de données de ton tableau. Regarde l'include "limits.h" pour obtenir les valeurs maximales disponibles.

    Peut-être quelqu'un a une meilleure solution.. A+
    K

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par l_seringa
    alors ce ke je comprend c de faire un grand nombre dans une case dont j'en serai sur que ce nombre ne sera jamais utlisé par mon programme est suffisant
    Selon le type :

    <limits.h>
    CHAR_MAX
    SCHAR_MAX
    UCHAR_MAX
    USHRT_MAX
    SHRT_MAX
    INT_MAX
    UINT_MAX
    LONG_MAX
    ULONG_MAX
    LONGLONG_MAX [C99]
    ULONGLONG_MAX [C99]

    <float.h>
    FLT_MAX
    DBL_MAX

    mais c'est à toi de définir quelle est la valeur max utile dans ton application pour être sûr qu'il n'y ait pas de confusion.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Selon le type :

    <limits.h>
    CHAR_MAX
    SCHAR_MAX
    UCHAR_MAX
    USHRT_MAX
    SHRT_MAX
    INT_MAX
    UINT_MAX
    LONG_MAX
    ULONG_MAX
    LONGLONG_MAX [C99]
    ULONGLONG_MAX [C99]

    <float.h>
    FLT_MAX
    DBL_MAX

    mais c'est à toi de définir quelle est la valeur max utile dans ton application pour être sûr qu'il n'y ait pas de confusion.
    C'est quoi tout ca, je n'ai pas bien saisie. Je fais quoi avec ca ?

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par l_seringa
    C'est quoi tout ca, je n'ai pas bien saisie. Je fais quoi avec ca ?
    Ce sont les valeurs max de chaque type.

    Par exemple, si ta variable est de type unsigned int, la valeur max est UINT_MAX. C'est "l'infini" pour ce type. La plage de valeurs valide est 0 à UINT_MAX - 1, ce qui fait au minimum 0 à 65534.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 131
    Points : 65
    Points
    65
    Par défaut
    Par exemple, si ta variable est de type unsigned int, la valeur max est UINT_MAX. C'est "l'infini" pour ce type. La plage de valeurs valide est 0 à UINT_MAX - 1, ce qui fait au minimum 0 à 65534.[/quote]
    alors si je veut initialisé un tableau a l'infini
    je dit ecrire
    exemple
    tab[i]=unit_max
    ca ca ce k je doit comprendre

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par l_seringa
    alors si je veut initialisé un tableau a l'infini
    je dit ecrire
    exemple
    tab[i]=unit_max
    ca ca ce k je doit comprendre
    C'est mal écrit, mais c'est ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #include <limits.h>
     
    <...>
     
       tab[i] = UINT_MAX;
    Mais c'est un infini 'relatif', OK ? Si tes valeurs variaient de 0 à 9, 10 pourrait être considéré comme 'infini'. Ce que tu veux, c'est une valeur différente des autres, c'est tout... (et ce n'est pas toujours possible).
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    et ça depend aussi si le nombre que tu stockera est un entier ou un nombre touuours >0... dans ce cas il t'aurai suffit d'initialiser ton tableau avec des -1.

  12. #12
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Alors ce que je comprend c'est de faire un grand nombre dans une case dont je serais sur que ce nombre ne sera jamais utlisé par mon programme est suffisant
    Je pense que ta question a été mal comprise (car mal formulée), ce que tu veux l_seringa c'est un tableau de dimension inconnue à la compilation et qui s'agrandit au fur et a mesure de tes besoins, non?

    Si c'est le cas, il faut utiliser les pointeurs... !

  13. #13
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Non, visiblement c'est toi qui a mal compris
    j'ai besoin d'un tableau dont tout ces elément sont que l'infini.
    je serais sur que ce nombre ne sera jamais utlisé par mon programme est suffisant
    En gros, il s'agit d'une valeur spéciale qui te serve d'indicateur. En algorithmique, on trouve souvent l'infini. Mais en pratique celà n'est pas possible alors deux solutions : utiliser le maximum du type que tu utilises, ou utiliser une valeur spéciale. Pour ce qui est de la valeur spéciale, loka l'a bien dis : si tu as dans ton tableau des valeurs strictement positives, une valeur négative peut d'indiquer cette valeur spéciale. Cependant, comme tu l'aura compris, cela t'oblige à utiliser un type signé et donc diminuer la plage de valeur représentable pour ton utilisation.

    D'autres méthodes existent par exemple une structure qui contiendrait deux champs, un pour indiquer si tu as un nombre "utilisable" ou une valeur spéciale. et le deuxième champ serait la valeur en question : par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct Nombre
    {
         bool infini;
         long val;
    };
    Ainsi, tu peux choisir l'infini en mettant le champ infini à true. Sinon, infini vaut false et val est la valeur que tu veux utiliser.

    Il existe encore d'autres solutions (utilisation d'union par exemple) mais je pense que celà devrait te suffire.

Discussions similaires

  1. [DB2] Eviter une cascade infini dans un trigger
    Par Fatah93 dans le forum DB2
    Réponses: 2
    Dernier message: 25/04/2005, 14h23
  2. Mailleure facon de realiser une association infini-infini
    Par remi_phbc dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/07/2004, 12h31
  3. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  4. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04
  5. [LG]tableau infini et fonction longueur
    Par dsr57 dans le forum Langage
    Réponses: 8
    Dernier message: 13/12/2003, 13h54

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