#include <iostream>
#include "AssietteCrudites.h"

float Crudite::PERCENTAGE = 10;

using namespace std;

Crudite::Crudite(float c_weight) : weight(c_weight) /// Constructeur de crudité
{
}

float Crudite::getWeight () const /// Récupère le poids de crudité
{
    return weight;
}

void Crudite::print () const /// Affiche crudité
{
    cout << getWeight () << "" << endl;
}

AssietteCrudites::AssietteCrudites() /// Constructeur d'une assiette de crudités
{

}

float Crudite::getPeel () const /// Pour éplucher
{
    return (weight/Crudite::PERCENTAGE); /// On divise le poids par le pourcentage perdu
}

void Crudite::setPeelingWeight(float percent) /// Pour modifier le pourcentage de perte
{
    PERCENTAGE = (percent*100); ///On change la variable
    cout << PERCENTAGE << endl;
}

AssietteCrudites::~AssietteCrudites() /// Destructeur de l'assiette de crudités
{
    if (this != NULL) /// Si l'instance existe
    {
        this -> Plate.clear(); /// On vide intégralement ce qu'elle contient
    }
}

void AssietteCrudites::print () const /// Affiche l'assiette de crudités
{
    vector<Crudite*>::const_iterator /// On définit un iterateur pour parcourir "l'assiette"
        vit (Plate.begin()),
        vend (Plate.end());

    for(;vit!=vend;vit++) /// Pour chaque crudité
    {
        (*vit)->print(); /// On l'affiche
    }
}

void AssietteCrudites::add (const Crudite* food) /// Pour ajouter une crudité à l'assiette
{
    Plate.push_back((Crudite*)food); /// On ajoute la crudité en fin du vecteur
}

float AssietteCrudites::getPeelingWeight() /// Pour récupérer la perte sur toute l'assiette
{
    float tmp_peeling = 0;

    vector<Crudite*>::const_iterator
        vit (Plate.begin()),
        vend (Plate.end());

    for (;vit!=vend;vit++) /// Pour chaque crudité
    {
        tmp_peeling = tmp_peeling + (*vit) -> getPeel(); /// On récupère la quantité perdue
    }

    return tmp_peeling;
}
