Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [HttpGet] // Обробник GET-запиту (відкриття сторінки з формою)
- public IActionResult Task9() // Метод контролера для відображення сторінки Завдання 9
- { // Початок тіла методу GET
- return View(new InputViewModel()); // Повертаємо Razor-відображення Task9 із порожньою моделлю
- } // Кінець тіла методу GET
- [HttpPost] // Обробник POST-запиту (відправка форми з даними)
- public IActionResult Task9(InputViewModel input) // Метод приймає заповнену модель даних з форми
- { // Початок тіла методу POST
- string raw = input.RawNumbers; // Отримуємо введений користувачем рядок із числами
- if (raw == null) // Перевіряємо, чи рядок не є null
- { // Початок блоку перевірки на null
- raw = ""; // Якщо null, присвоюємо порожній рядок, щоб уникнути помилки
- } // Кінець блоку перевірки на null
- string[] parts = raw.Split(','); // Розбиваємо рядок на масив підрядків за комою
- int[] tempArray = new int[10]; // Створюємо тимчасовий масив рівно на 10 елементів
- int count = 0; // Лічильник коректно розпарсених чисел
- for (int i = 0; i < parts.Length; i++) // Цикл перебору всіх підрядків, отриманих після розбиття
- { // Початок циклу розбору підрядків
- string cleaned = parts[i].Trim(); // Очищаємо підрядок від пробілів з обох боків
- int number = 0; // Змінна для збереження успішно перетвореного числа
- if (int.TryParse(cleaned, out number)) // Перевіряємо, чи підрядок є коректним цілим числом
- { // Початок блоку, якщо елемент успішно перетворено в число
- tempArray[count] = number; // Записуємо коректне число у тимчасовий масив
- count++; // Збільшуємо лічильник знайдених чисел
- if (count == 10) // Перевіряємо, чи вже набрали необхідні 10 чисел
- { // Початок блоку обмеження кількості
- break; // Перериваємо цикл, оскільки за умовою треба максимум 10 чисел
- } // Кінець блоку обмеження кількості
- } // Кінець перевірки TryParse
- } // Кінець циклу розбору підрядків
- int[] numbers = new int[count]; // Створюємо масив під точну кількість реально знайдених чисел
- for (int i = 0; i < count; i++) // Цикл для перенесення чисел із тимчасового масиву
- { // Початок циклу копіювання
- numbers[i] = tempArray[i]; // Копіюємо число у фінальний масив
- } // Кінець циклу копіювання
- OutputViewModel output = new OutputViewModel(); // Створюємо об'єкт вихідної моделі для результатів
- output.Input = input; // Передаємо вхідні дані (обрану операцію, налаштування шрифту)
- output.ParsedNumbers = numbers; // Записуємо масив оброблених чисел
- output.Results = new int[numbers.Length]; // Створюємо масив для результатів відповідної довжини
- for (int i = 0; i < numbers.Length; i++) // Цикл обчислення результату для кожного числа
- { // Початок циклу обчислення
- if (input.Operation == 0) // Якщо обрана операція 0 (підрахунок кількості цифр)
- { // Початок варіанта 0
- output.Results[i] = CountDigits(numbers[i]); // Викликаємо метод підрахунку кількості цифр
- } // Кінець варіанта 0
- else // Якщо обрана операція 1 (сума цифр)
- { // Початок варіанта 1
- output.Results[i] = SumDigits(numbers[i]); // Викликаємо метод підрахунку суми цифр
- } // Кінець варіанта 1
- } // Кінець циклу обчислення
- return View("Task9Result", output); // Переходимо на сторінку результатів із заповненою моделлю
- } // Кінець тіла методу POST
- private int CountDigits(int number) // Допоміжний метод для підрахунку кількості цифр
- { // Початок методу CountDigits
- int num = number; // Копіюємо вхідне число у локальну змінну для обробки
- if (num < 0) // Перевіряємо, чи число від'ємне
- { // Початок обробки від'ємного числа
- num = -num; // Перетворюємо від'ємне число на додатне (знак на кількість цифр не впливає)
- } // Кінець обробки від'ємного числа
- if (num == 0) // Окремий випадок: якщо число дорівнює нулю
- { // Початок перевірки нуля
- return 1; // Число 0 складається з однієї цифри
- } // Кінець перевірки нуля
- int count = 0; // Змінна-лічильник кількості цифр
- while (num > 0) // Цикл працює, поки в числі залишаються цифри
- { // Початок циклу відкидання цифр
- count++; // Збільшуємо кількість цифр на 1
- num /= 10; // Відкидаємо останню цифру шляхом цілочисельного ділення на 10
- } // Кінець циклу відкидання цифр
- return count; // Повертаємо підраховану кількість цифр
- } // Кінець методу CountDigits
- private int SumDigits(int number) // Допоміжний метод для обчислення суми цифр
- { // Початок методу SumDigits
- int num = number; // Копіюємо вхідне число у локальну змінну для обробки
- if (num < 0) // Перевіряємо, чи число від'ємне
- { // Початок обробки від'ємного числа
- num = -num; // Перетворюємо на додатне (сума цифр обчислюється для модуля)
- } // Кінець обробки від'ємного числа
- int sum = 0; // Змінна для накопичення суми цифр
- while (num > 0) // Цикл працює, поки в числі є цифри
- { // Початок циклу відокремлення цифр
- sum += num % 10; // Додаємо до суми останню цифру (залишок від ділення на 10)
- num /= 10; // Відкидаємо останню цифру діленням на 10
- } // Кінець циклу відокремлення цифр
- return sum; // Повертаємо обчислену суму цифр
- } // Кінець методу SumDigits
Advertisement
Add Comment
Please, Sign In to add comment