-
Автор темы
- #1
Всем привет! Недавно я создал тему для ваших идей по контенту раздела "Расширенное программирование" стоящих идей так и не поступило, но один мой друг попросил помочь с решением нескольких олимпиадных задач по информатике (в поддерживаемых языках не было Delphi, который является его основным яп). И я решил, что буду регулярно выкладывать решения предложенных вами задач (задачи можно присылать в тему под личный хайд), но, поскольку я решил лишь задачи друга, выложу их.
1. Ночные заморозки
Условие
Метеорологическая станция ведет наблюдения за температурой воздуха. Синоптиков интересует, сколько дней длилась самая продолжительная оттепель. Оттепелью они называют период, в который среднесуточная температура ежедневно превышала 0 градусов Цельсия.
Напишите программу, помогающую синоптикам в работе.
Формат входных данных
Во входном файле сначала записано число N – общее количество рассматриваемых дней (1 ≤ N ≤ 100). В следующей строке через пробел располагается N целых чисел, разделенных пробелами. Каждое число – среднесуточная температура в соответствующий день. Температуры – целые числа и лежат диапазоне от -50 до 50.
Формат выходных данный
В выходной файл требуется вывести одно число – длину самой продолжительной оттепели, то есть наибольшее количество последовательных дней, на протяжении которых среднесуточная температура превышала 0 градусов. Если температура в каждый из дней была неположительной, выведите 0.
Решение (С#)
2. Числа Цукермана
Условие
Число Цукамерна - натуральное число, которое делится на произведение своих цифр, например 175 делится на 1*7*5=35.
Составить программу, которая выводит на экран все трёхзначные числа Цукамерна.
Формат входных данных
Входной файл содержит натуральное число N, N <= 1000
Формат выходных данных
Выходной файл содержит строку чисел через пробел
Решение (C#)
3. Кормушка
Условие
К кормушке прилетели воробьи, синицы, снегири и вороны. Мальчик посчитал количество птиц каждого вида.
Напишите программу, которая запрашивает четыре числа – количество птиц каждого вида, а затем сообщает общее число птиц у кормушки, дописывая к числовому значению слово «птица» в правильной форме. Например, 33 птицы, 11 птиц, 21 птица.
Входные данные
Входной файл содержит 4 натуральных числа А,В,C,D ( А,В,С,D <=100).
Выходные данные
Выходной файл содержит сумму переменных А,В,C,D и слово «птица» с согласованным окончанием.
Решение (C#)
4. Домашнее задание
Условие
Ученик, выполняя письменное домашнее задание по английскому языку, комментирует его. Записывая в тетрадь слова строчными буквами, он произносит фразу "уже встречалась" каждый раз, когда пишет букву, которая уже встречалась в слове раньше.
Составьте программу, которая определяет, длину слова и сколько раз ученик произнесет фразу "уже встречалась" .
Формат входных данных
Во входном файле записано слово латинскими строчными буквами, длина которого не превышает 255 символов.
Формат выходных данных
В выходной файл в первой строке выводится длина слова. Во второй строке - число повторяющихся букв.
Решение (C#)
Предложить задачу для решения можно в теме под личный хайд или же в личные сообщения на форуме/ВК
Тема для идей по "Расширенному программированию" : https://yougame.biz/threads/103295/
1. Ночные заморозки
Условие
Метеорологическая станция ведет наблюдения за температурой воздуха. Синоптиков интересует, сколько дней длилась самая продолжительная оттепель. Оттепелью они называют период, в который среднесуточная температура ежедневно превышала 0 градусов Цельсия.
Напишите программу, помогающую синоптикам в работе.
Формат входных данных
Во входном файле сначала записано число N – общее количество рассматриваемых дней (1 ≤ N ≤ 100). В следующей строке через пробел располагается N целых чисел, разделенных пробелами. Каждое число – среднесуточная температура в соответствующий день. Температуры – целые числа и лежат диапазоне от -50 до 50.
Формат выходных данный
В выходной файл требуется вывести одно число – длину самой продолжительной оттепели, то есть наибольшее количество последовательных дней, на протяжении которых среднесуточная температура превышала 0 градусов. Если температура в каждый из дней была неположительной, выведите 0.
Решение (С#)
Код:
static void Main(string[] args)
{
string N = Console.ReadLine(); // Получаем количество исследуемых дней. Честно говоря, я не знаю, зачем в условии нужна эта переменная
String[] EachDay = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Делим следующую строку на массив EachDay, разделяя пробелами
int Max = 0; // Переменная итогового количества повторяющихся дней
int Max1 = 0; // Переменная промежуточного количества дней
for (int i = 0; i < EachDay.Length; i++) // Цикл с перебором всех элементов массива
{
if (Convert.ToInt32(EachDay[i]) > 0) // Увеличение Max1 на единицу при температуре больше 0 градусов
Max1++;
else // Если температура меньше нуля или 0, то заносим значение Max1 в Max (если Max < Max1) и сбрасываем значение Max
{
if (Max < Max1)
{
Max = Max1;
Max1 = 0;
}
}
if(i == (EachDay.Length - 1)) // Проверка на перебор последнего символа (если температура каждого дня будет > 0)
Max = Max1;
}
Console.WriteLine("\n"); // Делаем отступ в одну строку, чтобы все числа не сливались
Console.WriteLine(Max); // Выводим ответ
Console.ReadKey(); // Считываем нажатие любой клавиши, чтобы консоль не закрывалась
}
2. Числа Цукермана
Условие
Число Цукамерна - натуральное число, которое делится на произведение своих цифр, например 175 делится на 1*7*5=35.
Составить программу, которая выводит на экран все трёхзначные числа Цукамерна.
Формат входных данных
Входной файл содержит натуральное число N, N <= 1000
Формат выходных данных
Выходной файл содержит строку чисел через пробел
Решение (C#)
Код:
static void Main(string[] args)
{
string N = Console.ReadLine(); // Считываем ненужную переменную, обязательную в условии
int Num = 100; // Первое трехзначное число, с которого мы начинаем отсчет
string Nums = ""; // Переменная со всеми итоговыми числами
for (; Num < 1000; Num++) // Перебираем все трехзначные числа
{
int E = Num % 10; // Находим количество единиц в числе
int D = ((Num % 100) - E) // Находим количество десятков
int S = Num / 100 // Находим количество сотен
int EDS = E*D*S // Находим произведение всех цифр
if (EDS != 0) // Проверка на деление числа Num на 0
continue;
if (Num % EDS == 0) // Итоговое сравнение
Nums += (Num + " ");
}
Console.WriteLine(Nums); // Вывод итогового результата
Console.ReadKey(); // Чтобы консоль не закрывалась (Аналог System("pause"))
}
3. Кормушка
Условие
К кормушке прилетели воробьи, синицы, снегири и вороны. Мальчик посчитал количество птиц каждого вида.
Напишите программу, которая запрашивает четыре числа – количество птиц каждого вида, а затем сообщает общее число птиц у кормушки, дописывая к числовому значению слово «птица» в правильной форме. Например, 33 птицы, 11 птиц, 21 птица.
Входные данные
Входной файл содержит 4 натуральных числа А,В,C,D ( А,В,С,D <=100).
Выходные данные
Выходной файл содержит сумму переменных А,В,C,D и слово «птица» с согласованным окончанием.
Решение (C#)
Код:
static void Main(string[] args)
{
String[] EachBird = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Считываем количество каждых птиц
int Birds = EachBird[0] + EachBird[1] + EachBird[2] + EachBird[3]; // Складываем их и заносим в переменную Birds
string Word = "птиц"; // Создаем переменную для согласования окончания слова
switch(Birds % 10) // Создаем switch для значений последней цифры Birds
{
case 1:
Word += "а";
break;
case 2: // Case для значений от 2 до 4
case 3:
case 4:
Word += "ы";
}
Console.WriteLine(Birds + " " + Word); // Выводим итоговый ответ
Console.ReadKey(); // Чтобы окно не закрывалось
}
4. Домашнее задание
Условие
Ученик, выполняя письменное домашнее задание по английскому языку, комментирует его. Записывая в тетрадь слова строчными буквами, он произносит фразу "уже встречалась" каждый раз, когда пишет букву, которая уже встречалась в слове раньше.
Составьте программу, которая определяет, длину слова и сколько раз ученик произнесет фразу "уже встречалась" .
Формат входных данных
Во входном файле записано слово латинскими строчными буквами, длина которого не превышает 255 символов.
Формат выходных данных
В выходной файл в первой строке выводится длина слова. Во второй строке - число повторяющихся букв.
Решение (C#)
Код:
static void Main(string[] args)
{
string Word = Console.ReadLine(); // Получаем входное слово
int Symbols = Word.Length; // Находим длину слова
int Repeat = 0; // Переменная с количеством повторяющихся символов
for (int i = 0; i < Symbols; i++) // Перебираем все индексы символов Word для переменной i
{
for (int j = 1; j < Symbols; j++) // Перебираем индексы символов Word уже для переменной j
{
if (Word[i] == Word[j]) // Сравнение символов c переменными i и j. При их равенстве, увеличиваем Repeat
Repeat++;
}
}
Console.WriteLine(Symbols + "\n" + Repeat); // Вывод итогового результата
Console.ReadKey(); // Оставляем консоль открытой
}
Предложить задачу для решения можно в теме под личный хайд или же в личные сообщения на форуме/ВК
Тема для идей по "Расширенному программированию" : https://yougame.biz/threads/103295/
Последнее редактирование: