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 :

Implémentation lignes dans un tableau


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut Implémentation lignes dans un tableau
    Bonjour à tous,

    Je suis actuellement en école d'ingénieur et je fais mon stage en Suède. Mon projet nécessite quelques modofications dans un programme écrit en C.

    Je vais essayer de vous expliquer mon probleme.

    Voila je voudrais créer un tableau qui 22 colonnes et je ne sais pas le nombre de lignes( je suis capable de donner une limite)
    Je connais la condition pour remplir la premiere valeur de chaque ligne. J'aimerais ensuite que le programme remplisse le tableau jusqu'a la 22 eme colonne: en gros pour z=1 jusqu'a 22.

    Un autre probleme est que j'aimerais que le programme termine la ligne en mettant des zeros dans toutes les casesdès qu'il rencontre une condition boolenne que j'appelle ans: le mieux serait que le progarmme supprime toute la ligne ou il y a le parametre avant.

    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
    for (r=0;r<s4;r++)
     
        {
    //    commencer par une nouvelle ligne
        ans=0;
        for (z=0; z<22; z++)
     
              if (z==0)
                        {
                         //ecrire a la premiere colonne la valeur liée a un calcul precedent           
                        }
               if (z>0)
                        {
                         //incrémenter une valeur calculée precedemment a la suite du nombre precedent mais sur la meme ligne            
                        }
               if(z==0 && ans=1)
                        {
                         //terminer de remplir la ligne en mettant que des zeros          
                        }
     
          }
    Voila, j'ai expliqué comme je pouvais mes soucis.
    Je sais que ce n'est pas tres clair mais je suis novice en langage de programmation et la formulation des problemes n'est pas evidente.
    Si vous pouviez m'aider, je vous saurai tres reconnaissant.
    bonne journée

  2. #2
    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
    Pour la création du tableau, tu peux t'inspirer de la méthode de la FAQ : Comment allouer dynamiquement un tableau à 2 dimensions ?

    Pour le remplissage, je verrai plutôt ceci, dérivé du code que tu as posté :
    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
    for (r=0;r<s4;r++)
    {
      //commencer par une nouvelle ligne
      ans=0;
      //ecrire a la premiere colonne la valeur liée a un calcul precedent
      tab[r][0] = .....
      // qui a modifié ans ????
      if(ans==1)//terminer de remplir la ligne en mettant que des zeros 
        for (z=1; z<22; z++) tab[r][z] = 0;
      else
        for (z=1; z<22; z++) 
        {
           //incrémenter une valeur calculée precedemment a la suite du
           // nombre precedent mais sur la meme ligne           
        }            
    }
    Un autre probleme est que j'aimerais que le programme termine la ligne en mettant des zeros dans toutes les casesdès qu'il rencontre une condition boolenne que j'appelle ans: le mieux serait que le progarmme supprime toute la ligne ou il y a le parametre avant.
    Pour être précis, il faudrait un peu plus de détails. Ne serait-ce pas plutôt ce genre de choses que tu souhaites ?

    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
     
    for (r = 0;r<s4;r++) // s4 nombre maximum de lignes
    {
      if(ans == 0)
      {
         // ajouter une nouvelle ligne au tableau
         // et compter le nombre de lignes.
         // écrire a la premiere colonne de la nouvelle ligne la valeur liée à un calcul précédent
         for (z=1; z<22; z++) 
         {
           // incrémenter une valeur calculée précédemment à la suite du
           // nombre précédent mais sur la même ligne           
         }
      }            
    }

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Tout d'abord merci d'avoir repondu si vite. Je pense qu'avec ceci je pose mieux le probleme:

    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
    s4=p4.size;
    tableau [ligne][20] = 0; //100 est le nombre max de lignes,
    for (r = 0;r<s4;r++) //en fait p4 est une liste de points caractérisés par 20parametres. r represente chaque point.
    // cette partie est raccourcie mais fonctionne
    {
         // commencer une nouvelle ligne a chaque fois qu’on teste un point
         ans=0;
         for (z = 0;z<20;z++) //on teste les 20 parametres tant que ans=0 sinon on arrete avec ce point et on en prends un autre
          {
                distance1=…………..; //calcul tout simple que je fais
                if certaine condition  //qui est un peu longue mais qui fonctionne
                {
                   ans=1;
                   //et   supprimer ligne commencée et on commence l’analyse d’un nouveau point
                }
                else                //dans le cas normal
                {
                    if (z==0) // pour le param 0
                   {
                       tab[nouvelle_ligne][0] = distance1;                      
                   }
                  else // pour les autres params
                  {
                       // Incrementer la valeur de la distance1 calculée a la suite du nbre precedent mais sur une mm ligne
                  }
              }                                     
          }
    //on passe au prochain point tant qu'il y'en a et donc a une nouvelle ligne
    Merci de m'aider si vous le pouvez.

  4. #4
    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, quel est le problème ?

    Si il s'agit du tableau dont on connait le nombre maximum de lignes et qu'il est raisonnable (100 dans ton exemple), il suffit de le déclarer de la taille maximum et de compter le nombre de lignes effectivement utilisées :
    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
    tableau [100][20];
    nbLignes = 0;
    s4=p4.size;
    for (r = 0;r<s4;r++) //en fait p4 est une liste de points caractérisés par 20parametres. r represente chaque point.
    // cette partie est raccourcie mais fonctionne
    {
         // commencer une nouvelle ligne a chaque fois qu’on teste un point
         ans=0;
         for (z = 0;z<20 && ans==0;z++) //on teste les 20 parametres tant que ans=0 sinon on arrete avec ce point et on en prends un autre
          {
                distance1=…………..; //calcul tout simple que je fais
                if certaine condition  //qui est un peu longue mais qui fonctionne
                {
                   ans=1;
                   //et   supprimer ligne commencée et on commence l’analyse d’un nouveau point : 
                  //donc ne pas augmenter le nombre de lignes !
                }
                else                //dans le cas normal
                {
                    if (z==0) // pour le param 0
                   {
                       tab[nbLignes][0] = distance1;                      
                   }
                  else // pour les autres params
                  {
                       // Incrementer la valeur de la distance1 calculée a la suite du nbre precedent mais sur une mm ligne
                  }
                  nbLignes++;
              }                                     
          }
    //on passe au prochain point tant qu'il y'en a et donc a une nouvelle ligne
    }

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Voila exactement mon probleme: J’ai un tableau dans lequel j’incremente des valeurs sur des lignes differentes a chaque que je teste un nouveau point. Seulement des fois une valeur est mauvaise selon z=0 ou 1 …10. Alors procedure s’arrete ( on est dans le cas ou ans=1) et je teste un nouveau point, donc je passe a une nouvelle ligne. Ainsi la ligne considérée avant n’est pas forcement complete et contient de mauvaises valeurs. Mon probleme est que j’aimerais directement effacer cette ligne dans le tableau. Je ne sais pas comment faire pour effacer cette ligne qui peut contenir de 0 a 10 elements.

    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
    tableau [100][20];
    nbLignes = 0;
    s4=p4.size;
    for (r = 0;r<s4;r++) //en fait p4 est une liste de points caractérisés par 20parametres. r represente chaque point.
    // cette partie est raccourcie mais fonctionne
    {
         // commencer une nouvelle ligne a chaque fois qu’on teste un point
         ans=0;
         for (z = 0;z<20 && ans==0;z++) //on teste les 20 parametres tant que ans=0 sinon on arrete avec ce point et on en prends un autre
          {
                distance1=…………..; //calcul tout simple que je fais
                if certaine condition  //qui est un peu longue mais qui fonctionne
                {
                ans=1;
                   //et   supprimer ligne commencée 
                }                    
                else                //dans le cas normal
                   {
                   if (z==0) // pour le param 0
                   {
                   tab[nbLignes][0] = distance1;                      
                   }
                   else 
                   {
                   tab[nblignes][newcolumn] = distance 1
                   for (nbcolumn=1 ; nbcolumn <20; nbcolumn++)
                   }
                   nbLignes++;
                   }                                 
          }
    }
    En esperant avoir été plus clair, merci de votre aide deja fournie.

  6. #6
    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
    J'avais bien compris ce que tu voulais, mais ce que tu ne dis pas, c'est qu'est-ce qui t'empèche de le faire ? Sur quelles difficultés butes-tu pour faire le code correspondant ? Qu'est-ce que tu ne comprends pas ?

  7. #7
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Mon gros probleme est que je n'arrive pas a supprimer les lignes commencees ou il y a une erreur (ans==1).
    En gros mon tableau devrait ressembler a ca:

    1ere ligne :distance1 distance 1... distance1 : pas d'erreur on garde la ligne
    2eme ligne :distance1, erreur : on supprime directement la ligne
    2eme ligne :distance1 distance 1... distance1 : pas d'erreur on garde la ligne
    3eme ligne :distance1 distance 1... distance1 : pas d'erreur on garde la ligne
    4eme ligne :distance1, erreur : on supprime directement la ligne
    4eme ligne :distance1 distance 1... distance1 : pas d'erreur on garde la ligne

    Il arrive souvent des erreurs: mon tableau ne devrait que quelques lignes.
    Ma question :

    Comment supprimer les lignes commencées dont on connait la condtion de suppression (ans==1)

  8. #8
    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
    Dans la trame de code que j'ai déjà posté (et qui comporte une erreur corrigée dans la trame ci-dessous), on a un tableau ayant la taille maximum possible qu'on remplit au fur et à mesure : on place les données dans le tableau à l'indice nbLignes.
    Si on veut ignorer une ligne, il suffit de passer à la lecture de la ligne suivante sans incrémenter nbLignes. Alors la ligne suivante va écraser les données à rejeter et la ligne erronée est alors éliminée.
    Le nombre de lignes au final dans le tableau est donné par nbLignes.

    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
     
    nbLignes = 0;
    for (r = 0;r<s4;r++) 
    {
         ans=0;
         for (z = 0;z<20 && ans==0;z++) 
          {
                ....
                if (certaine_condition)  ans=1;
                else 
                {
                   ....// tableau[nbLignes][z] = ... ou tableau[nbLignes][0] = ...
                }                                     
          }
         if(ans==0) nbLignes++;
    }

  9. #9
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    il me reste seulement une question à ce sujet. J'ai bien suivi vos conseils mais il demeure un probleme selon moi.

    Si la derniere ligne est une ligne mauvaise; j'entends par là qu'on n'ajoute pas une ligne apres, mais on l'ecrase par une nouvelle.
    Seulement si cette ligne est la derniere elle ne pourra pas etre ecrasée par la suivante et donc cette ligne est en trop.

    Ce cas arrive malheureusement quasiment tout le temps et j'ai besoin de ne pas faire figurer cette ligne inutile.

    Merci de vos conseils

  10. #10
    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
    Ce cas arrive malheureusement quasiment tout le temps et j'ai besoin de ne pas faire figurer cette ligne inutile.
    Bien sûr. Mais il suffit d'utiliser nbLignes pour savoir le nombre de lignes utiles dans le tableau. Que le reste du tableau soit rempli de cochonneries, tu t'en moques puisque tu les ignores royalement.

  11. #11
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Merci beaucoup. J'ai tout compris et ca marche nicel.

    Il me reste cependant une petite question mais je ne sais pas si c'est facilement rálisable. Voila en fait j'aimerais dans mon tableau avoir a la fois des valeurs doubles et du texte (char). Le probleme c'est que je ne connais pas la synthaxe pour ecrire en char et je ne sais pas comment printer le tableau quand j'ai plusieurs sortes de variables.

    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
     
    nbLignes = 0;
    for (r = 0;r<s4;r++) 
    {
         ans=0;
         for (z = 0;z<20 && ans==0;z++) 
          {
                ....
                if (certaine1)  ans=1;
                else 
                {
                  if (condition2)
                  tableau[nbLignes][z] = "no value" ; //ecrire no value
                 else
                {
                tableau[nbLignes][z] = .... (valeur double);
                } 
                }                                     
          }
         if(ans==0) nbLignes++;
    }
    et pour imprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(impressdist= nbLign-1  ; impressdist >=0 ; impressdist--)
    {                                                            
    for (column = 0 ; column < 20 ; column ++)                   
            {                                                    
            fprintf(out,"%d" ,tab[nbLign][column]) ;     //renvoyer des caracteres et des doubles       
            }
            fprintf(out,"\n") ;                                  
    }

    Merci encore pour toute l'aide fournie

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Bonjour,

    Personnellement je ferait un test sur la valeur du tableau que tu veux afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //parcours du tableau
    {
        if (strcmp((char*)tab[nbLign][column], "no value")==0) //test  pour voir si le contenu est no value
             printf("no value\n");
         else
             printf("%d",tab[nbLign][column]);
    }
    Attention ce code n'est pas testé je pense qu'il peut ronchonner dans le strcmp...

  13. #13
    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
    Non, tu ne peux pas mélanger dans un tableau des données de type différents (ici double et chaine de caractères): par définition d'un tableau, tous les éléments ont le même type.

    Si tu as la possibilité de définir une valeur qui ne peut absolument pas figurer normalement dans ton tableau, tu peux l'utiliser pour coder l'absence de valeur. A l'impression, tu testes la valeur et si elle est égale à cette valeur spéciale, tu affiches "no value" et sinon tu affiches la valeur.

    Sinon, il faut stocker comme information
    - la valeur du double
    - si la case contient la valeur d'un double
    Ceci revient à définir une structure et à faire un tableau de ces structures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
      double valeur;
      int valide;
    } Data;
    Data tableau [100][20];
    le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .....
                if (certaine1)  ans=1;
                else 
                {
                  if (condition2)
                     tableau[nbLignes][z].valide = 0 ; //ecrire no value
                  else
                  {
                     tableau[nbLignes][z].valide = 1 ; //ecrire valeur valide
                     tableau[nbLignes][z].valeur = .... (valeur double);
                  } 
                } 
    .....
    et pour l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           if(tab[nbLign][column].valide) fprintf(out,"%f" ,tab[nbLign][column].valeur) ; 
           else fprintf(out,"no value") ;        
           fprintf(out,"\n")

  14. #14
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Par défaut
    Citation Envoyé par diogene Voir le message
    Non, tu ne peux pas mélanger dans un tableau des données de type différents (ici double et chaine de caractères): par définition d'un tableau, tous les éléments ont le même type
    Oulala pardon je m'excuse pour la bétise


    Mais il peut aussi faire un tableau de Union ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef union
    {
      double valeur;
      char* msg_erreur;
    } Data;
    Pour l'affichage tu fais une fonction qui test la taille de la Data et qui affiche en fonction de celle-ci. Ton char* si c'est "no value" se sera toujours plus grand que ton double.

    Citation Envoyé par diogene Voir le message
    int valide;
    alors oui c'est chipoter mais il vaux mieux mettre un unsigned char comme tu l'utilises uniquement comme booleen.

  15. #15
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Voila je voudrais créer un tableau qui 22 colonnes et je ne sais pas le nombre de lignes( je suis capable de donner une limite)
    Une liste chainee contenant des strings de 23 octets ?

    Ca me parait bien plus simple a mettre en place qu'un tableau.

  16. #16
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    merci, cette astuce fonctionne bien pour printer char et double. Je viens de m'apercevoir que la fonction clear ne fonctionnait pas pour les tableaux.

    Auriez une idée pour vider le tableau a chaque iteration de la boucle que je viens d'ajouter.
    Je n'arrive pas à trouver la bonne synthaxe
    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
    for (i =0 ; i<200; i++)
    { 
    int tab[100][20]; 
    nbLignes = 0;
    for (r = 0;r<s4;r++) 
    {
         ans=0;
         for (z = 0;z<20 && ans==0;z++) 
          {
                ....
                if (certaine1)  ans=1;
                else 
                {
                  if (condition2)
                  tableau[nbLignes][z] = "no value" ; //ecrire no value
                 else
                {
                tableau[nbLignes][z] = .... (valeur double);
                } 
                }                                     
          }
         if(ans==0) nbLignes++;
    je print le tableau dés que la procédure est finie.(fonctionne mais il y a tjs le mm tableau 
    }
    tab.clear(); // erreur lors de la compilation
    }
    Merci d'avance

  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
    @ wixaw :
    Mais il peut aussi faire un tableau de Union ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef union
    {
      double valeur;
      char* msg_erreur;
    } Data;
    Pour l'affichage tu fais une fonction qui test la taille de la Data et qui affiche en fonction de celle-ci. Ton char* si c'est "no value" se sera toujours plus grand que ton double.
    Et comment savoir si l'union contient un double ou un char* ? Certainement pas en testant la taille du Data qui de toute façon est une constante indépendante du contenu.

    @ piheb
    merci, cette astuce fonctionne bien pour printer char et double.
    De quelle astuce parles-tu ?

  18. #18
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    je parlais de votre prédédent message. Tout fonctionne au mieux.
    Le seul probleme qu' il me reste, c'est pour vider a chaque foi le tableau.
    La fonction clear() ne peut pas etre compilée et donc je ne parviens pas à vider mon tableau dans ma boucle de sorte a ne pas faire figurer le meme tableau a chaque fois.

    Ce qui me servirait c'est d'avoir l'equivalent d'un clear pour une liste mais qui fonctionne pour un tableau.

  19. #19
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Bonjour, j'ai essayé aussi pour résoudre mon probleme d'insérer dans mon petit programme la fonction delete à la fin de ma boucle comme ci desssous, qui permet normalement d'effacer un tableau de variables:
    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
    for (i =0 ; i<200; i++)
    { 
    int tab[100][20]; 
    nbLignes = 0;
    for (r = 0;r<s4;r++) 
    {
         ans=0;
         for (z = 0;z<20 && ans==0;z++) 
          {
                ....
                if (certaine1)  ans=1;
                else 
                {
                  if (condition2)
                  tableau[nbLignes][z] = "no value" ; //ecrire no value
                 else
                {
                tableau[nbLignes][z] = .... (valeur double);
                } 
                }                                     
          }
         if(ans==0) nbLignes++;
    je print le tableau dés que la procédure est finie.(fonctionne mais il y a tjs le mm tableau 
    }
    delete [] tab// erreur lors de la compilation
    }
    D'apres les resultats printés, le programme ne gere pas la fonction et n'efface toujours mon tableau et le reutilise pour chaque i.

    Merci d'avance

  20. #20
    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
    je parlais de votre prédédent message. Tout fonctionne au mieux.
    Quelle solution as-tu adoptée ? Ce n'est pas clair.

    Le code que tu continues à poster n'est pas possible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                  tableau[nbLignes][z] = "no value" ; //ecrire no value
                 else
                {
                tableau[nbLignes][z] = .... (valeur double

Discussions similaires

  1. Déplacement de lignes dans un tableau HMTL
    Par Maxime_ dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/01/2006, 09h43
  2. Problème saut de ligne dans un tableau
    Par talggir dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2005, 15h10
  3. [Struts] Index de ligne dans 1 tableau
    Par javaSudOuest dans le forum Struts 1
    Réponses: 9
    Dernier message: 20/10/2005, 09h52
  4. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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