Информатика Тема "Циклические программы с вложенными циклами While и For" Задание. Составить программу. Замечание. При решении данных задач возможно использовать оператор switch или вложенные операторы if. С 1 января 1990 года по некоторый день прошло n дней, определить название текущего месяца. Использовать язык программирования C#
using System; class Program { static void Main() { Console.WriteLine("Введите количество дней, прошедших с 1 января 1990 года:"); int n = int.Parse(Console.ReadLine()); int currentMonth = 1; // начинаем с января int daysInMonth = 31; while (n > daysInMonth) { n -= daysInMonth; currentMonth++; if (currentMonth == 2) // февраль { daysInMonth = 28; if ((1990 % 4 == 0 && 1990 % 100 != 0) || 1990 % 400 == 0) // високосный год daysInMonth = 29; } else if (currentMonth == 4 || currentMonth == 6 || currentMonth == 9 || currentMonth == 11) // апрель, июнь, сентябрь, ноябрь { daysInMonth = 30; } else { daysInMonth = 31; } } string month; switch (currentMonth) { case 1: month = "Январь"; break; case 2: month = "Февраль"; break; case 3: month = "Март"; break; case 4: month = "Апрель"; break; case 5: month = "Май"; break; case 6: month = "Июнь"; break; case 7: month = "Июль"; break; case 8: month = "Август"; break; case 9: month = "Сентябрь"; break; case 10: month = "Октябрь"; break; case 11: month = "Ноябрь"; break; case 12: month = "Декабрь"; break; default: month = "Ошибка"; break; } Console.WriteLine($"Текущий месяц: {month}"); } }
А также, можно воспользоваться более простым и рациональным решением, при условии, если есть поддержка LINQ:
using System; using System.Linq; using System.Globalization; class Program { static void Main() { Console.WriteLine("Введите количество дней, прошедших с 1 января 1990 года:"); int n = int.Parse(Console.ReadLine()); DateTime date = new DateTime(1990, 1, 1).AddDays(n); string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(date.Month); Console.WriteLine($"Текущий месяц: {monthName}"); } }
class Program
{
static void Main()
{
Console.WriteLine("Введите количество дней, прошедших с 1 января 1990 года:");
int n = int.Parse(Console.ReadLine());
int currentMonth = 1; // начинаем с января
int daysInMonth = 31;
while (n > daysInMonth)
{
n -= daysInMonth;
currentMonth++;
if (currentMonth == 2) // февраль
{
daysInMonth = 28;
if ((1990 % 4 == 0 && 1990 % 100 != 0) || 1990 % 400 == 0) // високосный год
daysInMonth = 29;
}
else if (currentMonth == 4 || currentMonth == 6 || currentMonth == 9 || currentMonth == 11) // апрель, июнь, сентябрь, ноябрь
{
daysInMonth = 30;
}
else
{
daysInMonth = 31;
}
}
string month;
switch (currentMonth)
{
case 1:
month = "Январь";
break;
case 2:
month = "Февраль";
break;
case 3:
month = "Март";
break;
case 4:
month = "Апрель";
break;
case 5:
month = "Май";
break;
case 6:
month = "Июнь";
break;
case 7:
month = "Июль";
break;
case 8:
month = "Август";
break;
case 9:
month = "Сентябрь";
break;
case 10:
month = "Октябрь";
break;
case 11:
month = "Ноябрь";
break;
case 12:
month = "Декабрь";
break;
default:
month = "Ошибка";
break;
}
Console.WriteLine($"Текущий месяц: {month}");
}
}
А также, можно воспользоваться более простым и рациональным решением, при условии, если есть поддержка LINQ:
using System;using System.Linq;
using System.Globalization;
class Program
{
static void Main()
{
Console.WriteLine("Введите количество дней, прошедших с 1 января 1990 года:");
int n = int.Parse(Console.ReadLine());
DateTime date = new DateTime(1990, 1, 1).AddDays(n);
string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(date.Month);
Console.WriteLine($"Текущий месяц: {monthName}");
}
}