Как написать программу на языке C#, которая по введенной дате и порядковому номеру числа на доске вернет значение этого числа, учитывая, что 1 января на доске пишется число 1, а в остальные дни числа выписываются в обратном порядке с добавлением нового числа, на 1 больше максимального на тот момент? Если к указанной дате числа с указанным порядковым номером на доске нет, программа должна выводить -1.
Информатика 8 класс Алгоритмы и структуры данных программа на C# введенная дата порядковый номер значение числа 1 января обратный порядок максимальное число вывод -1 информатика 8 класс
Чтобы написать программу на языке C#, которая будет выполнять поставленную задачу, нам нужно следовать нескольким шагам. Давайте разберем их по порядку.
Теперь давайте напишем сам код:
using System;
class Program
{
    static void Main()
    {
        Console.Write("Введите дату (в формате ГГГГ-ММ-ДД): ");
        DateTime date;
        if (!DateTime.TryParse(Console.ReadLine(), out date))
        {
            Console.WriteLine("Неверный формат даты.");
            return;
        }
        Console.Write("Введите порядковый номер числа: ");
        int position;
        if (!int.TryParse(Console.ReadLine(), out position) || position < 1)
        {
            Console.WriteLine("Неверный порядковый номер.");
            return;
        }
        int result = GetNumberByDateAndPosition(date, position);
        Console.WriteLine(result);
    }
    static int GetNumberByDateAndPosition(DateTime date, int position)
    {
        DateTime startDate = new DateTime(date.Year, 1, 1);
        TimeSpan difference = date - startDate;
        // Количество дней между 1 января и указанной датой
        int daysCount = difference.Days;
        // Если дата раньше 1 января, возвращаем -1
        if (daysCount < 0)
        {
            return -1;
        }
        // Количество чисел, написанных до указанной даты
        int numbersCount = daysCount + 1; // +1, потому что 1 января тоже считается
        // Проверяем, существует ли число с указанным порядковым номером
        if (position > numbersCount)
        {
            return -1;
        }
        // Число в позиции 'position' будет равно:
        return numbersCount - position + 1;
    }
}
В этом коде мы:
Таким образом, программа будет выполнять поставленную задачу корректно.