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
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 ;
× 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.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
En recherche d'emploi.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C