Меню

Задача по программированию кролики

Задача по программированию кролики

Устав от участия в раундах на Codeforces, Гильдонг решил отдохнуть в парке. Он присел на лавку, и заметил двух кроликов, прыгающих поблизости.

Он заметил, что два кролика прыгали навстречу друг другу . Позиции двух кроликов можно задать целочисленными координатами на горизонтальной прямой. Более высокий кролик изначально находится в точке с координатой $$$x$$$, а более низкий — в точке с координатой $$$y$$$ ($$$x \lt y$$$). Каждую секунду, каждый кролик прыгает на другую позицию. Более высокий кролик прыгает в положительном направлении на $$$a$$$, а более низкий прыгает в отрицательном направлении на $$$b$$$.

Например, если $$$x=0$$$, $$$y=10$$$, $$$a=2$$$, и $$$b=3$$$. После $$$1$$$-й секунды, кролики будут в точках $$$2$$$ и $$$7$$$. После $$$2$$$-й секунды, оба кролика будет в точке $$$4$$$.

Гильдонг задумался: Будут ли когда-то два кролика в одной точке в один момент времени ? Если будут, то через какое время это произойдет? Помогите ему найти такую секунду, после которой оба кролика будут в одной точке.

Каждый тест состоит из одного или более наборов входных данных. В первой строке записано количество наборов входных данных $$$t$$$ ($$$1 \le t \le 1000$$$).

Каждый набор входных данных состоит из ровно одной строки. Строка состоит из четырех целых чисел $$$x$$$, $$$y$$$, $$$a$$$, $$$b$$$ ($$$0 \le x \lt y \le 10^9$$$, $$$1 \le a,b \le 10^9$$$) — текущая позиция более высокого кролика, текущая позиция более низкого кролика, расстояние прыжка более высокого прыжка, расстояние прыжка более низкого кролика, соответственно.

Для каждого набора входных данных, выведите одно целое число — количество секунд, через которое два кролика окажутся в одной точке.

Если два кролика никогда не окажутся в одной точке одновременно, выведите $$$-1$$$.

Источник

Задача «Кролики»

Помогите пожалуйста решить задачу на языке СИ
Предположим, что некоторое число кроликов рассажены в клетках. Если число кроликов больше, чем число клеток, то хотя бы в одной из клеток будет больше одного кролика.

В данной задаче мы рассмотрим более общий случай этого классического математического факта. Пусть есть n клеток и m зайцев, которых рассадили по этим клеткам. Вам требуется расcчитать максимальное количество зайцев, которое гарантированно окажется в одной клетке.

Формат входных данных
В первой строке входного файла записаны два натуральных числа n и m. (1 ≤ n, m ≤ 10 в 9 степени).

Формат выходных данных
В выходной файл выведите ответ на задачу.

Создать запись «Двигатель», которая содержит элементы «Название», «Мощность», «Скорость», «Цена»
Создать запись «Двигатель», которая содержит элементы «Название», «Мощность», «Скорость».

Ввести структуру «историческое событие» с полями «число», «месяц», «год», «событие»
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и.

«Перевернуть» в строке все слова (Например: «Жили были» в «илиЖ илыб»)
«Перевернуть» в строке все слова. (Например: «Жили были дед и баба» — «илиЖ илиб дед и абаб»)

Источник

Задача о кроликах

Задача Фибоначчи о кроликах
Напишите программу нахождения количества кроликов через k месяцев, используя рекурсивную функцию.

Задача об умирающих кроликах Фибоначчи
Здравствуйте! Имеется задача о кроликах Фибоначчи, но в отличие от классической задачи, кролики.

Задача «Задача о Кроликах»
В загородку поместили двух новорожденных кроликов. Кролики готовы к размножению через месяц, и.

В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве. Найти наиболее старого кролика
В бинарном файле хранятся сведения о кроликах, содержащихся в хозяйстве: пол (m/f), возраст (в.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько.

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный.

Задача: В некотором государстве ввели компьютерный паспорт гражданина.(задача)
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных.

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому.

Олимпиадная задача по программированию. PascalABC.NET. Задача С. Считалка
Ирочка попросила маму придумать новую считалочку. Мама тут же ей «выдала». Пусть в кругу N.

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он.

Источник

Динамическое программирование на примере олимпиадной задачи «Зайчик»

Задача взята с acmp.ru (Время: 1 сек. Память: 16 Мб Сложность: 55%)

В нашем зоопарке появился заяц. Его поместили в клетку, и чтобы ему не было скучно, директор зоопарка распорядился поставить в его клетке лесенку. Теперь наш зайчик может прыгать по лесенке вверх, перепрыгивая через ступеньки. Лестница имеет определенное количество ступенек N. Заяц может одним прыжком преодолеть не более К ступенек. Для разнообразия зайчик пытается каждый раз найти новый путь к вершине лестницы. Директору любопытно, сколько различных способов есть у зайца добраться до вершины лестницы при заданных значениях K и N. Помогите директору написать программу, которая поможет вычислить это количество. Например, если K=3 и N=4, то существуют следующие маршруты: 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 1+3, 3+1. Т.е. при данных значениях у зайца всего 7 различных маршрутов добраться до вершины лестницы.

Входные данные:
В единственной строке входного файла INPUT.TXT записаны два натуральных числа K и N (1 ≤ K ≤ N ≤ 300). К — максимальное количество ступенек, которое может преодолеть заяц одним прыжком, N – общее число ступенек лестницы.

Выходные данные:
В единственную строку выходного файла OUTPUT.TXT нужно вывести количество возможных вариантов различных маршрутов зайца на верхнюю ступеньку лестницы без ведущих нулей.

Это прекрасная задача для объяснения принципов динамического программирования, но для начала разберемся с проблемами, которые такой подход решает. Я предлагаю посмотреть на предыдущую (более простую, но очень похожую) задачу «Лесенка«. Та задача решалась рекурсивно, при этом я постарался проиллюстрировать как получается более сложное решение из более простых (обрабатываемых рекурсивно) случаях. Попробуем применить такой подход к нашей задаче:

Функция принимает параметр k (количество ступенек на которые может прыгать заяц) и n — длина лестницы. Если длина лестницы равна нулю — то заяц прыгать не может, поэтому есть всего 1 вариант решения. Во всех остальных случаях мы говорим, что на n-ную ступеньку он может попасть с k предыдущих, поэтому и обрабатываем эти k ступенек рекурсивно (с учетом того, что n может оказаться меньше k).

Приведенное решение очень просто для восприятия, но работает оно очень медленно. Чтобы увидеть причины — предлагаю выписать вручную несколько примеров расчета лесенок, для этого выберем k, равное например 4:

step[0] => 1
step[1] => step[0]
step[2] => step[1] + step[0]
step[3] => step[2] + step[1] + step[0]
step[4] => step[3] + step[2] + step[1] + step[0]
step[5] => step[4] + step[3] + step[2] + step[1]
step[6] => step[5] + step[4] + step[3] + step[2]

Теперь прекрасно видна проблема приведенного выше решения. В нем, для для расчета step[6] было бы сделано 4 рекурсивных вызова, каждый из которых выполнил бы вызов step[2] . Напрашивается вычислить step[2] один раз и если вдруг такое значение потребуется — то использовать готовый результат, а не вычислять его повторно. Такой подход иногда называется табулированием или мемоизацией.

Читайте также:  Кролик съел шоколад что делать

Суть динамического программирования как раз состоит в том, что мы:

  • разбиваем сложную задачу на более простые — делать это можем как с использованием рекурсии (см. первый вариант решения), так и без нее;
  • используем мемоизацию результатов вычислений (накапливаем их и используем вместо повторного вычисления)

Отсюда следует, что динамическое программирование даст хороший результат только, когда:

  • задача является рекуррентной (более сложная выражается через более простые — возможно вручную рассчитать примеры как было показано выше с массивом step);
  • задачи пересекаются — как было показано выше, результат вычисления step[2] используется k раз.

Если бы писали на каком-нибудь функциональном языке — то могли бы в приведенном выше решении добавить функции дополнительный аргумент-массив, который хранил бы результаты расчета ступенек лесенки, но на С++ мы можем создать такой массив прямо внутри функции, а рекурсию заменить циклом:

Приведенный выше код совершенно правильный и достаточно быстрый, однако решение не пройдет, ведь в результате могут получаться огромные числа, так например для максимально допустимых в условии задачи значений параметров k и n ответ должен быть таким:

Нам необходимо использовать длинную арифметику:

Источник

Задача по программированию кролики

Разбор задач КРОК 2016 — Квалификация

Лучше поздно, чем никогда.

644A — Parliament of Berland

Из условия задачи следует, что либо демократов и республиканцев поровну (если n чётно), либо демократов на одного больше (если n нечётно). Так как представители одной и той же партии не должны сидеть на соседних креслах, представим парламентский зал в виде шахматной доски, где левая верхняя клетка будет белой. Затем начнем перебирать ряды клеток сверху вниз, а клетки в каждом ряду слева направо и будем по очереди сажать парламентариев — демократов в белые клетки, а республиканцев в черные.

Таким образом, если n > a·b , ответом будет — 1 . В противном случае рассадка всегда найдется.

Для определения того, какого цвета клетка (и, соответственно, кого нужно в нее посадить), находящаяся в i -й строке и j -м столбце (в случае, если они нумеруются с единицы), можно поступить следующим образом. Если (i + j)mod2 = 0 , значит соответствующая клетка должна быть белой, иначе чёрной.

644B — Processing Queries

Для решения данной задачи очень удобно воспользоваться структурой данных, которая называется очередь.

Очередь — это структура данных со следующим принципом доступа к элементам: «первый пришёл — первый ушёл». Добавление элемента (\textit) возможно лишь в конец очереди, а взять элемент из очереди можно только из её начала (\textit). Удалить элемент можно также только из начала очереди (\textit).

В данной задаче нужно было перебрать все запросы в хронологическом порядке. Будем хранить в очереди времена окончания обработки запросов. Для текущего запроса, пока в начале очереди находятся запросы, которые закончат обрабатываться не позднее, чем появился текущий запрос, нужно просто удалять их из начала очереди, так как они никак не повлияют на текущий. Если после этих действий размер очереди равен максимальному допустимому числу, ответ для текущего запроса — 1 . В противном случае, нужно добавить время окончания обработки текущего запроса в очередь, вывести это время и продолжить алгоритм.

644C — Hostname Aliases

Для решения данной задачи воспользуемся структурами данных map и set . Переберем все имеющиеся адреса страниц, затем получим hostname и path для каждого адреса, и добавим текущий path в множество путей для текущего hostname (для этого будет нужен map , где ключом будет строка hostname , а значением — множество строк path ).

Осталось только объединить все hostname , множества путей которых совпадают (это можно сделать с помощью map, где ключом будет множество строк path , а значением — вектор строк hostname ), и вывести те группы, размер которых больше единицы.

Источник

Задачник по программированию( для школы ) (fb2)

Задачник по программированию для школы

Да, нравится мне эта песня, но сейчас, не об этом.

Итак, просматривая свои архивы, нашел свой задачник по программированию — ну, почему бы ни поделиться.

На момент написания, для решения задач планировалось использовать Turbo Pascal, время прошло, и эта программа значительно устарела, предлагаю заменить ее на PascalABC.NET – отличная штука, специально создана для обучения программированию, сочетает возможности старого Turbo Pascal и Delphi и много других вкусностей.

Вступление. (которое, можно пропустить)

Задачи здесь, разной сложности, ну, например, такая шутка:

«Все, внимание. Всякий кто решит данную задачу за 45 минут, получит годовую 5 не только по информатике, но и по математике. Записываем:

Доказать, что для любых не нулевых значений переменных a, b, c : integer не существует решения следующего уравнения, при n > 2.

— Что ты хочешь сказать, Вова?

— Хорошо, Вова, — молодец! За знание классики + 5.

— Но, ты же не привел доказательства. »

Часто у «продвинутых» учеников возникает вопрос:

— А чё мы должны учить этот древний, никому не нужный Pascal?

Ну, давайте, сравним простейший код:

И дело не в том, что текст на C длиннее.

Учащийся должен понимать, что и как, делает программа.

Если объяснение программы на Паскале займет 2 минуты и можно идти дальше, то в случае С, вы убьете 45 минут на объяснение совершенно не нужной начинающему информации, и совершенно запутаете школьников, т.е — если вам надобно вызвать у учащихся отвращение к программированию то начинайте учить их с С++ или C#.

А после Паскаля, любой си образный язык пойдет «влегкую».

Объясните любопытному, что все процедурные языки, близнецы братья (но Паскаль проще. ). Для профессионального программиста не составляет большой проблемы перейти с PHP на Java.

Но, как-то, расскажите, что есть не только процедурные языки. Например, о языке Prolog, или такие вкусности как Форт (англ. Forth) или Эйфория.

Но вернемся к нашим баранам (я не имел ввиду учащихся), как уже сказано, задачи разного уровня. Я сознательно не размечаю сложность, во-первых, это очень субъективно, во-вторых ученик должен учиться соизмерять свои возможности, и не отчаиваться если сейчас задача не по силам. Многие задачи не уложатся в один урок, а некоторые, могут развиваться от «простого к сложному».

Читайте также:  Письмо от пасхального кролика
Двоичный тренажер

а) Программа задумывает случайное число от 0 до 15 и выдает его в двоичном виде, пользователь должен ввести десятичный(или шестнадцатеричный) аналог.

Полезно решить эту задачу, сюда входят несколько подзадач:

‘ преобразование числа в двоичный вид

» контроль введенных пользователем символов

»’ разработка интерфейса программы (внешний вид, реакции на ошибки, поощрительные сообщения и т.п.)

Кроме того, такая программка полезна для игрового запоминания двоично-шестнадцатеричных чисел.

б) Программа должна анализировать время ожидания ответа пользователя, и выдавать оценку за выполнение, допустим, 20 заданий, учитывая число ошибок и суммарное время затраченного на ответы.

в) «Случайное число» человек и машина понимают по-разному, например:

с точки зрения машины это ряд равновероятных случайных чисел. Давайте составлять упрощенную, но с точки зрения человека «случайную» последовательность. Во-первых, отбросим варианты 0 и 1 как слишком простые (пользователя они будут только раздражать), затем, числа должны быть случайны, но не должны повторяться, до тех пор, пока не исчерпаются все цифры из заданного диапазона, а затем все начнется сначала.

Давайте, я расскажу, как решил эту задачу, во времена оны.

Задаем байтовый массив[размером в заданных диапазон]

программа задумывает число из заданного диапазона

если в соответствующей ячейке массива 0, то записываем туда 1 и завершаем цикл 2 задумывания числа, в ином случае повторяем цикл 2.

Если написать только вышесказанное, то получим бесконечный цикл. (что очень полезно для начинающего программиста) Посему введем переменную «счетчик успешных попыток задумывания числа» и при достижении максимального числа возможных вариантов переходим к началу цикла 1 (т. е. заполнение массива нулями)

Ну, а дальше, как и раньше вывод на экран. ожидание ответа.

Еще один нюанс, со «случайным числом». Если вы запустите программу несколько раз, то увидите, что задумываются одни и те же числа. Как с этим бороться? Программист, должен знать эту мелочь.

г) Байт изображается двумя шестнадцатеричными числами. Пусть и программа задумывает по два таких числа (в этом случае рекомендации пункта в, надо основательно пересмотреть [ну например, задать два байтовых массива. не-ет не верное решение. массив будет один но от 2 до 255. ])

Ну, вот так, примерно, решаются задачи, чем дальше в лес.

Не люблю олимпиадные задачи, как правило, они слишком «академичны», но это естественно, у олимпиады совершенно иные задачи (т. е. не обучение)

Задачи для школьника должны быть веселы! На экране должно что-то прыгать, бегать, хихикать.

Веселые задачи

Игры со строками.

Все нижеследующие программы, должны начитаться и продолжаться объяснениями пользователю, что ему следует сделать для продолжения работы программы.

Написать программу со следующим сценарием:

пользователь вводит строку, нажимает Enter и далее варианты:

а) Буквы падают в низ экрана с начала строки, одна за другой;

б) Буквы падают с конца строки;

в) Буквы падают случайным образом;

д) После какого либо вида падения буквы взлетают на свои места.

Написать программу, печатающую бегущую строку

а) бегущая строка с зацикленным текстом;

б) предложение бегает от начала в конец строки и обратно;

в) бегущая строка информация в которую берется из файла.

Написать программу, в которой пользователь вводит строку, нажимает Enter, а затем строка начинает червяком ползать по всему экрану (не выходя за его пределы).

Написать программу, которая напечатает строку по следующему сценарию:

а) в середине экрана появляются 2 крайние буквы строки (первая и последняя)

Затем они раздвигаются и в середину записываются две следующие (вторая и предпоследняя) и т.д. в результате строка печатается разъезжаясь из центра.

б) печатаются сначала средние буквы строки (одна или две – в зависимости четное число символов в строке или нет) затем парами печатаются остальные символы.

Написать программу, в которой строка будет печататься:

Написать программу, в которой в середине экрана выводится строка, а затем:

а) буквы по очереди подпрыгивают на 1 или 2 позиции.

б) подпрыгивание с конца строки

г) подпрыгивание случайным образом.

Написать программу, в которой в середину экрана выводится строка, затем буквы расползаются вверх вниз и в стороны случайным образом (не перекрывая друг друга), а потом возвращаются по своим траекториям на старое место.

Написать программу, объединяющую максимальное число вышеперечисленных сценариев.

Играем в шпионов.

Первый пользователь вводит строку

на следующей строке выводится ее зашифрованный вариант

зашифрованная строка сообщается другому пользователю

и он на другом компьютере ее расшифровывает.

1 — в строке меняется четные и нечетные символы (если длина строки нечетная, она дополняется точкой).

2 — в начале печатается последний символ потом первый затем предпоследний, а потом второй и т.д.

3 — строку делим пополам (если надо дополняем точкой), а потом печатается символ из одной строки затем из другой и т.д.

Квадрат Полибия, Шифр Цезаря, Решето Кардано, Тарабарская грамота, Диск Энея

Римские цифры

Программа выводит число в римском стиле, пользователь вводит десятичный аналог. Для оживления программа будет выводить реакции «Долго думал», «Go to the first class», ну, на сколько хватит цензурного юмора.

Mad string

Пользователь вводит строку. При нажатии, каждой клавиши, буквы возникают в произвольных местах экрана. По нажатии Enter экран стирается(это, чисто технологический момент и стирание не должно быть заметно), затем буквы опять появляются в случайных местах экрана, а затем они начинают весело прыгать, бегать, перемешиваться но через минуту должны собраться в исходную строку. [это типичный случай, когда задачу надо решать сзади наперед]

Кстати, забавный способ, проверить правильность набора текста, методом слепой печати.

Игры с числами

Пятница 13

Программа должна выдать список из 13 ближайших тринадцатых пятниц, отсчитывая от текущей даты

Угадай число

(компьютер) Загадано двух [трех, четырех, пяти] значное число, сколько попыток вам надо для отгадывания?

Поздравляю, вы угадали, затратив 3 попытки!!

Целей, при написании такой программы, несколько:

1. сама по себе интересная работа с интерфесом программы;

2. выработка алгоритма угадывания.

3. Как итог — разработка программы с обратной задачей, пользователь задумывает число, а программа отгадывает.

«Натуральная» случайность

В задаче №1, я упоминал два вида случайностей «машинную» и «человеческую», давайте вспомним еще одну, пожалуй, главную, — «природную».

Найдите информацию о «нормальном распределении», не хочу пересказывать, то, что вы найдете, но там очень много вкусненького.

Задача – написать программу, которая будет генерировать случайные числа по закону нормального распределения.

Для того, чтобы убедиться в правильности работы, постройте графики используя «машинную» и «природную» случайности. Так, сказано невнятно.

Mas : array[0..max] of integer;

Как видите, «машинная» случайность имеет «плоское» распределение. Ваша задача — сделать программу выдающую «нормальное» распределение случайности, это может выглядеть, примерно так:

Как сказал бы Кролик Винни-Пуху «Случайности могут быть разные».

Читайте также:  Little one корм для кроликов сколько давать
Такие не простые, «простые» числа

1. Выяснить: для чего нужны простые числа, методы их определения. (Уверяю вас, они очень и очень ценны. )

2. Написать программу для нахождения простых чисел

Счастливый билет

Объясните учащимся, что в древности в автобусах покупали билеты, и на каждом билете был шестизначный номер. И в течении скучной поездки школьники искали счастливые билеты, т. е. сумма первых трех чисел в номере должна быть равна сумме оставшихся (некоторые чудаки съедали их перед экзаменом :).

Задача: подсчитать число счастливых билетов, в дальнейшем можно выяснить вероятность приобретения «счастья».

Как-то эту задачу на уроке решали двое учеников, и результат получился существенно разный, но был конец урока, и проверять алгоритмы было лень.. А ученики. сейчас, оба, и он и она, профессиональные программисты, и надеюсь, счастливы в браке.

Лирическое отступление

Большинство задач в данном сборнике рассчитано на работу в текстовом режиме. У «знатоков» закономерно возникнет вопрос:

— Зачем нам учиться программировать в устаревшем текстовом режиме.

— Ну, во-первых, мы движемся от простого… далее… сейчас наверно кто-то пишет ПО для утюга или фена, а скоро надо будет писать для зубочистки, это конечно хорошо, программистам есть работа, но учтите, аппаратные возможности таких устройств очень ограничены. Т.е. винды в кастрюлю никто засовывать не станет, и программировать на низком уровне надо будет еще много лет. Освойтесь с основами программирования в Паскале, а дальше Ассемлбер, Java, Си — да мало ли, что еще возникнет.

А, чтобы напомнить возможности текстового режима, смотрите:

Игры с графикой.

Один «информатик» способен поставить столько задач, что не справятся 10 мудрецов из 10а.

The Adventure of the Dancing Men

В начале, все просто,… а потом ООП.

Человечек должен иметь двигающиеся конечности. Для начала перемещаем конечности мышкой:

Перемещение мышки в направлении r — конечность сгибается в локте (колене), перемещение в направлении φ – вращение конечности вокруг точки О.

Теперь начинаем наращивать зрелищность.

а) человечек хаотично размахивает конечностями

б) на экране 10 человечков, синхронно размахивающих ручками и ножками

в) на экране толпа, каждый человечек движется независимо

А теперь вернемся к первоисточнику.

Пользователь набирает строку – на экране появляется строка пляшущих человечков.

На старт

Написать программу, которая будет имитировать счет до старта (от 9 до 0)

В качестве основы использовать такую матрицу:

В этой матрице (семи-сегментном индикаторе) будут изменяться закрашенные сегменты.

Теннис

Не мною придумано, но зрелищная и полезная игрушка:

Два игрока управляют двумя ракетками, по экрану бегает шарик, отражаясь от стенок и от ракеток, ведется счет

Смайлик

Написать программу, которая нарисует такое личико.

Имеется в виду, что выражение лица меняется:

а) меняется автоматически по кругу (анимация)

б) меняется в зависимости от нажатой кнопки

С новым годом

На экране рисуется зеленая елка, с игрушками свечами и т. п.

Не обязательно точно такую.

Как, слишком статично. Ничего, добавим ужастика! Пусть, вначале осыпятся игрушки, а затем и иголки — останется только елочный «скелет».

Калейдоскоп

В ведущем треугольнике появляются и начинают перемещаться, объекты случайной формы и цвета. Каждый шаг изменения (с задержкой в 1-2 секунды) отображается симметрично в остальных треугольниках.

Орнамент

В каком-то сериале, в титрах, на экране росли и развивались завитки орнамента.

В кино, художники научились делать это еще сто лет назад.

Совершенно не обязательно повторить именно этот орнамент, главное, чтобы на экране что-то росло, зеленело.

Игры с файлами

Пока не наступает проза жизни, все мы немножко поэты.

Написать программу, которая при включении спрашивает имя, фамилию.

А далее, если этот пользователь еще не работал с программой, запрашиваются разные данные (день рождения, какие домашние животные есть у пользователя, как их зовут. ) данные сохраняются в файл.

Если же пользователь уже работал с программой, то имитируется разговор:

‘Ты что заболел, уже 3 дня мы не виделись. ‘

(или наоборот ‘Слишком много сидишь за компьютером’)

‘Поздравляю, тебе сегодня 14 лет, 3 месяца и 5 дней’

или ‘Передай привет Шарику’

Если программу запускает другой пользователь, то используются его данные (как видите, ничего нового — пытаемся пройти тест Тьюринга ).

Анти поле чудес

Все время толкую, что для игры в стране дураков, надо знать волшебное заклинание ОЕАНТИСРВ.

Программа читает файл, с текстом русской книги (ну например, «Война и мир»), и определяет:

* встречаемость букв в файле (в результате, должно получиться — то самое заклинание).

* встречаемость букв в начале слова

* встречаемость букв в конце слова

Заодно, написать и свое «Поле чудес» (слова для заданий, из того же файла).

Вспомним шпионские игры (10). Один учащийся пишет программу, которая зашифровывает текст простейшим цифровым кодом, для простоты пробелы и знаки препинания остаются без изменений, а символы разделяются… ну, например “/” т.е. получается что-то вроде:

Результат сохраняется в файле, и файл передается другому ученику(или ученикам).

Эти учащиеся, зная встречаемость букв в русском языке, делают программу для расшифровки полученного сообщения (ученики убедятся, что короткие сообщения, очень трудно расшифровать). Должен сказать, что написать полноценную программу, видимо не получится, скорее это будет утилитка для помощи в расшифровке. Но тема криптологии очень увлекательна, и вот домашнее задание для отличников: придумать способ шифрования устойчивый против анализа статистикой встречаемости. (подсказка – кто сказал, что каждой букве должна соответствовать только одна цифра?)

Заданный текст превращается в HTML файл. Придумать методы для задания форматирования текста (ну допустим, если строка начинается с # то это заголовок, и т. д. Пусть ребята помучаются, но зато поймут смысл форматирования)

Ну, вот и все.

А что дальше? Ну, конечно же, в Интернет — там есть масса задачников, НО задачи там посерьезнее, так вот, последнее задание:

1. Научиться находить удовольствие при решении самой скучной задачи!

2. Научиться изобретать новые задачи!

Включайте вашу фантазию, и у вас возникнет множество своих красивых задач. Потому, что не затронуто еще множество тем: работа с окнами в текстовом и графическом режимах, музыкальные шкатулки, создание шуточных тестов, игр…………

Печальные задачи

(печаль заключается в том, что это, не мои задачи)

Задачи взяты из различных источников.

(стр 122 [1] ) Какое число обозначает число КОТ

(стр 121) Какие числа зашифрованы:

Пользователь вводит два числа по 50 – 70 цифр, программа должна сложить их и вывеси результат.

(стр 17) Вирус уничтожил исключительно знаки арифметических действий ( +, -, *, / ). Можно ли узнать, что печатала программа?

Надеюсь, все это безобразие, разбудило вашу фантазию.

Примечания

С.В. Филичев Занимательный Basic в задачах издательство ЭКОМ, Москва 1997

Источник