public class Bouquet {
	
	//Fields
	
	private Flower[] flowers;
  
 	//Constuctors
  	
  	public Bouquet() {
		this(new Flower[0]);
  	}

  	public Bouquet(Flower[] flowers) {
		this.flowers = flowers;
 	}
  
    //Accessors
    
  	public Flower getFlower(int index) {
		  return flowers[index]; }
		  
	public Flower[] getFlowers() {
			  return flowers; }
	
	public double getCost() {
	  	double cost = 0;
	 	for (int i = 0; i < flowers.length; i++)
			cost += flowers[i].getCost();
	  	return cost;
	}

	public double getPrice(double discount) {
	 	double price = 0;
	  	for (int i = 0; i < flowers.length; i++)
			price += flowers[i].getPrice();
	  	return price * discount;
	}

	public int getSize() {
	  	return flowers.length;
	}

	//Mutators
		
	public void addFlower(Flower flower) {
	  	int size = flowers.length;
	  	Flower[] temp = new Flower[size + 1];
	  	for (int i = 0; i < size; i++)
			temp[i] = flowers[i];
	  	temp[size] = flower;
	  	flowers = temp;
	}
	
	public void removeFlower(Flower flower) {
		Flower[] temp = new Flower[flowers.length - 1];
		int newIndex = 0;
		for (int i = 0; i < flowers.length; i++)
			if (flowers[i] != flower) 
				temp[newIndex++]=flowers[i];
		flowers = temp;
	}
	
	public void weed() {
	/* Removes all flowers that are old */
	  	int badFlowers = 0, 
		size = flowers.length;
		//Search for old flowers
	  	for (int i = 0; i < size; i++)
			if (flowers[i].getDaysToLive() == 0)
		  		badFlowers++; //counting total bad flowers
		//If there are old flowers . . .
	  	if (badFlowers != 0) {
			Flower[] temp = new Flower[size - badFlowers];
			int newIndex = 0;
			for (int i = 0; i < size; i++)
		  		if (flowers[i].getDaysToLive() != 0)
					temp[newIndex++]=flowers[i];
			flowers = temp;
	  	}
	}  
}          