В массива задана статистика покупок в магазине. Вывести различные отчеты - C#
Формулировка задачи:
Учусь в инсте, сейчас выполняю практику по программированию на платформе .NET Framework.
Теоретического материала не предоставлено вообще, ищу по форумам и справочникам майкрософта.
Столкнулся с задачей:
"1. С помощью массива задать статистику посещения магазина. Магазин работал 10 недель, на каждой неделе было от 4 до 7 рабочих дней. Часть покупателей совершала покупки используя наличные деньги, часть покупателей расплачивалась с помощью пластиковой карты.
Посчитать:
• общее число покупателей
• сколько покупателей расплатились наличными
• сколько покупателей расплатились с помощью пластиковой карты
• в какие недели была ситуация, когда наличными платили больше, чем картой."
Сначала немного был ошарашен, ведь входных данных практически нет, но потом вспомнил, что это не математическая задача, а программирование и она вполне решаема.
Как я вижу решение:
1 - Нужно объявить массив массивов размерностью 10 строк на 7 столбцов (основной массив) .
2 - Ячейки основного массива заполнены одномерным массивом (матрицей-строкой) из двух элементов каждый (нал - безнал), который задан рандомом.
3 - Некоторые ячеки основного массива должны быть равны [0 0] (не более 3-х в строке), поскольку на каждой неделе от 4 до 7 рабочих дней. - Как вообще реализовать этот пункт?
4 - общее число покупателей это просто сумма всех элементов итогового массава
5 - сколько расплатились картами - сумма, предположим, всех первых ячеек массивов массива.
6 - соответственно, просто разница между вышеперечисленными суммами
7 - ситуация, когда наличными платили больше, чем картой это выборка сумм элементов построчно?
Помогите новичку разобраться и укажите на недочёты в предложенном мной решении.
Решение задачи: «В массива задана статистика покупок в магазине. Вывести различные отчеты»
textual
Листинг программы
using System; using System.Linq; namespace Example { internal static class Program { private static void Main() { var payments = Create(10, 4); Print(ref payments); Console.WriteLine($"Общее число покупателей: {CountAll(ref payments)}"); Console.WriteLine($"Расплатились наличными: {CountCash(ref payments)}"); Console.WriteLine($"Расплатились картами: {CountCard(ref payments)}"); Info(ref payments); Console.ReadKey(); } private struct Payment { public int Cash; public int Card; public override string ToString() { return Cash.ToString() + " : " + Card.ToString(); } } private static void Print(ref Payment[] payments) { foreach (var payment in payments) Console.Write(payment + " | "); } private static void Print(ref Payment[][] payments) { var line = new string('-', 55); for (var i = 0; i != payments.Length; ++i) { Print(ref payments[i]); Console.WriteLine("\n" + line); } } private static Payment[][] Create(int week, int day, int min = 4, int max = 9) { var payments = new Payment[week][]; var rand = new Random(); const int n = 7; for (var i = 0; i != week; ++i) { var limit = rand.Next(day, n + 1); payments[i] = new Payment[n]; var j = 0; Payment payment; while (j < limit) { payment.Cash = rand.Next(min, max); payment.Card = rand.Next(min, max); payments[i][j] = payment; ++j; } while (j < n) { payment.Cash = payment.Card = 0; payments[i][j] = payment; ++j; } } return payments; } private static int CountCash(ref Payment[] payments) { return payments.Sum(n => n.Cash); } private static int CountCash(ref Payment[][] payments) { return payments.Sum(n => CountCash(ref n)); } private static int CountCard(ref Payment[] payments) { return payments.Sum(n => n.Card); } private static int CountCard(ref Payment[][] payments) { return payments.Sum(n => CountCard(ref n)); } private static int CountAll(ref Payment[] payments) { return CountCash(ref payments) + CountCard(ref payments); } private static int CountAll(ref Payment[][] payments) { return payments.Sum(n => CountAll(ref n)); } private static bool MainlyInCash(ref Payment[] payments) { return CountCash(ref payments) > CountCard(ref payments); } private static void Info(ref Payment[][] payments) { for (var i = 0; i != payments.Length; ++i) { var result = MainlyInCash(ref payments[i]) ? "Наличными" : "Картой"; Console.WriteLine($"{i + 1}. {result}"); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д