0

C# задание 81. Время пить кофе. Как решить, используя в цикле foreach, coffee.Key.ToArray?

Задача решается и так, но интересен вариант решения через это условие.

3rd Aug 2021, 10:11 PM
Саша Д'Рог
Саша Д'Рог - avatar
10 Answers
+ 2
Покажите вашу попытку
3rd Aug 2021, 10:33 PM
Solo
Solo - avatar
+ 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); }
4th Aug 2021, 5:17 AM
Саша Д'Рог
Саша Д'Рог - avatar
+ 1
В данном цикле вы обращаетесь к coffee как к словарю, coffee[s], то есть например coffee[Latte] >>> 70. Вас же просят сделать из ключей словаря массив и соответственно обращаться к ним как к массиву. Это настолько просто, что мне неудобно давать вам прямой ответ, попробуйте сами изменить этот цикл, тем более вам уже дали половину решения, а я вам намекнул на вторую её часть ☺️
4th Aug 2021, 9:25 AM
Solo
Solo - avatar
+ 1
Я могу написать что то такое, оно тоже проходит проверку и выдаёт верное решение. Но я не уверен, что правильно понимаю задачу. var c = coffee.Keys.ToArray(); foreach(var i in c){ int d = coffee[i] - coffee[i]*discount/100; Console.WriteLine(i + ": " + d); }
4th Aug 2021, 4:56 PM
Саша Д'Рог
Саша Д'Рог - avatar
+ 1
В принципе я тоже написал аналогичный код, с той лишь разницей, что более точно определил переменные: string[] c = coffee.Keys.ToArray(); foreach(string i in c) И так-же не уверен в том что это то что они хотели бы видеть ☺️, так-как первый вариант с небольшими изменениями более лаконичен в моём понимании. Я написал ещё третий вариант с использованием метода Values, но он тоже меркнет по сравнению с первым. ☺️
4th Aug 2021, 10:46 PM
Solo
Solo - avatar
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); //ваш код }
3rd Aug 2021, 10:13 PM
Саша Д'Рог
Саша Д'Рог - avatar
0
Менеджер кофейни проводит рекламную акцию и хочет предоставить скидку на кофейные напитки. Вам дана программа, которая принимает на входе размер скидки и определяет словарь, в котором названия кофейных напитков заданы в качестве ключей, а их цена - в качестве значений. Напишите программу, которая будет применять скидку ко всем ценам и выводить новый прайс-лист в формате указанном ниже. Пример Входных Данных 10 Пример Выходных Данных Americano: 45 Latte: 63 Flat White: 54 Espresso: 54 Cappuccino: 72 Mocha: 81
3rd Aug 2021, 10:14 PM
Саша Д'Рог
Саша Д'Рог - avatar
0
Используйте coffee.Keys.ToArray() внутри цикла foreach. Обратите внимание на пробел после ":" в выходных данных.
3rd Aug 2021, 10:15 PM
Саша Д'Рог
Саша Д'Рог - avatar
0
эту попытку бот считает верной, не понимаю как использовать coffee.Keys.ToArray в foreach
4th Aug 2021, 5:20 AM
Саша Д'Рог
Саша Д'Рог - avatar
- 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); } } } } Это тупизм конечно, имея словарь, создавать еще и массив отдельно, но решается так
4th Apr 2022, 1:56 PM
Vyacheslav Fiodorov
Vyacheslav Fiodorov - avatar