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 :

addition de valeurs


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut addition de valeurs
    Bonjour,

    Je souhaiterai faire un petit carré magique. J'ai donc déjà créé un tableau pour récupérer les valeurs que l'utilisateur entre. Cela fonctionne. Mais je n'arrive pas à faire la somme de chaque ligne (et aussi de chaque colonne, mais commençons par les lignes ) afin de vérifier qu'elles sont égales.

    Je sais que ce que j'ai fait est en "vieux c++", mais je débute, alors par pitié, ne me parlez pas de c++11 ou stl ou je ne sais quoi parce que j'y comprends rien . Une fois que je maitriserais mieux le c++ je m'orienterai vers les dernières tendances.

    Je veux juste comprendre comment je pourrai faire pour faire la somme des lignes.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <iostream>
    #include <vector>
    #include <conio.h>
     
    using namespace std;
     
    int main() {
        int taille = 0;
        cin >> taille;
        do {
            cout << taille << "n'est pas impaire ";
            cout << "Tapez la taille du tableau : ";
            cin >> taille;
        } while (taille % 2 == 0);
     
        vector<int> tableau(taille * taille);
        for (int i = 0; i < taille * taille; ++i) {
            cout << "entrez le chiffre n " << (i % taille + 1)
                 << " de la ligne n " << (i / taille + 1)  << endl;
            cin >> tableau[i];
     
        }
     
        for (int i = 0; i < taille * taille; ++i) {
            cout << tableau[i] << '\t';
            if ((i+1) % taille == 0) cout << endl;
        }
     
        getch();
     
     
      for (int i = 0; i < taille; i++)
           {
     
            cout << tableau[i] << '\t';
     
        }
     
     
      getch();
     
     
     
        getch();
        return 0;
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 053
    Points
    33 053
    Billets dans le blog
    4
    Par défaut
    Salut,

    c'est plutôt simple, de l'arithmétique de base te permet de t'en rendre compte, et un petit dessin si besoin..
    Ton tableau a cette représentation pour une taille de 3
    0 | 1 | 2
    3 | 4 | 5
    6 | 7 | 8

    Si tu prends un tableau de taille 5 tu as
    0 | 1 | 2 | 3 | 4
    5 | 6 | 7 | 8 | 9
    10 | 11 | 12 | 13 | 14
    15 | 16 | 17 | 18 | 19
    20 | 21 | 22 | 23 | 24

    Donc pour la ligne L compris entre 1 et taille, tu prends les index de (L-1)*taille à (L-1)*taille + taille-1; avec un pas de 1 puisque contigu sur la ligne : for (int i = 0; i < taille; ++i) { tab[(L-1)*taille+i) }Et pour la colonne C compris entre 1 et taille, tu suis la même logique avec un pas de taille, ou for (int i = 0; i < taille; ++i) { tab[(C-1)*taille + taille*i] }

  3. #3
    Invité
    Invité(e)
    Par défaut
    d'accord, merci beaucoup. Je comprends bien le raisonnement. Mais comment faire rentrer L dans le code? Parce que pour l'instant L ne correspond à rien (même pas déclaré)

    EDIT: peut-être dois-je tout simplement les déclarer dans le tableau? tableau[L][C]
    Mais si c'est bien ça, comment déclarer les variables? En int, en string ça ne passe pas
    Dernière modification par Invité ; 21/06/2015 à 09h33.

  4. #4
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    L c’est ton numéro de ligne.

    Donc oui, il faut le créer, et ensuite, tu accèdes à tes éléments via (L*taille)+j (ou j est le numéro de la colonne).

    La somme des élements d’une ligne peut donc se calculer par quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function somme_ligne(std::vector<int> const& tableau, int taille, int L)
    {
        int somme = 0;
        for(int j = 0; j < taille; ++j)
        {
            somme += tableau[L*taille + j];
        }
        return somme;
    }
    Tu vois l’idée ? Donc normalement, tu dois être capable de définir somme_colonne(std::vector<int> const& tableau, int taille, int C);

  5. #5
    Invité
    Invité(e)
    Par défaut
    D'accord merci bien!

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

Discussions similaires

  1. Addition selon valeur cellule adjacente
    Par Labinouse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2011, 09h27
  2. [AC-2007] probleme d'addition sur valeur de recordset
    Par tibiurs dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/05/2009, 17h08
  3. Pb addition avec valeur NULL
    Par major2 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/03/2006, 15h33
  4. [VBA-E] Addition des valeurs des textbox
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 49
    Dernier message: 15/02/2006, 14h49
  5. [JSP] addition deux valeurs en sortie d'une jsp
    Par LESOLEIL dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 08/06/2005, 11h13

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