Рекомендации по решению задач

Введение

Сборник содержит задачи по разделу «Циклические конструкции». Задачи сборника используются при объяснении нового материала, для организации самостоятельной работы студентов, в подготовке к олимпиадам по программированию, а также при проведении кружковых и практических работ.

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

Структура данного сборника построена на последовательном изучении операторов цикла языков программирования.

Рекомендации по решению задач

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

Этапы решения задач включают следующие пункты:

1. Анализ задачи

изучить данные;

изучить неизвестные;

определить достаточно ли данных для решения задачи;

проверить данные на непротиворечивость.

2. Проектирование - составление плана

цель решения задачи;

методы проектирования;

выбор языка формализации.

3. Формализация - выполнение плана

следование плану решения задачи;

проверка на правильность каждого шага.

4. Тестирование и отладка - анализ решения

определить, все ли данные использованы;

проверить на правильность решения;

проверить вводимые данные на обоснованность и правдоподобие;

произвести анализ на модификацию программы для большей эффективности;

осуществить вывод результатов в удобной для чтения форме;

прокомментировать каждый блок программы;

подумать над вопросом использования полученного результата или применением метода при решении других видов задач.

5. Использование

Прежде чем писать программу, уясните смысл задачи:

Какова цель программы?

Какие данные она требует?

Откуда поступают данные?

Какие результаты должна выдавать программа?

То есть определить внешние спецификации.

Когда задача четко понята, можно приступать к составлению проекта программы на алгоритмическом языке или псевдокоде. Проектирование осуществляется как последовательность шагов, направленных на решение задачи. Сначала набрасывается план решения задачи в общем виде. Далее описание составляется более детально. Большие этапы разбиваются на более мелкие. В ходе этого процесса выделяются относительно независимые части - модули и дальнейшее уточнение каждого такого модуля.

Рекомендации по проектированию задачи

на каждом этапе проектирования задача должна оставаться структурированной;

каждый блок программы должен быть достаточно простым и обозримым;

связи между блоками программы должны быть наглядными;

каждый блок должен выполнять определенное действие;

после того как программа готова, ее необходимо формализовать на любом языке программирования;

пишите программы просто;

используйте комментарии;

текст кода должен быть выделен в логическую структуру.

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

Рекомендации по тестированию и отладке программ

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

тексты программ нужно разрабатывать таким образом, чтобы можно было проверить, корректно ли реагирует программа не только на допустимые входные данные, но и на заведомо неправильные;

тестирование производится согласно общему принципу «сверху вниз»;

хорошим считается текст, который имеет высокую вероятность обнаружения ошибки.

Совет: не исправляйте плохую программу - лучше перепишите ее заново.

Список задач

1. Дано натуральное число n - введенное с клавиатуры. Написать программу вычисляющая выражение: = 1+2+3+4+…+n.

2. Составить программу вычисляющая n!, где n - натуральное число, введенное с клавиатуры, а n! вычисляется по формуле: n!=1 2 3… n.

3. Создать программу, которая будет осуществлять вывод на экран таблицы умножения.

4. Создать программу, которая будет осуществлять вывод на экран таблицы сложения.

5. Написать программу выводящая на экран все простые числа из отрезка [а, б], где а и б натуральные числа, введенные с клавиатуры.

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

6. Дано натуральное число n, вводимое с клавиатуры. Написать программу, которая вычисляет:

7. Написать программу, которая вычисляет , где a и b натуральные числа, введенные с клавиатуры.

8. Модифицировать задачу 7 для всех действительных чисел.

9. Дано действительное число а. Найти:

а) среди чисел 1, 1+1/2, 1+1/2+1/3,... первое, большее а;

б) наименьшее n, что 1+1/2+ ... +1/n> а.

10. Дано натуральное число n. Определить:

а) сколько цифр в числе n и приписать единицу в начало и в конец записи числа n;

б) чему равна сумма его цифр;

в) самую старшую цифру в числе;

г) самую младшую цифру в числе;

д) самую большую цифру в заданном числе;

е).

11. Даны натуральные числа n и k, вводимые с клавиатуры. Написать программу, которая будет выводить k-ю цифру натурального числа n.

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

13. Написать программу, которая удалит из введенного натурального числа N все цифры, равные K, где К - цифра введенная с клавиатуры.

14. Вывести делители натурального числа N, введенного с клавиатуры.

15. Дано трехзначное натуральное число. Найти все его перестановки. Например: 1 2 3, 1 3 2, 2 1 3, 2 3 1, 3 1 2, 3 2 1.

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

а) число во вторичную систему счисления;

б) число в восьмеричную систему счисления;

в) число в шестнадцатеричную систему счисления.

Составить алгоритмы для обратного перевода.

17. Составить программу для определения того, является ли заданное натуральное число совершенным.

18. Составить программу нахождения всех совершенных чисел, не превышающего заданного числа N с клавиатуры.

19. Написать программу, которая среди двухзначных чисел ищет те, сумма квадратов цифр которых делится на тринадцать.

20. Создать программу поиска двухзначных чисел, обладающих свойством: если к сумме цифр прибавить квадрат этой суммы, то получится данное число.

21. Вывести на экран все трехзначные числа, сумма цифр которых равна числу, введенному с клавиатуры.

22. Среди двухзначных чисел вывести на экран только те, которые делятся на N или содержат N в записи числа.

23. Из всех четырех четырехзначных чисел вывести на экран те, в записи которых ровно три одинаковые цифры.

24. Даны натуральные числа n, m. Написать программу вычисляющая сумму последних цифр числа n и m.

25. Составить программу вычисления суммы кубов чисел от 25 до 125.

26. Написать программу, выводящую на экран последовательность чисел Фибоначчи до введенного натурально числа N. Общая формула последовательности Fn+1=Fn+Fn-1. Последовательность Фибоначчи: 1,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 … N.

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

12=1

22=1+3

32=1+3+5

28. Дано натуральное число n. Написать программу вычисляющая выражение 1 2+2 3 4+...+n (n+1).

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

30. Составить программу определяющая. Является ли число палиндромом для любого четырехзначного числа?

31. В трехзначном числе зачеркнули первую цифру слева. Когда полученное двухзначное число умножили на семь, то получили исходное. Найти исходное число.

32. Даны натуральные числа N и K, вводимые с клавиатуры. Составить программу вычисления выражения 1k+2k+3k+…+Nk.

33. Напишите программу, которая выводит на экран словесную формулировку числа. Например: 143 = «Сто сорок три», 10 = «Десять».

34. Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину N, где N – положительное действительное число, вводимое с клавиатуры.

35. Три друга были свидетелями аварии. Первый заметил, что номер автомобиля с учетом четырех цифр делится на два, семь, одиннадцать. Второй заметил, что в записи номера учувствуют только две цифры. Третий вспомнил, что сумма цифр равна тридцати. Восстановите номер автомобиля.

36. Во дворе N-ног. Сколько гусей и кроликов может быть во дворе?

37. Напишите программу, которая поможет выучить таблицу умножения. Суть программы в том, что она будет печатать на экран вопрос:

«Сколько будет 6 7?»

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

38. Дано натуральное число N, введенное с клавиатуры. Вывести на экран все представления натурального числа суммой натуральных чисел. Перестановка слагаемых нового способа не дает.

39. Дано натуральное число N. Найти и вывести на экран все его простые делители.

Список литературы

1. Златопольский Д.М. Сборник задач по программированию / Д.М. Златопольский. –СПб.: БХВ-Петербург, 2007.-240с.

2. Брудно А.Н. Московские олимпиады по программированию / А.Н. Брудно, Л.И. Каплан. –М.: Наука, 1990.-208 с.

3. Скиена С.С. Олимпиадные задачи по программированию. Руководство по подготовке к соревнованиям / С.С. Скиена, М.А. Ревилла. –СПб.:КУДИЦ-ОБРАЗ, 2005.-416 с.

4. Меньшиков Ф.В. Олимпиадные задачи по программированию / Ф.В. Меньшиков. –СПб.:Питер, 2006.-315 с.

5. Вирт Н. Алгоритмы+структуры данных=программы / Н. Вирт. –М.: Мир, 1977.- 410с.

6. Кнут Д. Искусство программирования / Д. Кнут. –СПб.: Питер, 2000.- 615с.

Оглавление

Введение. 3

1 Рекомендации по решению задач. 3

2 Список задач. 5

Список литературы.. 10