Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 31/05/2020, à 20: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, à 22: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