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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 ?

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