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++Builder Discussion :

la somme des lignes d'une colonne de StringGrid


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut la somme des lignes d'une colonne de StringGrid
    bonjour
    j'ai un StringGrid contient 12 lignes et 12 colonnes ces donnees sont de type double, je veut calculé la somme des donnees des lignes de la colonne 2 et mettre resultat dans StringGrid3->Cells[13][2] et la meme chose pour la colonne 4,6,8,10,12
    merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Ce que tu demande étant trop facile, on vas pas comme-même te donner la solution comme une machine à café.

    Il faut , et quand tu te , tu nous montre le programme et l'erreur que tu as eu, et comme-ça on va t'aider
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    pour la colonne 2 j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int i ;double total,total1,total2; String chaine,chaine1;
     
     
    total2=0;
     
    chaine=Form2->StringGrid3->Cells[2][1];
    totale=StrToFloat(chaine);
    for(i=2;i<13;i++)
    {  chaine1=Form2->StringGrid3->Cells[2][i];
    total=StrToFloat(chaine1);
    total2=total+total1+total2 ;
    }
     
    Form2->StringGrid3->Cells[2][13] = total2;

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    C'est quoi le problème avec le code ci-haut ??
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    pour la colonne 2 fonctionne bien, je veut avec ce code donne resultat en meme temp pour les colonne 4,6,8,10,12 est ce que c'est possible ?
    sinon je vais refaire le meme code avec la colonne 4,6,8,10,12

  6. #6
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Pourquoi tu ne met pas le code dans une boucle et que tu incrémentes ta variable de 2?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  7. #7
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 906
    Points : 2 130
    Points
    2 130
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Parcours des colonnes 2 4 6 8 10 12
    for (int col=2; col<=12; col+=2)
    {
      double totalColonne=0;
      // Parcours des lignes 1 à 12 de la colonne 
      for (int ligne=1; ligne<=12; ++ligne)
        totalColonne+=StringGrid3->Cells[col][ligne].ToDouble();	
     
      // Ecriture du total sur la ligne 13 de la colonne concernée
      StringGrid3->Cells[col][13]=totalColonne;
    }
    un truc dans le genre alors... (aux erreurs pres bien sur)
    par contre, je n'ai pas compris si tu calculais le total des lignes 1 à 12 ou des 12 premières (car dans ce cas, l'index de la première ligne est 0 et on fera le calcul de 0 à 11 et non pas de 1 à 12. idem pour les colonnes).

    Une dernière chose hors sujet. Réfléchir par toi meme avant de poster aussitot ton problème ici te sera beaucoup plus bénéfique.

  8. #8
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Il sagit d'un problème d'algorithmiques, tu pouvais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    double v[6]={0,0,0,0,0,0};
     
    for(int i=2 ; i<13 ; i++)
       for(int j=2 ; j<12; j+=+2)
          v[j/2] +=+ Form2->StringGrid3->Cells[j][i] ;
     
    for(int j=2 ; j<12; j+=+2)
        Form2->StringGrid3->Cells[j][13] = v[j/2];
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Je vais suposer que :

    - 13 lignes de 12 colonnes
    - pas de FixedCol ni de FixedRow
    - on calcule la somme sur le contenu des 12 première lignes que l'on reporte dans la 13e ligne.
    - On traite uniquement les colonnes impaires (1,3,5,7,9,11) ce qui correspond à l'idée (2e, 4e, 6e ...)

    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
     
    TStrings *S;
    AnsiString N;
    double acc;
    for(int col = 0; col < 6; col++)
        {
        // On récupère la colonne impaire
        S = StringGrid1->Cols[ 1 + (col * 2) ];
        // raz de l'accumulateur
        acc = 0.0;
        // on déroule
        for(int row = 0; row < 12; row++)
            {
            N = S->Strings[row];
            // un minium ou plus si se donne de quoi gèrer une exception
            if(N.Length() > 0) 
                {
                acc = acc + N.ToDouble();
                }
            }
        // la cellule résultat est le 13e item de la colonne (son index vaut 12)
        S->Strings[12] = FloatToStr(acc);
        }
    A plus !

  10. #10
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    merci a vous tous

  11. #11
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Qu'est ce que tu as adapté ?
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  12. #12
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 335
    Points : 93
    Points
    93
    Par défaut
    bonjour
    j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int col=2; col<=12; col+=2)
    {
      double totalColonne=0;
     
      for (int ligne=1; ligne<=12; ++ligne)
        totalColonne+=Form2->StringGrid3->Cells[col][ligne].ToDouble();
     
     
      Form2->StringGrid3->Cells[col][13]=totalColonne;
    }
    merci bien

  13. #13
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 906
    Points : 2 130
    Points
    2 130
    Par défaut
    Citation Envoyé par faniette Voir le message
    bonjour
    j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int col=2; col<=12; col+=2)
    {
      double totalColonne=0;
     
      for (int ligne=1; ligne<=12; ++ligne)
        totalColonne+=Form2->StringGrid3->Cells[col][ligne].ToDouble();
     
     
      Form2->StringGrid3->Cells[col][13]=totalColonne;
    }
    merci bien
    Un dernier conseil, je vois que tu as repris le code mais en enlevant les commentaires...mauvais réflexe
    Pense à en ajouter le plus possible plutôt que d'en enlever (je te le dis par expérience)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/02/2015, 22h37
  2. somme des ligne d'une colonne
    Par ilyan dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 25/10/2010, 00h48
  3. pivoter des lignes vers une colonne
    Par ashtur dans le forum Oracle
    Réponses: 1
    Dernier message: 02/05/2007, 13h59
  4. Réponses: 12
    Dernier message: 01/03/2007, 16h48
  5. Modifier l'enseble des lignes d'une colonne d'une table
    Par bencheikh dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/07/2006, 21h46

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