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 :

Case vide dans un tableau


Sujet :

C

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut Case vide dans un tableau
    Bonjour tout le monde

    Je souhaite réaliser un instruction.


    si e.p4[7][1]== vide

    faire

    e.p4[i+7][j]='R';

    finsi

    Pars vide, je veux dire si il n'a rien dans la case.

    e.p4 est un tableau de type caractère

    Voici un exemple de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    if (e.p4[7][1]=='')
     {
     e.p4[i+7][j]='R';
     }
    J'ai vue dans mon livre que l'on parlé de caractère nul, est ce que ca peut m'aider?

    Merci

    Cordialement

    A bientôt

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,
    Pour tester si ta case est vide, fais plutôt

  3. #3
    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
    Points : 12 462
    Points
    12 462
    Par défaut
    En C, si tu déclare un tableau, il est initialisé par défaut avec des valeurs aléatoire, le mieux est en fait de le remplir de zéro avant même sa premier utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    memset (e.p4, 0, sizeof (e.p4));
    Puis par la suite tu peux tester tranquillement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (e.p4 [7][1] == 0)
    {
       e.p4 [i+7][j] = 'R';
    }
    Note:
    Par définition, un indice d'un tableau sur char est vide quand il contient zéro (0) sinon la valeur par défaut est indéterminée si tu n'as pas initialisé le tableau avant son utilisation et dans ce cas ton test peut échouer !

  4. #4
    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 : 68
    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 argon
    Pars vide, je veux dire si il n'a rien dans la case.
    La notion de 'rien' ou de 'vide' n'existe pas pour un objet. Un objet a toujours une valeur.

    On peut cependant convenir qu'une certaine valeur a la signification de 'rien'.

    Par exemple, un char valant 0, un pointeur valant NULL ou un entier positif (j'ai pas dit non signé) valant -1. Mais ça reste une convention, et ça mobilise une ou plusieurs valeurs. On peut aussi utiliser une structure qui comprend une information 'rien' ou 'vide'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct element
    {
       int data;
       int nothing;
    };
    Mais ça occupe de la place...

    Bref, il faut utiliser le moyen le plus adéquate.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Salut,

    Une petite précision...

    Citation Envoyé par Franck.H
    En C, si tu déclare un tableau, il est initialisé par défaut avec des valeurs aléatoire, le mieux est en fait de le remplir de zéro avant même sa premier utilisation :
    (...)
    Je pinaille, je sais, mais, ce que l'on trouve dans la mémoire qui est donnée à n'importe quelle variable (car il n'y a pas que pour les tableaux que cela foncitonne comme cela) est "les crasses persistant d'une utilisation ultérieure de la mémoire", que ce soit par l'application elle-meme, ou par une autre application qui aurait utilisé la meme plage mémoire heures (jours) plus tot...

    En effet, la mémoire disponible sur un ordinateur est toujours limitée (meme si la limite atteind les 8Gb) et la mémoire est attribuée au grés des applications lancées/quittées.

    On ne peut donc pas savoir, de prime abord, quelle application aura utilisé juste avant la plage mémoire que l'on utilise actuellement, ni comment elle l'a utilisée.

    La valeur d'une variable quand tu la déclare n'est donc pas "aléatoire", mais plutot "indéfinie", parce qu'il n'y a aucun phénomène de hasard qui entre en jeu...

    On connait parfaitement le phénomène, simplement, on ne dispose pas des informations nécessaires au calcul de la valeur que recevra la variable

  6. #6
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par koala01
    Je pinaille, je sais, mais, ce que l'on trouve dans la mémoire qui est donnée à n'importe quelle variable (car il n'y a pas que pour les tableaux que cela foncitonne comme cela) est "les crasses persistant d'une utilisation ultérieure de la mémoire", que ce soit par l'application elle-meme, ou par une autre application qui aurait utilisé la meme plage mémoire heures (jours) plus tot...
    Je pinaille aussi, mais tu voulais sans doute parler d'une "utilisation antérieure"

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Citation Envoyé par zooro
    Je pinaille aussi, mais tu voulais sans doute parler d'une "utilisation antérieure"
    oupppsss... Oui, bien sur...

  8. #8
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Ca vaudrait peut-être le coup d' essayer cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (e.p4[7][1]==NULL)
      e.p4[i+7][j]='R';
     
    et/ou
     
    if (!e.p4[7][1])
      e.p4[i+7][j]='R';

  9. #9
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Lunixinclar
    Ca vaudrait peut-être le coup d' essayer cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (e.p4[7][1]==NULL)
      e.p4[i+7][j]='R';
     
    et/ou
     
    if (!e.p4[7][1])
      e.p4[i+7][j]='R';
    Ce n'est pas un tableau de pointeurs, donc pas de NULL.
    Et l'autre syntaxe que tu proposes risque de prêter à confusion, je pense.

  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Comme Emmanuel Delahaye l'a dit, il faut commencer par décider d'une valeur qui soit dédiée au "rien"...

    Et il faut *surtout* que chaque élément de la matrice soit initialisé à cette valeur juste apres la déclaration.

    Selon le type que l'on trouve dans e1.p4[7][1] (et dans toute la matrice p4) c'est la valeur que l'on aura considérée comme celle dédiée à "rien" qui devra etre testée.

    Comme argon parle du "caractère nul", et du fait que p4 est une matrice de caractères, il semble relativement logique de décider que ce sera le caractère '\0' qui sera utilisé comme valeur dédiée à "rien".

    On peut donc lui conseiller d'utiliser le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    si(e1.p4[7][1]==0)
       faire ...
    ou, ce qui a ma préférence (pour mieux indiquer qu'il s'agit d'un caractère uniquement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    si(e1.p1[7][1]=='\0')
        faire ...
    Mais cela sous-entend que l'ensemble des éléments de la matrice aient été initialisés à '\0', et, surtout, que cette valeur n'a pas d'autre signification dans la matrique que "non défini pour l'instant"...

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    1 124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 124
    Points : 193
    Points
    193
    Par défaut
    Bonjour tout le monde

    ca fonction avec '\0'.

    Merci de votre aide

    Cordialement

    A bientôt

  12. #12
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par koala01
    dans la matrique
    Oh le beau lapsus !!!

  13. #13
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 711
    Points
    30 711
    Par défaut
    Citation Envoyé par zooro
    Oh le beau lapsus !!!
    Oupppssss...Je devais penser à autre chose au moment d'écrire mon message

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

Discussions similaires

  1. [Débutant] supprimer cases vides dans un tableau de cellules
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 4
    Dernier message: 01/08/2012, 21h47
  2. recherche d'une case vide dans un tableau
    Par Cherisch dans le forum Bioinformatique
    Réponses: 5
    Dernier message: 08/05/2009, 17h47
  3. Réponses: 3
    Dernier message: 12/06/2008, 14h10
  4. Cases à cocher dans un tableau
    Par mali_67 dans le forum Langage
    Réponses: 19
    Dernier message: 03/03/2008, 12h38
  5. Case suivante dans un tableau avec VB
    Par vanilladream dans le forum VBA Word
    Réponses: 1
    Dernier message: 18/07/2007, 18h13

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