Lavig

HomeController2

Oct 7th, 2026
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.58 KB | None | 0 0
  1. [HttpGet] // Обробник GET-запиту (відкриття сторінки з формою)
  2.         public IActionResult Task9() // Метод контролера для відображення сторінки Завдання 9
  3.         { // Початок тіла методу GET
  4.             return View(new InputViewModel()); // Повертаємо Razor-відображення Task9 із порожньою моделлю
  5.         } // Кінець тіла методу GET
  6.  
  7.         [HttpPost] // Обробник POST-запиту (відправка форми з даними)
  8.         public IActionResult Task9(InputViewModel input) // Метод приймає заповнену модель даних з форми
  9.         { // Початок тіла методу POST
  10.             string raw = input.RawNumbers; // Отримуємо введений користувачем рядок із числами
  11.             if (raw == null) // Перевіряємо, чи рядок не є null
  12.             { // Початок блоку перевірки на null
  13.                 raw = ""; // Якщо null, присвоюємо порожній рядок, щоб уникнути помилки
  14.             } // Кінець блоку перевірки на null
  15.             string[] parts = raw.Split(','); // Розбиваємо рядок на масив підрядків за комою
  16.             int[] tempArray = new int[10]; // Створюємо тимчасовий масив рівно на 10 елементів
  17.             int count = 0; // Лічильник коректно розпарсених чисел
  18.             for (int i = 0; i < parts.Length; i++) // Цикл перебору всіх підрядків, отриманих після розбиття
  19.             { // Початок циклу розбору підрядків
  20.                 string cleaned = parts[i].Trim(); // Очищаємо підрядок від пробілів з обох боків
  21.                 int number = 0; // Змінна для збереження успішно перетвореного числа
  22.                 if (int.TryParse(cleaned, out number)) // Перевіряємо, чи підрядок є коректним цілим числом
  23.                 { // Початок блоку, якщо елемент успішно перетворено в число
  24.                     tempArray[count] = number; // Записуємо коректне число у тимчасовий масив
  25.                     count++; // Збільшуємо лічильник знайдених чисел
  26.                     if (count == 10) // Перевіряємо, чи вже набрали необхідні 10 чисел
  27.                     { // Початок блоку обмеження кількості
  28.                         break; // Перериваємо цикл, оскільки за умовою треба максимум 10 чисел
  29.                     } // Кінець блоку обмеження кількості
  30.                 } // Кінець перевірки TryParse
  31.             } // Кінець циклу розбору підрядків
  32.             int[] numbers = new int[count]; // Створюємо масив під точну кількість реально знайдених чисел
  33.             for (int i = 0; i < count; i++) // Цикл для перенесення чисел із тимчасового масиву
  34.             { // Початок циклу копіювання
  35.                 numbers[i] = tempArray[i]; // Копіюємо число у фінальний масив
  36.             } // Кінець циклу копіювання
  37.             OutputViewModel output = new OutputViewModel(); // Створюємо об'єкт вихідної моделі для результатів
  38.             output.Input = input; // Передаємо вхідні дані (обрану операцію, налаштування шрифту)
  39.             output.ParsedNumbers = numbers; // Записуємо масив оброблених чисел
  40.             output.Results = new int[numbers.Length]; // Створюємо масив для результатів відповідної довжини
  41.             for (int i = 0; i < numbers.Length; i++) // Цикл обчислення результату для кожного числа
  42.             { // Початок циклу обчислення
  43.                 if (input.Operation == 0) // Якщо обрана операція 0 (підрахунок кількості цифр)
  44.                 { // Початок варіанта 0
  45.                     output.Results[i] = CountDigits(numbers[i]); // Викликаємо метод підрахунку кількості цифр
  46.                 } // Кінець варіанта 0
  47.                 else // Якщо обрана операція 1 (сума цифр)
  48.                 { // Початок варіанта 1
  49.                     output.Results[i] = SumDigits(numbers[i]); // Викликаємо метод підрахунку суми цифр
  50.                 } // Кінець варіанта 1
  51.             } // Кінець циклу обчислення
  52.             return View("Task9Result", output); // Переходимо на сторінку результатів із заповненою моделлю
  53.         } // Кінець тіла методу POST
  54.  
  55.         private int CountDigits(int number) // Допоміжний метод для підрахунку кількості цифр
  56.         { // Початок методу CountDigits
  57.             int num = number; // Копіюємо вхідне число у локальну змінну для обробки
  58.             if (num < 0) // Перевіряємо, чи число від'ємне
  59.             { // Початок обробки від'ємного числа
  60.                 num = -num; // Перетворюємо від'ємне число на додатне (знак на кількість цифр не впливає)
  61.             } // Кінець обробки від'ємного числа
  62.             if (num == 0) // Окремий випадок: якщо число дорівнює нулю
  63.             { // Початок перевірки нуля
  64.                 return 1; // Число 0 складається з однієї цифри
  65.             } // Кінець перевірки нуля
  66.             int count = 0; // Змінна-лічильник кількості цифр
  67.             while (num > 0) // Цикл працює, поки в числі залишаються цифри
  68.             { // Початок циклу відкидання цифр
  69.                 count++; // Збільшуємо кількість цифр на 1
  70.                 num /= 10; // Відкидаємо останню цифру шляхом цілочисельного ділення на 10
  71.             } // Кінець циклу відкидання цифр
  72.             return count; // Повертаємо підраховану кількість цифр
  73.         } // Кінець методу CountDigits
  74.  
  75.         private int SumDigits(int number) // Допоміжний метод для обчислення суми цифр
  76.         { // Початок методу SumDigits
  77.             int num = number; // Копіюємо вхідне число у локальну змінну для обробки
  78.             if (num < 0) // Перевіряємо, чи число від'ємне
  79.             { // Початок обробки від'ємного числа
  80.                 num = -num; // Перетворюємо на додатне (сума цифр обчислюється для модуля)
  81.             } // Кінець обробки від'ємного числа
  82.             int sum = 0; // Змінна для накопичення суми цифр
  83.             while (num > 0) // Цикл працює, поки в числі є цифри
  84.             { // Початок циклу відокремлення цифр
  85.                 sum += num % 10; // Додаємо до суми останню цифру (залишок від ділення на 10)
  86.                 num /= 10; // Відкидаємо останню цифру діленням на 10
  87.             } // Кінець циклу відокремлення цифр
  88.             return sum; // Повертаємо обчислену суму цифр
  89.         } // Кінець методу SumDigits
Advertisement
Add Comment
Please, Sign In to add comment