+ 3
C# Coffee Time
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SoloLearn { class Program { static void Main(string[] args) { int discount = Convert.ToInt32(Console.ReadLine()); Dictionary<string, int> coffee = new Dictionary<string, int>(); coffee.Add("Americano", 50); coffee.Add("Latte", 70); coffee.Add("Flat White", 60); coffee.Add("Espresso", 60); coffee.Add("Cappuccino", 80); coffee.Add("Mocha", 90); //your code goes here foreach(string s in coffee.Keys.ToArray()){ Console.WriteLine(s+": "+Convert.ToInt32(coffee[s]-coffee[s]*Convert.ToDouble(discount)/100+0.01)); } } } } Although this passes the unit test but is there a lazier way to get around this long and messy code?
3 Answers
+ 4
I did it this way, but I wouldn't say it was a lazier method, just slightly different.
//your code goes here
foreach (string item in coffee.Keys.ToArray()) {
double rebate = (coffee[item]*discount)/100;
Console.WriteLine(item +": "+ (coffee[item] - rebate));
}
+ 1
Change foreach to
foreach(KeyValuePair<string, int> entry in coffee)
{
Console.WriteLine(entry.Key +": "+(entry.Value-entry.Value*discount/100));
}
+ 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SoloLearn
{
class Program
{
static void Main(string[] args)
{
double discount = Convert.ToDouble(Console.ReadLine());
Dictionary<string, double> coffee = new Dictionary<string, double>
{
{ "Americano", 50},
{ "Latte", 70 },
{ "Flat White", 60 },
{ "Espresso", 60 },
{ "Cappuccino", 80 },
{ "Mocha", 90 }
};
foreach (var drink in coffee.Keys.ToArray())
{
double rebate = (coffee[drink] * discount) / 100.0;
double newPrice = (double)(coffee[drink] - rebate);
Console.WriteLine(drink + ": " + newPrice);
}
}
//This code its better, and you should try somthing different
}
}