#26 Le 31/05/2020, à 19:48
- grigouille
Re : Difficultés de comprehension ifstream C++
Tu peux faire une version qui marche pour vector et array :
#include <iostream>
#include <array>
#include <vector>
using namespace std;
template<typename InputIter, typename OutputIter>
void distributeur(int total, InputIter first, InputIter last, OutputIter out) {
while(first != last) {
auto coupure = *first;
*out = total / coupure;
total %= coupure;
++first;
++out;
}
}
int main()
{
array<int,9> coupures_disponibles={ 500, 200, 100, 50, 20, 10, 5, 2, 1 };
{//version array
cout << "array\n";
array<int,9> resultat;
distributeur(285, coupures_disponibles.begin(), coupures_disponibles.end(), resultat.begin());
int i=0;
for (auto result : resultat)
{
cout << result << " x "<< coupures_disponibles[i] << endl;
i++;
}
}
{//version vector
cout << "vector\n";
vector<int> resultat;
distributeur(285, coupures_disponibles.begin(), coupures_disponibles.end(), back_inserter(resultat));
int i=0;
for (auto result : resultat)
{
cout << result << " x "<< coupures_disponibles[i] << endl;
i++;
}
}
return 0;
}
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#27 Le 31/05/2020, à 21:05
- chris7522
Re : Difficultés de comprehension ifstream C++
Je ne suis pas en mesure de tout comprendre car j'ai pas encore vu les templates .
Pour supprimer les 0 x 500 , 0 x 50 , 0 x 10 etc ... inutile , pour l'affichage j'ai rajouté :
for (auto result : resultat)
{
if(result != 0)
cout << result << " x "<< coupures_disponibles[i] << endl;
i++;
}
Merci de ton aide !
Hors ligne