#include <iostream>
using namespace std;

class Resistor
{
private :
	
	float requiredRes;
	int multiplier;

public :
	void input (void);
	float adjust(void);
	int preferred (float);
	void colours (int);
	void display(int);
	
	Resistor(void);
	~Resistor(void);
};

void Resistor ::input(void)
{
	do
	{
		cout << "Enter the resistor value required : ";
		cin >> requiredRes;
	}
	while (requiredRes < 10);
}

float Resistor :: adjust(void)
{
	float required = requiredRes;
	multiplier =0;

	while (required > 82)
	{
		required = required/10;
		multiplier++;
	}
	return required;

}

int Resistor :: preferred(float required)
{
	int prefValues[12]={10,12,15,18,22,27,33,39,47,56,68,82};
	int i = 0;

	while (required > prefValues[i])
		i++;
	return prefValues[i];
}

void Resistor :: colours(int nearest)
{
	char colours[10][7] = {"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white"};
	int first,second;
	
	first = nearest/10;
	second = nearest % 10;

	cout << "the colour code is " << colours[first] << " " << colours[second] << " " << colours[multiplier] <<endl;
}

void Resistor :: display (int preferred)
{
	float resistor;
	int i;
	
	resistor = (float) preferred;
	for (i=0; i < multiplier; i++)
		resistor = resistor * 10;

	cout << "the requested value was : " << requiredRes << " ohms" << endl;
	cout << "the nearest available value is " << resistor << " ohms" << endl;
	colours(preferred);
}


Resistor :: Resistor(void)
{
}


Resistor :: ~Resistor(void)
{
}

void main (void)
{
	Resistor myResistor;
	float resistor;
	int preferredVal;

	myResistor.input();
	resistor = myResistor.adjust();
	preferredVal = myResistor.preferred(resistor);
	myResistor.display(preferredVal);	
}


