/
FavnGod
/
LAB1
Обзор
Документация
Войти
/
FavnGod
/
LAB1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lab1GP.cs
254 строки
11 KB
FavnGod
upload files
11 дек 2025, 19:50
11 дек 2025, 19:50
15746c2
Код
Авторство
О чём код?
using System; namespace ChessAndLogicTasks { class Program { static void Main(string[] args) { Console.OutputEncoding = System.Text.Encoding.UTF8; while (true) { Console.WriteLine("\n=== МЕНЮ ==="); Console.WriteLine("1. Проверка четности одного из трех чисел"); Console.WriteLine("2. Максимальное из трех чисел"); Console.WriteLine("3. Сортировка трех чисел по возрастанию"); Console.WriteLine("4. Бьет ли конь фигуру противника"); Console.WriteLine("5. Бьет ли ферзь фигуру противника"); Console.WriteLine("6. Проверка корректности даты"); Console.WriteLine("7. Получить дату следующего дня"); Console.WriteLine("8. Число с правильным падежом слова 'рубль'"); Console.WriteLine("0. Выход"); Console.Write("\nВыберите задачу: "); string choice = Console.ReadLine(); Console.WriteLine(); switch (choice) { case "1": Task1(); break; case "2": Task2(); break; case "3": Task3(); break; case "4": Task4(); break; case "5": Task5(); break; case "6": Task6(); break; case "7": Task7(); break; case "8": Task8(); break; case "0": return; default: Console.WriteLine("Неверный выбор!"); break; } } } // Задача 1: Проверка, что только одно число четное static void Task1() { Console.WriteLine("=== Задача 1: Только одно четное число ==="); Console.Write("Введите первое число: "); int a = int.Parse(Console.ReadLine()); Console.Write("Введите второе число: "); int b = int.Parse(Console.ReadLine()); Console.Write("Введите третье число: "); int c = int.Parse(Console.ReadLine()); int evenCount = 0; if (a % 2 == 0) evenCount++; if (b % 2 == 0) evenCount++; if (c % 2 == 0) evenCount++; Console.WriteLine(evenCount == 1 ? "истина" : "ложь"); } // Задача 2: Максимальное из трех чисел static void Task2() { Console.WriteLine("=== Задача 2: Максимальное из трех чисел ==="); Console.Write("Введите первое число: "); int a = int.Parse(Console.ReadLine()); Console.Write("Введите второе число: "); int b = int.Parse(Console.ReadLine()); Console.Write("Введите третье число: "); int c = int.Parse(Console.ReadLine()); int max = a; if (b > max) max = b; if (c > max) max = c; Console.WriteLine($"Максимальное число: {max}"); } // Задача 3: Сортировка трех чисел по возрастанию static void Task3() { Console.WriteLine("=== Задача 3: Сортировка по возрастанию ==="); Console.Write("Введите первое число: "); int a = int.Parse(Console.ReadLine()); Console.Write("Введите второе число: "); int b = int.Parse(Console.ReadLine()); Console.Write("Введите третье число: "); int c = int.Parse(Console.ReadLine()); // Простая сортировка обменом if (a > b) { int temp = a; a = b; b = temp; } if (b > c) { int temp = b; b = c; c = temp; } if (a > b) { int temp = a; a = b; b = temp; } Console.WriteLine($"Числа по возрастанию: {a}, {b}, {c}"); } // Задача 4: Бьет ли конь фигуру static void Task4() { Console.WriteLine("=== Задача 4: Бьет ли конь фигуру ==="); Console.Write("Введите координаты коня (например, a1): "); string knightPos = Console.ReadLine().ToLower(); Console.Write("Введите координаты противника (например, c2): "); string enemyPos = Console.ReadLine().ToLower(); int knightX = knightPos[0] - 'a' + 1; int knightY = knightPos[1] - '0'; int enemyX = enemyPos[0] - 'a' + 1; int enemyY = enemyPos[1] - '0'; int dx = Math.Abs(enemyX - knightX); int dy = Math.Abs(enemyY - knightY); // Конь ходит буквой Г: 2 клетки в одну сторону и 1 в другую bool canAttack = (dx == 2 && dy == 1) || (dx == 1 && dy == 2); Console.WriteLine(canAttack ? "Конь бьет фигуру" : "Конь не бьет фигуру"); } // Задача 5: Бьет ли ферзь фигуру static void Task5() { Console.WriteLine("=== Задача 5: Бьет ли ферзь фигуру ==="); Console.Write("Введите координаты ферзя (например, d4): "); string queenPos = Console.ReadLine().ToLower(); Console.Write("Введите координаты противника (например, g7): "); string enemyPos = Console.ReadLine().ToLower(); int queenX = queenPos[0] - 'a' + 1; int queenY = queenPos[1] - '0'; int enemyX = enemyPos[0] - 'a' + 1; int enemyY = enemyPos[1] - '0'; int dx = Math.Abs(enemyX - queenX); int dy = Math.Abs(enemyY - queenY); bool canAttack = (dx == dy || dx == 0 || dy == 0) && (queenX != enemyX || queenY != enemyY); Console.WriteLine(canAttack ? "Ферзь бьет фигуру" : "Ферзь не бьет фигуру"); } // Задача 6: Проверка корректности даты static void Task6() { Console.WriteLine("=== Задача 6: Проверка корректности даты ==="); Console.Write("Введите день: "); int day = int.Parse(Console.ReadLine()); Console.Write("Введите месяц: "); int month = int.Parse(Console.ReadLine()); Console.Write("Введите год: "); int year = int.Parse(Console.ReadLine()); bool isValid = IsValidDate(day, month, year); Console.WriteLine(isValid ? "Дата корректна" : "Дата некорректна"); } // Задача 7: Дата следующего дня static void Task7() { Console.WriteLine("=== Задача 7: Дата следующего дня ==="); Console.Write("Введите день: "); int day = int.Parse(Console.ReadLine()); Console.Write("Введите месяц: "); int month = int.Parse(Console.ReadLine()); Console.Write("Введите год: "); int year = int.Parse(Console.ReadLine()); if (!IsValidDate(day, month, year)) { Console.WriteLine("Некорректная дата!"); return; } int daysInMonth = GetDaysInMonth(month, year); day++; if (day > daysInMonth) { day = 1; month++; if (month > 12) { month = 1; year++; } } Console.WriteLine($"Следующая дата: {day:D2}.{month:D2}.{year}"); } // Задача 8: Число с правильным падежом слова "рубль" static void Task8() { Console.WriteLine("=== Задача 8: Падеж слова 'рубль' ==="); Console.Write("Введите число (1-999): "); int number = int.Parse(Console.ReadLine()); if (number < 1 || number > 999) { Console.WriteLine("Число должно быть от 1 до 999!"); return; } string rubleForm = GetRubleForm(number); Console.WriteLine($"{number} {rubleForm}"); } static bool IsValidDate(int day, int month, int year) { if (year < 1 || month < 1 || month > 12 || day < 1) return false; int daysInMonth = GetDaysInMonth(month, year); return day <= daysInMonth; } static int GetDaysInMonth(int month, int year) { int[] daysInMonths = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (month == 2 && IsLeapYear(year)) return 29; return daysInMonths[month - 1]; } static bool IsLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } static string GetRubleForm(int number) { int lastDigit = number % 10; int lastTwoDigits = number % 100; // Исключения для чисел 11-14 if (lastTwoDigits >= 11 && lastTwoDigits <= 14) return "рублей"; if (lastDigit == 1) return "рубль"; if (lastDigit >= 2 && lastDigit <= 4) return "рубля"; // 5-9, 0 рублей return "рублей"; } } }