0
C# задание 81. Время пить кофе. Как решить, используя в цикле foreach, coffee.Key.ToArray?
Задача решается и так, но интересен вариант решения через это условие.
10 odpowiedzi
+ 2
Покажите вашу попытку
+ 2
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);
            //ваш код
            
            foreach(string s in coffee.Keys){
                int d = coffee[s] - coffee[s]*discount/100;
                Console.WriteLine(s + ": " + d);
            }
+ 1
В данном цикле вы обращаетесь к coffee как к словарю, coffee[s], то есть например coffee[Latte] >>> 70.
Вас же просят сделать из ключей словаря массив и соответственно обращаться к ним как к массиву.
Это настолько просто, что мне неудобно давать вам прямой ответ, попробуйте сами изменить этот цикл, тем более вам уже дали половину решения, а я вам намекнул на вторую её часть ☺️
+ 1
Я могу написать что то такое,  оно тоже проходит проверку и выдаёт верное решение. Но я не уверен, что правильно понимаю задачу. 
            var c = coffee.Keys.ToArray();
            
            foreach(var i in c){
                int d = coffee[i] -          coffee[i]*discount/100;
                Console.WriteLine(i + ": " + d);
            }
+ 1
В принципе я тоже написал  аналогичный код, с той лишь разницей, что более точно определил переменные:
string[] c = coffee.Keys.ToArray();
foreach(string i in c)
И так-же не уверен в том что это то что они хотели бы видеть  ☺️, так-как первый вариант с небольшими изменениями более лаконичен в моём понимании. 
Я написал ещё третий вариант с использованием метода Values, но он тоже  меркнет по сравнению с первым. ☺️
0
изначальный код задачи
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);
            //ваш код
        }
0
Менеджер кофейни проводит рекламную акцию и хочет предоставить скидку на кофейные напитки. Вам дана программа, которая принимает на входе размер скидки и определяет словарь, в котором названия кофейных напитков заданы в качестве ключей, а их цена - в качестве значений.
Напишите программу, которая будет применять скидку ко всем ценам и выводить новый прайс-лист в формате указанном ниже.
 
Пример Входных Данных
10
 
Пример Выходных Данных
Americano: 45
Latte: 63
Flat White: 54
Espresso: 54
Cappuccino: 72
Mocha: 81
0
Используйте coffee.Keys.ToArray() внутри цикла foreach.
Обратите внимание на пробел после ":" в выходных данных.
0
эту попытку бот считает верной, не понимаю как использовать coffee.Keys.ToArray в foreach
- 1
using System;
using System.Collections.Generic;
using System.Linq;
namespace Dict
{
    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);
            String[] coffeename = coffee.Keys.ToArray();
            foreach (var item in coffeename)
            {
                Console.WriteLine("{0} : {1}", item, coffee[item]-coffee[item]*discount/100);
            }
        }
    }
}
Это тупизм конечно, имея словарь, создавать еще и массив отдельно, но решается так



