courses:programming:extra_tasks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
courses:programming:extra_tasks [2020/08/27 09:51]
127.0.0.1 external edit
courses:programming:extra_tasks [2022/12/10 09:08] (current)
Line 1: Line 1:
 ====== Дополнительные задачи по программированию ====== ====== Дополнительные задачи по программированию ======
 +
 +===== Легенда =====
 +
 +  * <color green>​3</​color>​ -- простые задачи
 +  * <color blue>​4</​color>​ -- задачи средней сложности
 +  * <color red>​5</​color>​ -- более сложные задачи
 + 
 +===== Задачи =====
  
   * <color green>​3</​color>​ Написать программу,​ которая выводит строку "HELLO WORLD!"​ на консоль.   * <color green>​3</​color>​ Написать программу,​ которая выводит строку "HELLO WORLD!"​ на консоль.
Line 41: Line 49:
  
 Строки:​ Строки:​
-  * Определить длину строки,​ введенной пользователем. +  * <color green>​3</​color> ​Определить длину строки,​ введенной пользователем. 
-  * Найти разницу между числом строчных и прописных (заглавных) букв в строке. +  * <color blue>​4</​color> ​Найти разницу между числом строчных и прописных (заглавных) букв в строке. 
-  * Дана строка состоящая из букв и цифр (считается,​ что больше одной цифры подряд идти не может). Требуется посчитать сумму этих цифр. +  * <color blue>​4</​color> ​Дана строка состоящая из букв и цифр (считается,​ что больше одной цифры подряд идти не может). Требуется посчитать сумму этих цифр. 
-  * Дана строка состоящая из букв и цифр Требуется сформировать и вывести новую строку,​ состоящую только из этих цифр, разделенных пробелами. +  * <color blue>​4</​color> ​Дана строка состоящая из букв и цифр Требуется сформировать и вывести новую строку,​ состоящую только из этих цифр, разделенных пробелами. 
-  * Поменять местами слова в строке,​ состоящей из двух слов. +  * <color blue>​4</​color> ​Поменять местами слова в строке,​ состоящей из двух слов. 
-  * Вводится строка,​ представляющая собой некоторое слово. Требуется определить,​ является ли это слово палиндромом - одинаково читающимся в обоих направлениях. (Saippuakivikauppias - слово палиндром) +  * <color blue>​4</​color> ​Добавить в строку пробелы после знаков препинания,​ если они там отсутствуют. 
-  * Добавить в строку пробелы после знаков препинания,​ если они там отсутствуют. +  * <color blue>​4</​color> ​Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке. 
-  * Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке. +  * <color blue>​4</​color> ​Найти слово, стоящее в тексте под определенным номером,​ и вывести его первую букву. 
-  * Найти слово, стоящее в тексте под определенным номером,​ и вывести его первую букву. +  * <color blue>​4</​color> ​Подсчитать количество слов во введенной пользователем строке. Для упрощения задачи считать,​ что слова разделяются исключительно одним пробелом,​ а первый и последний символы строки не являются пробелами. 
-  * Подсчитать количество слов во введенной пользователем строке. Для упрощения задачи считать,​ что слова разделяются исключительно одним пробелом,​ а первый и последний символы строки не являются пробелами. +  * <color blue>​4</​color> ​Во введенной строке удалить все символы между первым и вторым вопросительным знаком. Сами знаки в троке оставить 
-  * Во введенной строке удалить все символы между первым и вторым вопросительным знаком. Сами знаки в троке оставить +  * <color blue>​4</​color> ​Дана строка. Определите процентное отношение строчных и прописных букв к общему числу символов в ней. 
-  * Дана строка. Определите процентное отношение строчных и прописных букв к общему числу символов в ней. +  * <color blue>​4</​color> ​Написать функцию int mystrlen(char *); вычисляющую длину переданной ей строки
-  * Написать функцию int mystrlen(char *); вычисляющую длину переданной ей строки+
  
-**Линейный односвязный список**+ 
 +  ​<color blue>​4</​color>​ На вход программе подается число n, х, а после - n целых чисел, являющиеся коэффициентами многочлена степени n. Коэффициенты заданы по убыванию степеней. Треуется вычислить и вывести на экран значение многочлена в точке х. 
 + 
 +**<color red>​5</​color>​ Встреча с Римлянами** 
 + 
 +Попав в 500 год до нашей эры, вы столкнулись с необходимостью перевести число, записанное арабскими цифрами в число, записанное [[https://​ru.wikipedia.org/​wiki/​%D0%A0%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%D0%B5_%D1%86%D0%B8%D1%84%D1%80%D1%8B|римскими цифрами]] 
 + 
 +Напишите программу,​ которая переводит число (<=3000) из арабской записи в римскую. 
 + 
 +Примеры
 + 
 +1994 -> MCMXCIV 
 + 
 +123 -> CXXIII 
 + 
 + 
 + 
 +**<color red>​5</​color>​ Часы** 
 + 
 +Представьте обычные цифровые часы, время на которых отображается на 7-ми сегментных индикаторах с учетом ведущего нуля. Например,​ 9:30 на таких часах отображается так: 
 +{{courses:​programming:​screenshot_from_2017-03-07_11-03-10.png?​150|}} 
 + 
 +Числа отображатся следующим образом:​ 
 + 
 +{{courses:​programming:​screenshot_from_2017-03-07_11-03-22.png?​400|}} 
 + 
 +Требуется написать программу,​ на вход которой подается целое число n, обозначающее количество зажженных сегментов в отображении некого времени. Програма должна по этому числу востановить время, которое отображается на часах. Время должно быть корректным (подразумевается 24 формат представления времени). Если это невозможно,​ программа должна вывести "​Impossible"​. Если может быть несколько вариантов корректного времени,​ вывести любой
 + 
 +Примеры:​ 
 + 
 + ​Вход:​ 23 
 + 
 + ​Выход:​ 09:30 
 + 
 + ​Вход:​ 28 
 + 
 + ​Выход:​ Impossible 
 + 
 + ​Вход:​ 2 
 + 
 + ​Выход:​ Impossible 
 + 
 +**<color red>​5</​color>​ Могила** 
 + 
 +Территория некоторого кладбища имеет ровную прямоугольную форму. На нем (не выходя за его границы) расположена прямоугольная церковь. Требуется определить, хватит ли на кладбище места для прямоугольной могилы?​ могила может ​касаться границы кладбища и/или церкви,​ но не должна перекрывать их. 
 + 
 +На вход программе подаются 10 чисел:​ 
 + 
 +сначала ​**x1**, **y1**, **x2**, **y2** - координаты левого нижнего и правого верхнего углов гладбища  
 + 
 +после **x1**, **y1**, **x2**, **y2** - координаты левого нижнего и правого верхнего углов церкви 
 + 
 +а потом **w** и **h** - ширина и высота могилы. Сторона длины **w** должна располагаться вдоль оси OX, а сторона длины **h** - вдоль оси OY 
 + 
 +Программа должна вывести "​Yes",​ если место имеется и "​No"​ в проиивном случае. 
 + 
 +Пример:​ 
 + 
 +{{courses:​programming:​screenshot_from_2017-03-07_11-37-39.png?​400|}} 
 + 
 +Вход: 
 + 
 +1 1 11 8 
 + 
 +2 3 8 6 
 + 
 +3 2 
 + 
 +Выход:​ 
 + 
 +Yes 
 + 
 +Вход: 
 + 
 +1 1 11 8 
 + 
 +2 3 8 6 
 + 
 +4 3 
 + 
 +Выход:​ 
 + 
 +No 
 + 
 +**<color red>​5</​color>​ Углы углы углы** 
 + 
 +Даны **n** попарно различных точек на плоскости с целыми координатами до 10^6 по абсолютной величине. Требуется найти среди этих точек две точки **A** и **B** такие, что угол **AOB** минимальный. **O** – центр координат. 
 + 
 +**<color red>​5</​color>​ Делим пространство** 
 + 
 +Дан набор прямых линий на плоскости (прямая может задаваться уравнением прямой или с помощью двух точек - на ваш выбор),​ которые могут пересекаться. Найти количество областей,​ на которые они разбивают плоскость. 
 + 
 +**<color red>​4</​color>​ Задачи на структуры** 
 +В задачах подразумевается,​ что хранения связных данных (данных об одном логическом объекте) будет осуществляться с помощью типа struct. 
 +  * На вход программе подается число n, а после - n пар <​Название журнала>​ <​цена>​. Следует полагать,​ что название не содержит пробельные символы. Требуется сохранить данные в массив и вывести информацию о журналах с ценой выше 100. 
 +  * На вход программе подается число n, а после - n пар <​Название журнала>​ <​цена>​. Следует полагать,​ что название не содержит пробельные символы. Требуется создать и заполнить еще один массив теми журналами,​ стоимость которых меньше 30 
 + 
 + 
 +===== Линейный односвязный список =====
  
 **Структуры:​ ** **Структуры:​ **
Line 83: Line 188:
   * Подумать как можно реализовать удаление n-го элемента списка. ​ (int remove(struct node *root, int n);)   * Подумать как можно реализовать удаление n-го элемента списка. ​ (int remove(struct node *root, int n);)
  
-**Бинарное дерево поиска**+===== Бинарное дерево поиска ​=====
  
 Подробнее,​ например,​ [[https://​en.wikipedia.org/​wiki/​Binary_search_tree|тут]] Подробнее,​ например,​ [[https://​en.wikipedia.org/​wiki/​Binary_search_tree|тут]]
Line 121: Line 226:
 </​code>​ </​code>​
  
-** Пример на обзор txt файлов во вложенных папках:**+===== Пример на обзор txt файлов во вложенных папках ​===== 
 + 
 <code c dir-list.c>​ <code c dir-list.c>​
 #include <​stdio.h>​ #include <​stdio.h>​
courses/programming/extra_tasks.1598521897.txt.gz · Last modified: 2022/12/10 09:08 (external edit)