В массива задана статистика покупок в магазине. Вывести различные отчеты - C#

Узнай цену своей работы

Формулировка задачи:

Учусь в инсте, сейчас выполняю практику по программированию на платформе .NET Framework. Теоретического материала не предоставлено вообще, ищу по форумам и справочникам майкрософта. Столкнулся с задачей: "1. С помощью массива задать статистику посещения магазина. Магазин работал 10 недель, на каждой неделе было от 4 до 7 рабочих дней. Часть покупателей совершала покупки используя наличные деньги, часть покупателей расплачивалась с помощью пластиковой карты. Посчитать: • общее число покупателей • сколько покупателей расплатились наличными • сколько покупателей расплатились с помощью пластиковой карты • в какие недели была ситуация, когда наличными платили больше, чем картой." Сначала немного был ошарашен, ведь входных данных практически нет, но потом вспомнил, что это не математическая задача, а программирование и она вполне решаема. Как я вижу решение: 1 - Нужно объявить массив массивов размерностью 10 строк на 7 столбцов (основной массив) . 2 - Ячейки основного массива заполнены одномерным массивом (матрицей-строкой) из двух элементов каждый (нал - безнал), который задан рандомом. 3 - Некоторые ячеки основного массива должны быть равны [0 0] (не более 3-х в строке), поскольку на каждой неделе от 4 до 7 рабочих дней. - Как вообще реализовать этот пункт? 4 - общее число покупателей это просто сумма всех элементов итогового массава 5 - сколько расплатились картами - сумма, предположим, всех первых ячеек массивов массива. 6 - соответственно, просто разница между вышеперечисленными суммами 7 - ситуация, когда наличными платили больше, чем картой это выборка сумм элементов построчно? Помогите новичку разобраться и укажите на недочёты в предложенном мной решении.

Решение задачи: «В массива задана статистика покупок в магазине. Вывести различные отчеты»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. namespace Example
  4. {
  5.     internal static class Program
  6.     {
  7.         private static void Main()
  8.         {
  9.             var payments = Create(10, 4);
  10.             Print(ref payments);
  11.             Console.WriteLine($"Общее число покупателей: {CountAll(ref payments)}");
  12.             Console.WriteLine($"Расплатились наличными: {CountCash(ref payments)}");
  13.             Console.WriteLine($"Расплатились картами: {CountCard(ref payments)}");
  14.             Info(ref payments);
  15.             Console.ReadKey();
  16.         }
  17.         private struct Payment
  18.         {
  19.             public int Cash;
  20.             public int Card;
  21.             public override string ToString() { return Cash.ToString() + " : " + Card.ToString(); }
  22.         }
  23.         private static void Print(ref Payment[] payments) { foreach (var payment in payments) Console.Write(payment + " | "); }
  24.         private static void Print(ref Payment[][] payments)
  25.         {
  26.             var line = new string('-', 55);
  27.             for (var i = 0; i != payments.Length; ++i)
  28.             {
  29.                 Print(ref payments[i]);
  30.                 Console.WriteLine("\n" + line);
  31.             }
  32.         }
  33.         private static Payment[][] Create(int week, int day, int min = 4, int max = 9)
  34.         {
  35.             var payments = new Payment[week][];
  36.             var rand = new Random();
  37.             const int n = 7;
  38.             for (var i = 0; i != week; ++i)
  39.             {
  40.                 var limit = rand.Next(day, n + 1);
  41.                 payments[i] = new Payment[n];
  42.                 var j = 0;
  43.                 Payment payment;
  44.                 while (j < limit)
  45.                 {
  46.                     payment.Cash = rand.Next(min, max);
  47.                     payment.Card = rand.Next(min, max);
  48.                     payments[i][j] = payment;
  49.                     ++j;
  50.                 }
  51.                 while (j < n)
  52.                 {
  53.                     payment.Cash = payment.Card = 0;
  54.                     payments[i][j] = payment;
  55.                     ++j;
  56.                 }
  57.             }
  58.             return payments;
  59.         }
  60.         private static int CountCash(ref Payment[] payments) { return payments.Sum(n => n.Cash); }
  61.         private static int CountCash(ref Payment[][] payments) { return payments.Sum(n => CountCash(ref n)); }
  62.         private static int CountCard(ref Payment[] payments) { return payments.Sum(n => n.Card); }
  63.         private static int CountCard(ref Payment[][] payments) { return payments.Sum(n => CountCard(ref n)); }
  64.         private static int CountAll(ref Payment[] payments) { return CountCash(ref payments) + CountCard(ref payments); }
  65.         private static int CountAll(ref Payment[][] payments) { return payments.Sum(n => CountAll(ref n)); }
  66.         private static bool MainlyInCash(ref Payment[] payments) { return CountCash(ref payments) > CountCard(ref payments); }
  67.         private static void Info(ref Payment[][] payments)
  68.         {
  69.             for (var i = 0; i != payments.Length; ++i)
  70.             {
  71.                 var result = MainlyInCash(ref payments[i]) ? "Наличными" : "Картой";
  72.                 Console.WriteLine($"{i + 1}. {result}");
  73.             }
  74.         }
  75.     }
  76. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы