Дан текста на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово.
Решение:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string text = "Дан текст на русском языке. Напечатать на алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово.";
var vowels = new HashSet<char> { 'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я' };
var consonants = new Dictionary<char, int>();
foreach (char letter in text.ToLower())
{
if (char.IsLetter(letter) && !vowels.Contains(letter))
{
if (consonants.ContainsKey(letter))
{
consonants[letter]++;
}
else
{
consonants.Add(letter, 1);
}
}
}
var multipleConsonants = consonants.Where(pair => pair.Value > 1).OrderBy(pair => pair.Key);
Console.WriteLine("Звонкие согласные буквы, входящие более чем в одно слово, на алфавитном порядке:");
foreach (var pair in multipleConsonants)
{
Console.WriteLine(pair.Key);
}
}
}
Результат работы:
Звонкие согласные буквы, входящие более чем в одно слово, на алфавитном порядке:
б
в
д
з
к
л
м
н
п
р
с
т
ч
Ввести с консоли строку в формате ДД.ММ.ГГГГ. Проверьте является ли введенная строка валидной датой.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите дату в формате ДД.ММ.ГГГГ:");
string input = Console.ReadLine();
if (DateTime.TryParseExact(input, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out _))
{
Console.WriteLine("Введенная строка является валидной датой.");
}
else
{
Console.WriteLine("Введенная строка не является валидной датой.");
}
}
}
Результат работы:
Введите дату в формате ДД.ММ.ГГГГ:
29.02.2024
Введенная строка является валидной датой.
Найти количество дней между двумя датами.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите первую дату в формате ДД.ММ.ГГГГ:");
string firstDateString = Console.ReadLine();
Console.WriteLine("Введите вторую дату в формате ДД.ММ.ГГГГ:");
string secondDateString = Console.ReadLine();
if (DateTime.TryParseExact(firstDateString, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out DateTime firstDate) &&
DateTime.TryParseExact(secondDateString, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out DateTime secondDate))
{
TimeSpan difference = secondDate - firstDate;
int daysDifference = (int)difference.TotalDays;
Console.WriteLine($"Количество дней между двумя датами: {daysDifference} дней.");
}
else
{
Console.WriteLine("Одна из введенных строк не является валидной датой.");
}
}
}
Результат работы:
Введите первую дату в формате ДД.ММ.ГГГГ:
15.02.2024
Введите вторую дату в формате ДД.ММ.ГГГГ:
23.02.2024
Количество дней между двумя датами: 8 дней.
Найти количество часов между двумя датами.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите первую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:");
string inputDate1 = Console.ReadLine();
Console.WriteLine("Введите вторую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:");
string inputDate2 = Console.ReadLine();
string format = "dd.MM.yyyy HH:mm";
DateTime date1;
DateTime date2;
if (DateTime.TryParseExact(inputDate1, format, null, System.Globalization.DateTimeStyles.None, out date1) &&
DateTime.TryParseExact(inputDate2, format, null, System.Globalization.DateTimeStyles.None, out date2))
{
TimeSpan difference = date2 - date1;
int hoursDifference = (int)difference.TotalHours;
Console.WriteLine($"Количество часов между двумя датами: {hoursDifference} часов.");
}
else
{
Console.WriteLine("Неверный формат введенных дат.");
}
}
}
Результат работы:
11.12.2023 11:05
Введите вторую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:
13.12.2024 00:04
Количество часов между двумя датами: 8820 часов.
Найти количество минут между двумя датами.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите первую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:");
string inputDate1 = Console.ReadLine();
Console.WriteLine("Введите вторую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:");
string inputDate2 = Console.ReadLine();
string format = "dd.MM.yyyy HH:mm";
DateTime date1;
DateTime date2;
if (DateTime.TryParseExact(inputDate1, format, null, System.Globalization.DateTimeStyles.None, out date1) &&
DateTime.TryParseExact(inputDate2, format, null, System.Globalization.DateTimeStyles.None, out date2))
{
TimeSpan difference = date2 - date1;
int minutesDifference = (int)difference.TotalMinutes;
Console.WriteLine($"Количество минут между двумя датами: {minutesDifference} минут.");
}
else
{
Console.WriteLine("Неверный формат введенных дат.");
}
}
}
Результат работы:
Введите первую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:
29.01.2024 19:50
Введите вторую дату в формате ДД.ММ.ГГГГ ЧЧ:мм:
04.02.2024 21:05
Количество минут между двумя датами: 8715 минут.
Найти "день программиста" (256-й день в году) для указанного года (ввести с консоли). Вывести дату и день недели.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите год:");
int year;
if (!int.TryParse(Console.ReadLine(), out year))
{
Console.WriteLine("Некорректный ввод года.");
return;
}
// Проверяем, является ли год високосным
bool isLeapYear = DateTime.IsLeapYear(year);
// Создаем дату для 256-го дня года
DateTime programmerDay = new DateTime(year, 1, 1).AddDays(255 + (isLeapYear ? 1 : 0));
Console.WriteLine($"День программиста для {year} года: {programmerDay:dd.MM.yyyy}");
Console.WriteLine($"День недели: {programmerDay.DayOfWeek}");
}
}
Результат работы:
Введите год:
2024
День программиста для 2024 года: 13.09.2024
День недели: Friday
Известен номер n некоторого дня года (1 ≤ n ≤ 365). Определить номер и название дня недели, на который выпадает данный день года.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите номер дня в году (1-365):");
int dayOfYear;
if (!int.TryParse(Console.ReadLine(), out dayOfYear) || dayOfYear < 1 || dayOfYear > 365)
{
Console.WriteLine("Некорректный ввод номера дня в году.");
return;
}
// Создаем дату для указанного дня года
DateTime date = new DateTime(DateTime.Now.Year, 1, 1).AddDays(dayOfYear - 1);
Console.WriteLine($"Номер дня недели: {(int)date.DayOfWeek + 1}");
Console.WriteLine($"Название дня недели: {date.DayOfWeek}");
}
}
Результат работы:
Введите номер дня в году (1-365):
200
Номер дня недели: 5
Название дня недели: Thursday
Задана дата экзамена. С клавиатуры надо вводить другую дату, в случае, если дата раньше даты экзамена, вывести "осталось n дней", если уже прошел экзамен "прошло n дней", и если экзамен сегодня "сегодня экзамен!"
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите дату экзамена в формате ГГГГ-ММ-ДД:");
DateTime examDate;
if (!DateTime.TryParse(Console.ReadLine(), out examDate))
{
Console.WriteLine("Некорректный ввод даты экзамена.");
return;
}
Console.WriteLine("Введите текущую дату в формате ГГГГ-ММ-ДД:");
DateTime currentDate;
if (!DateTime.TryParse(Console.ReadLine(), out currentDate))
{
Console.WriteLine("Некорректный ввод текущей даты.");
return;
}
if (currentDate < examDate)
{
TimeSpan remainingDays = examDate - currentDate;
Console.WriteLine($"Осталось {remainingDays.Days} дней до экзамена.");
}
else if (currentDate > examDate)
{
TimeSpan passedDays = currentDate - examDate;
Console.WriteLine($"Прошло {passedDays.Days} дней после экзамена.");
}
else
{
Console.WriteLine("Сегодня экзамен!");
}
}
}
Результат работы:
Введите дату экзамена в формате ГГГГ-ММ-ДД:
2024-06-27
Введите текущую дату в формате ГГГГ-ММ-ДД:
2024-02-29
Осталось 119 дней до экзамена.
Вывести дату в формате ДД.ММ.ГГГГ для "завтра"
Решение:
using System;
class Program
{
static void Main()
{
DateTime tomorrow = DateTime.Today.AddDays(1);
string formattedDate = tomorrow.ToString("dd.MM.yyyy");
Console.WriteLine($"Дата завтрашнего дня в формате ДД.ММ.ГГГГ: {formattedDate}");
}
}
Результат работы:
Дата завтрашнего дня в формате ДД.ММ.ГГГГ: 01.03.2024
Задан день и месяц рождения в формате dd.mm. Определите, сколько дней осталось/прошло с дня рождения. Если сегодня - день рождения, то вывести поздравление.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите день и месяц рождения (в формате dd.mm):");
string input = Console.ReadLine();
DateTime today = DateTime.Today;
int currentYear = today.Year;
// Парсим введенную дату рождения
if (DateTime.TryParseExact(input, "dd.MM", null, System.Globalization.DateTimeStyles.None, out DateTime birthday))
{
birthday = birthday.AddYears(currentYear - birthday.Year); // Устанавливаем год рождения равным текущему
if (birthday < today)
{
birthday = birthday.AddYears(1); // Если день рождения уже прошел в текущем году, устанавливаем на следующий год
}
TimeSpan daysUntilBirthday = birthday - today;
if (daysUntilBirthday.Days == 0)
{
Console.WriteLine("С днем рождения! Поздравляем!");
}
else
{
Console.WriteLine($"До дня рождения осталось {daysUntilBirthday.Days} дней.");
}
}
else
{
Console.WriteLine("Некорректный формат ввода. Пожалуйста, введите день и месяц в формате dd.mm.");
}
}
}
Результат работы:
Введите день и месяц рождения (в формате dd.mm):
15.05
До дня рождения осталось 76 дней.
Часы показывают время в формате hh:mm:ss. Определите количество секунд, которое прошло с начала суток.
Решение:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Введите текущее время в формате hh:mm:ss:");
string input = Console.ReadLine();
if (DateTime.TryParseExact(input, "HH:mm:ss", null, System.Globalization.DateTimeStyles.None, out DateTime time))
{
int secondsPassed = time.Hour * 3600 + time.Minute * 60 + time.Second;
Console.WriteLine($"С начала суток прошло {secondsPassed} секунд.");
}
else
{
Console.WriteLine("Некорректный формат времени. Пожалуйста, введите время в формате hh:mm:ss.");
}
}
}
Результат работы:
Введите текущее время в формате hh:mm:ss:
00:43:32
С начала суток прошло 2612 секунд.
Задан неупорядоченный список дат в формате ДД.ММ.ГГГГ, найти ближайшую (к сегодняшнему дню) дату из списка.
Решение:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Console.WriteLine("Введите список дат через запятую в формате ДД.ММ.ГГГГ:");
string input = Console.ReadLine();
string[] dateStrings = input.Split(',');
List<DateTime> dates = new List<DateTime>();
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString.Trim(), "dd.MM.yyyy", null, System.Globalization.DateTimeStyles.None, out DateTime date))
{
dates.Add(date);
}
else
{
Console.WriteLine($"Дата {dateString} имеет некорректный формат и будет пропущена.");
}
}
DateTime today = DateTime.Today;
DateTime closestDate = dates[0];
TimeSpan closestDifference = closestDate - today;
foreach (DateTime date in dates)
{
TimeSpan difference = date - today;
if (Math.Abs(difference.TotalDays) < Math.Abs(closestDifference.TotalDays))
{
closestDate = date;
closestDifference = difference;
}
}
Console.WriteLine($"Ближайшая дата к сегодняшнему дню: {closestDate.ToString("dd.MM.yyyy")}");
}
}
Результат работы:
26.12.2023,27.02.2024,20.02.2024,15.09.2022
Ближайшая дата к сегодняшнему дню: 27.02.2024
Задан неупорядоченный список дней рождений в формате ДД.ММ.ГГГГ. Вывести упорядоченный список месяцев с количеством дней рождений в этом месяце.
Решение:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string[] birthdays = { "15.05.1990", "22.03.1985", "10.05.1992", "03.07.1978", "18.03.1990" };
Dictionary<int, int> monthCount = new Dictionary<int, int>();
foreach (var birthday in birthdays)
{
DateTime date = DateTime.ParseExact(birthday, "dd.MM.yyyy", null);
int month = date.Month;
if (monthCount.ContainsKey(month))
{
monthCount[month]++;
}
else
{
monthCount[month] = 1;
}
}
foreach (var kvp in monthCount)
{
Console.WriteLine($"Месяц: {kvp.Key}, количество дней рождений: {kvp.Value}");
}
}
}
Результат работы:
Месяц: 5, количество дней рождений: 2
Месяц: 3, количество дней рождений: 2
Месяц: 7, количество дней рождений: 1
Поиск наиболее популярного месяца: объявите массив произвольных дат в формате ДД.ММ.ГГГГ. Найдите самый популярный месяц.
Решение:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string[] dates = { "15.03.2023", "22.06.2023", "10.03.2023", "05.03.2023", "18.06.2023", "12.06.2023", "25.03.2023" };
List<DateTime> parsedDates = new List<DateTime>();
foreach (string date in dates)
{
if (DateTime.TryParseExact(date, "dd.MM.yyyy", null, System.Globalization.DateTimeStyles.None, out DateTime parsedDate))
{
parsedDates.Add(parsedDate);
}
else
{
Console.WriteLine($"Дата {date} имеет некорректный формат и будет пропущена.");
}
}
var groupedByMonth = parsedDates.GroupBy(d => d.Month)
.OrderByDescending(g => g.Count());
var mostPopularMonth = groupedByMonth.First();
string monthName = new DateTime(1, mostPopularMonth.Key, 1).ToString("MMMM");
int count = mostPopularMonth.Count();
Console.WriteLine($"Самый популярный месяц: {monthName}, количество дат: {count}");
}
}
Результат работы:
Самый популярный месяц: март, количество дат: 4
Пятница, 13-е. Докажите, что 13-е число месяца чаще всего приходится на пятницу. Напишите программу, которая выводит на экран 7 чисел: вероятности выпадения 13 числа каждого месяца на понедельник, вторник, среду, четверг, пятницу, субботу, воскресенье.
Решение:
using System;
class Program
{
static void Main()
{
int totalDays = 0;
int friday13Count = 0;
int[] daysOfWeekCount = new int[7];
for (int year = 2000; year <= 2030; year++) // Проверяем период с 2000 по 2030 год
{
for (int month = 1; month <= 12; month++) // Проверяем каждый месяц
{
int daysInMonth = DateTime.DaysInMonth(year, month);
totalDays += daysInMonth;
DateTime thirteenthDay = new DateTime(year, month, 13);
DayOfWeek dayOfWeek = thirteenthDay.DayOfWeek;
if (dayOfWeek == DayOfWeek.Friday)
{
friday13Count++;
}
daysOfWeekCount[(int)dayOfWeek]++;
}
}
Console.WriteLine("Вероятности выпадения 13 числа каждого месяца на:");
string[] dayNames = Enum.GetNames(typeof(DayOfWeek));
for (int i = 0; i < daysOfWeekCount.Length; i++)
{
double probability = (double)daysOfWeekCount[i] / totalDays;
Console.WriteLine($"{dayNames[i]}: {probability:P}");
}
double friday13Probability = (double)friday13Count / totalDays;
Console.WriteLine($"Вероятность выпадения 13 числа на пятницу: {friday13Probability:P}");
}
}
Результат работы:
Вероятности выпадения 13 числа каждого месяца на:
Sunday: 0,47 %
Monday: 0,46 %
Tuesday: 0,47 %
Wednesday: 0,48 %
Thursday: 0,48 %
Friday: 0,47 %
Saturday: 0,47 %
Вероятность выпадения 13 числа на пятницу: 0,47 %
На одном из московских вокзалов билеты продают N касс. Каждая касса работает без перерыва определенный промежуток времени по фиксированному расписанию. Требуется определить, в какой промежуток времени работает наибольшее количество касс. (на входе в программу строка вида 00:00-01:00,00:30-02:30,...)
Решение:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string input = "00:00-01:00,00:30-02:30,01:30-03:00,02:00-04:00"; // Пример входных данных
string[] schedules = input.Split(',');
Dictionary<int, int> timeCounts = new Dictionary<int, int>();
foreach (string schedule in schedules)
{
string[] parts = schedule.Split('-');
string startTimeStr = parts[0];
string endTimeStr = parts[1];
DateTime startTime = DateTime.ParseExact(startTimeStr, "HH:mm", null);
DateTime endTime = DateTime.ParseExact(endTimeStr, "HH:mm", null);
for (DateTime time = startTime; time < endTime; time = time.AddMinutes(30))
{
int hour = time.Hour;
if (!timeCounts.ContainsKey(hour))
{
timeCounts[hour] = 0;
}
timeCounts[hour]++;
}
}
int maxCount = 0;
int maxHour = 0;
foreach (var pair in timeCounts)
{
if (pair.Value > maxCount)
{
maxCount = pair.Value;
maxHour = pair.Key;
}
}
Console.WriteLine($"Наибольшее количество касс работает в промежуток времени с {maxHour}:00 до {maxHour + 1}:00.");
}
}
Результат работы:
Наибольшее количество касс работает в промежуток времени с 2:00 до 3:00.
Для заданного года посчитайте количество выходных дней в этом году (то есть количество суббот и воскресений).
Решение:
using System;
class Program
{
static void Main()
{
int year = 2022; // Заданный год
int countWeekends = CountWeekends(year);
Console.WriteLine($"Количество выходных дней в {year} году: {countWeekends}");
}
static int CountWeekends(int year)
{
int countWeekends = 0;
DateTime startDate = new DateTime(year, 1, 1);
DateTime endDate = new DateTime(year, 12, 31);
for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
{
if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday)
{
countWeekends++;
}
}
return countWeekends;
}
}
Результат работы:
Количество выходных дней в 2022 году: 105