Как написать программу на языке 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; } }
В этом коде мы:
Таким образом, программа будет выполнять поставленную задачу корректно.