It's hard to tell exactly what you were asking for, but I did see this:
Now my issue is I need to add a option that says 'hey he gots 17.50 cups, lets make it 1 gallon, and 1 1/2 cups.
You would need to take a set of measurements and loop through them recalculating the remainders. I highly advise you to extract your method code into class variables and helper methods.
Below is some example code that should help you. You'll need to fill in the blanks.
public string ConvertToDescription(double amount, string originalMeasurement, params string[] toMeasurements)
{
StringBuilder sb = new StringBuilder();
double valueToConvert = amount;
string priorMeasurement = originalMeasurement;
double displayAmount;
for (int i = 0; i < toMeasurements.Count; i++)
{
if (i > 0)
sb.Append(" ");
double convertedAmount = VolumeMeasurements(valueToConvert, priorMeasurement, toMeasurement[i]);
// Check if last item so we don't trim wanted decimals.
if (i < toMeasurements.Count - 1)
displayAmount = Math.Floor(convertedAmount)
else
displayAmount = convertedAmount;
valueToConvert = convertedAmount - displayAmount;
priorMeasurement = toMeasurements[i];
// You will need to add logic here to display fractions if needed.
sb.AppendFormat("{0} {1}", displayAmount, toMeasurements[i]);
if (fixedAmount == 0)
break;
}
return sb.ToString();
}
Keep in mind that none of this is tested and I really hope this is what you were asking for. This should get you on the right track. You will need to find a way to convert the decimals on the last conversion to display as fractions and implement that. This will at least get you "1 gallon 1.5 cups"