Partage
  • Partager sur Facebook
  • Partager sur Twitter

Copier valeur d'un vecteur

    21 février 2018 à 10:33:03

    Bonjour, 

    Question un peu stupide, mais je ne trouve pas la réponse..

    Alors voilà, j'essaye de "réduire mon empreinte mémoire" dans mon programme. Ici j'essaye de copier les VALEURS d'un vecteur dans un autre...

    Pour ce faire, j'utilise une variable temporaire, mais cela ne fonctionne pas super.. Quelqu'un pourrait m'aider?

    Exemple du code :

    vector <double> temp,a,b;
    
    for (int i(0);i<5;i++)
    
    {
    
        temp.push_back((double) i * M_PI);
    
    }
    
    for (int i(0);i<5;i++)
    
    {
    
        a.push_back(temp[i]);
    
    }
    
    for (int i(5);i<10;i++)
    
    {
    
        temp.push_back((double) i * M_PI);
    
    }
    
    for (int i(0);i<5;i++)
    
    {
    
        b.push_back(temp[i]);
    
    }
    
        for (int i(0);i<5;i++)
    
    {
    
        cout << "La " << i <<"-ieme valeur de a vaut " << a[i] << endl;
    
        cout << "La " << i <<"-ieme valeur de b vaut " << b[i] << endl;
    
    }
    
    return0;



    Ce que la console me donne : 

    La 0-ieme valeur de a vaut 0

    La 0-ieme valeur de b vaut 0

    La 1-ieme valeur de a vaut 3.14159

    La 1-ieme valeur de b vaut 3.14159

    La 2-ieme valeur de a vaut 6.28319

    La 2-ieme valeur de b vaut 6.28319

    La 3-ieme valeur de a vaut 9.42478

    La 3-ieme valeur de b vaut 9.42478

    La 4-ieme valeur de a vaut 12.5664

    La 4-ieme valeur de b vaut 12.5664

    Program ended with exit code: 0

    Je voudrais naturellement des valeurs différentes dans a et b...

    Merci!

    -
    Edité par QuentinBorlon 21 février 2018 à 10:43:31

    • Partager sur Facebook
    • Partager sur Twitter
      21 février 2018 à 10:36:39

      Lu'!

      Merci de présenter ton code comme indiqué dans les règles d'utilisation du forum pour que l'on puisse lire le code sans trop de soucis.

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        21 février 2018 à 10:59:10

        Bonjour,

        je ne vois pas le rapport avec l'empreinte mémoire! Sinon ligne 27, il faut copier les éléments 5 à 9 de temp en faisant

        for (int i(5);i<10;i++)
        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          21 février 2018 à 11:11:12

          Salut, 

          Merci, 

          J'avais mal lu mon code.. 

          Je suis vraiment désolé.

          Voilà ce que je voulais faire :

          vector <double> temp,a,b;
              double tempo;
              for (int i(0);i<5;i++)
              {
                  temp.push_back((double) i * M_PI);
              }
              for (int i(0);i<5;i++)
              {
                  tempo = temp[i];
                  a.push_back(tempo);
              }
              for (int i(0);i<5;i++)
              {
                  temp[i] = (double) (i+5) * M_PI;
              }
              for (int i(0);i<5;i++)
              {
                  tempo = temp[i];
                  b.push_back(tempo);
              }
              for (int i(0);i<5;i++)
              {
                  cout << "La " << i <<"-ieme valeur de a vaut " << a[i] << endl;
                  cout << "La " << i <<"-ieme valeur de b vaut " << b[i] << endl;
              }
              return 0;
          



          • Partager sur Facebook
          • Partager sur Twitter
            21 février 2018 à 11:19:15

            Si on regarde ton code, on peut d'abord se pencher sur les trois premières boucles :

            vector <double> temp,a,b;
            double tempo;
            
            for (int i(0);i<5;i++){
              temp.push_back((double) i * M_PI);
            }
            for (int i(0);i<5;i++){
              tempo = temp[i];
              a.push_back(tempo);
            }
            for (int i(0);i<5;i++){
              temp[i] = (double) (i+5) * M_PI;
            }

            On peut voir que :

            • tu écris les valeurs 0 à 4 du vector "temp",
            • tu passes les valeurs en question dans a,
            • tu écrases temp sans dépendance à d'autres données précédentes.

            Donc tu aurais pu te contenter de construire a direct. Ensuite, tu passes à nouveau les valeurs de temp dans b, donc tu aurais pu écrire b directement, et finalement tu affiches les valeurs.

            Donc en gros en conservant les vecteurs, ceci aurait suffit :

            std::vector<double> a(5);
            for(unsigned i = 0 ; i < a.size() ; ++i)
              a[i] = static_cast<double>(i) * M_PI ;
            
            std::vector<double> b(5);
            for(unsigned i = 0 ; i < b.size() ; ++i)
              b[i] = static_cast<double>(i + 5) * M_PI ;
            • Partager sur Facebook
            • Partager sur Twitter

            Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            Copier valeur d'un vecteur

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown