Сборник задач по программированию
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Финансы и статистика
Автор:
Мишенин Александр Иванович
Год издания: 2021
Кол-во страниц: 224
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-00184-039-8
Артикул: 103180.03.99
Структура пособия соответствует учебной программе дисциплины «Информатика и программирование». Первая часть содержит около 600 задач по теории программирования и языкам программирования Visual Basic и Pascal. Вторая часть (занимает более половины объема пособия) включает решение значительного числа задач или указания к их решению. Представлены краткий перечень необходимых понятий и список рекомендуемой литературы. Для студентов, обучающихся по специальности «Прикладная информатика в экономике» и по смежным специальностям, а также для учащихся старших классов колледжей и лицеев систем общего образования. Может быть использовано для самостоятельной внеаудиторной работы, а также при дистанционном обучении.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ФИНАНСЫИСТАТИСТИКА МОСКВА 2021 ÝËÅÊÒÐÎÍÍÎÅ ÈÇÄÀÍÈÅ
УДК 004.4(076.1) ББК 32.973.26-018.2я73 М71 Структура пособия соответствует учебной программе дисциплины «Информатика и программирование». Первая часть содержит около 600 задач по теории программирования и языкам программирования Visual Basic и Pascal. Вторая часть (занимает более половины объема пособия) включает решение значительного числа задач или указания к их решению. Представлены краткий перечень необходимых понятий и список рекомендуемой литературы. Для студентов, обучающихся по специальности «Прикладная информатика в экономике» и по смежным специальностям, а также для учащихся старших классов колледжей и лицеев систем общего образования. Может быть использовано для самостоятельной внеаудиторной работы, а также при дистанционном обучении. УДК 004.4(076.1) ББК 32.973.26-018.2я73 Р Е Ц Е Н З Е Н Т Ы : кафедра «Информационные технологии» Федерального государственного образовательного учреждения высшего профессионального образования «Финансовая академия при Правительстве Российской Федерации»; В.П. Грибанов, профессор кафедры «Математическое обеспечение и технологии программирования» Московского государственного университета экономики, статистики и информатики (МЭСИ) Мишенин А.И. Сборник задач по программированию: учеб. пособие / А.И. Мишенин. – Эл. изд. – 1 файл pdf: 224 с. – М.: Финансы и статистика, 2021. – Текст: электронный. ISBN 978-5-00184-039-8 М 71 © Мишенин А.И., 2009, 2021 © ООО «Издательство «Финансы ISBN 978-5-00184-039-8 и статистика», 2021
Предисловие Пособие предназначено для студентов вузов, изучающих программирование в рамках дисциплин «Информатика» и «Информатика и программирование», но может использоваться и учащимися лицеев, колледжей и других учебных заведений системы общего образования, в том числе школьниками старших классов. Может быть полезно также при самостоятельном изучении программирования. Сборник состоит из двух частей: первая часть содержит около 600 задач различного уровня сложности, а вторая часть (она занимает более половины объема данного издания) – решение задач на языках программирования Visual Basic и Pascal и указания к их решению. В пособии реализован методический подход «от простого – к сложному». Задачи разделов 1 и 2 рекомендуется решать в том порядке, в котором они приведены в книге, а задачи разделов 3–5 можно выбирать самостоятельно. Значительное число задач сопровождается решениями или указаниями к их решению. Решение дано в тех случаях, когда впервые используется важный прием программирования либо когда в условии задачи встречается новое понятие. Задачи, для которых во второй части книги приводятся указания, обозначены буквой У в скобках, а задачи, для которых даны решения, – буквой Р (также в скобках). Наличие решений предоставляет возможность применять данный сборник задач для самостоятельной внеаудиторной работы, а также в образовательных системах открытого образования и дистанционного обучения. Сложность задач оценивается тремя уровнями, обозначенными звездочками: первый уровень * – простая задача; второй уровень ** – задача средней сложности; третий уровень *** – трудная задача. Естественной границей для трудных задач служит длина программы. Хорошее овладение практикой программирования достигается, если учащийся самостоятельно решает все задачи первого и второго уровней, а также некоторые задачи третьего уровня.
В условии задачи зачастую не указывается, какие данные следует определять в программе. Эти вопросы необходимо продумать самостоятельно, так как в ряде случаев подобная информация может служить подсказкой при решении задачи. Указанием на вводимые величины служит слово «дано». Кроме того, в большинстве задач нужно предусмотреть выдачу сообщений о нестандартных ситуациях завершения программы. Если в условии задачи приводятся какие-то ограничения для исходных данных, то не нужно проверять их в начале программы. Следует обратить внимание на то, что термины «одномерный массив», «массив» и «вектор» употребляются как синонимы, синонимами являются также термины «двумерный массив» и «матрица». Данные более высокой размерности в задачах не используются. Кроме того, необходимо иметь в виду, что решение задачи обычно предполагает разделение ее на части и предпочтение не отдается «оптимальной программе». Решение, приведенное автором, как правило, не является единственно возможным. В конце книги представлены краткий перечень понятий, необходимых для решения задач, и список рекомендуемой литературы.
Часть первая ЗАДАЧИ ПО ОСНОВНЫМ РАЗДЕЛАМ ПРОГРАММИРОВАНИЯ Раздел 1 Простейшие программы 1.1*. Дано число Х. Если оно натуральное, то вывести на экран сообщение «Х – натуральное число», иначе – сообщение «Х – действительное число». 1.2** (Р). Даны два целых числа Х и Т. Если они имеют разные знаки, то присвоить Х значение произведения этих чисел, а Т – значение их разности по модулю, иначе присвоить Х значение разности по модулю исходных чисел, а Т – значение произведения этих чисел. Новые значения Х и Т вывести на экран. 1.3*. Даны три целых числа А, В, С. Если существует треугольник со сторонами А, В, С, то вывести на экран сообщение «Треугольник существует», иначе – сообщение «Треугольник не существует». 1.4*. Дан треугольник со сторонами А, В, С (А, В, С – целые числа). Вывести на экран значения трех высот треугольника. Предварительно убедиться в существовании треугольника, как в задаче 1.3. 1.5**. Дан треугольник с вершинами в точках (1,0), (–1,0) и (0,1). Даны действительные координаты Х и Y точки M(X,Y). Если точка М находится внутри треугольника, то вывести на экран сообщение «Точка внутри треугольника», иначе – сообщение «Точка вне треугольника».
1.6*(Р). Даны три целых числа А, В, С. Провести расчет среднего арифметического для этих чисел. При указанных условиях среднее арифметическое всегда существует. Результат вывести на экран. 1.7*. Даны четыре целых числа А, В, С, D. Вывести на экран те числа, для которых модуль разности числа и среднего арифметического значения всех чисел меньше двух. 1.8*(У). Даны три целых числа А, В, С. Вывести на экран максимальное из этих чисел. 1.9**(У). Даны три целых числа А, В, С. Вывести на экран максимальное отрицательное число. 1.10*. Даны четыре целых числа А, В, С, D. Вывести на экран количество чисел, равных максимальному числу. 1.11**(Р). Даны три целых числа А, В, С. Вывести на экран среднее арифметическое для четных чисел. Если четных чисел нет, то вывести на экран сообщение «Нет четных чисел». 1.12*. Даны три целых числа А, В, С. Если минимум для А и В больше, чем минимум для А и С, то присвоить переменной Т значение 0, иначе – значение 1. Вывести на экран значение Т. 1.13*(У). Даны три целых числа А, В, С. Отсортировать эти числа по возрастанию и вывести на экран. 1.14*(У). Даны четыре целых числа А, В, С, D. Отсортировать эти числа по убыванию и вывести на экран. 1.15*. Даны четыре целых числа А, В, С, D. Вывести на экран наибольшее из этих чисел или сообщение «Нет», если среди указанных чисел нет наибольшего. 1.16*. Даны четыре целых числа А, В, С, D. Вывести на экран количество пар равных чисел. 1.17*. Даны четыре целых числа А, В, С, D. Если какая-то перестановка этих чисел составляет пропорцию (например, А/В = = С/D), то вывести на экран сообщение «Пропорция существует», иначе – сообщение «Пропорция не существует». 1.18*. Дан квадрат с центром в начале координат и сторонами, образующими угол 45° с осями координат. Сторона квадрата
равна заданному действительному числу В. Дана точка М с действительными координатами (X, Y). Если точка М находится внутри квадрата, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.19*. Даны три произвольных числа А, В, С. Если хотя бы одно из этих чисел является квадратом целого числа, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.20*. Даны три целых числа А, В, С. Если два из них являются отрицательными и четными, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.21**. Даны три целых числа А, В, С. Если все числа различные, то заменить меньшее на сумму двух других. Вывести на экран новые значения чисел А, В, С. 1.22**. Даны три целых числа А, В, С. Вывести на экран произведение двух наибольших чисел или сообщение «Нет», если два максимальных числа равны. 1.23**. Даны три целых числа А, В, С, причем все числа различные. Если полусумма максимума и минимума меньше, чем оставшееся число, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.24*(У). Даны действительные числа a, b, c, d, e, f, которые являются координатами R(a,b), S(c,d), T(e,f) трех точек R, S и T на плоскости. Если эти точки располагаются на одной прямой, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.25*(У). Даны действительные числа a, b, c, d, e, f, g, h, i, которые являются координатами R(a, b, c), S(d, e, f), T(g, h, i) трех точек R, S и T в пространстве. Если эти точки располагаются на одной прямой, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.26*(У). Даны действительные числа a, b, c, d, e, f, g, h, i, которые являются координатами R(a, b, c), S(d, e, f), T(g, h, i) трех точек R, S и T в пространстве. Рассмотрим уравнение плоскости, проходящей через точки R, S и T в виде X1 ⋅ x + Y1 ⋅ y + + Z1 ⋅ z = E, где x, y, z – координаты в пространстве. Вывести на экран значения коэффициентов X1, Y1, Z1 и Е.
1.27*. Даны три целых числа А, В, С. Если среди них два одинаковых, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.28*. Даны четыре целых числа А, В, С, D. Написать программу для вычисления max {min {A, B, C}, min {A, B, D}, min {A, C, D}, min {B, C, D}}. Результат вывести на экран. 1.29*. Даны три целых числа А, В, С. Если какая-то перестановка этих чисел соответствует арифметической прогрессии, вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.30**. Даны первый прямоугольник со сторонами А, В и второй прямоугольник со сторонами С, D. Если первый прямоугольник помещается внутри второго так, что один из углов совпадает, вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.31**. Рассмотрим область |х| + |y| ≤ 1 и прямую Ах + Ву = 1. Даны числа А и В. Если область и прямая имеют общую точку, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.32**. Даны шесть действительных чисел a, b, c, d, e, f, которые являются координатами R(a,b), S(c,d), T(e,f) трех точек R, S и T на плоскости. Если точка Т лежит выше прямой, проходящей через две другие точки, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.33*. Даны три целых числа А, В, С. Если все модули разностей этих чисел меньше заданного числа К, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.34*. Даны четыре натуральных трехзначных числа А, В, С, D. Если во всех числах вторая цифра является нулем, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.35**. Даны шесть действительных чисел a, b, c, d, e, f, которые являются координатами R(a,b), S(c,d), T(e,f) трех точек R, S и T. Если эти точки являются вершинами равнобедренного треугольника, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.36**. Даны четыре целых числа А, В, С, D. Если какие-то три из них образуют арифметическую прогрессию, то вывести на экран сообщение «Да», иначе – сообщение «Нет».
1.37**. Даны четыре целых числа А, В, С, D. Если сумма каких-то двух чисел равна сумме двух оставшихся, то вывести на экран сообщение «Да», иначе – сообщение «Нет». 1.38*. Даны два натуральных числа А и В. Максимальное из чисел возвести в квадрат, из минимального извлечь квадратный корень. Если числа равны – возвести А в степень В. Результаты вывести на экран. 1.39**. Даны шесть действительных чисел X, Y, Z, W, V, U в качестве координат трех точек А(X, Y), В(Z, W), С(V, U), образующих треугольник на плоскости. Вывести на экран угол между высотой и медианой, которые проходят через точку А. Раздел 2 Циклы и массивы 2.1*(У). Написать программу для вычисления ( 1)...( ) ( , ) . 1 2 ... N N N k F N k k − − = ⋅ ⋅ ⋅ Здесь N и k – заданные натуральные числа (N > k). Результат вывести на экран. 2.2**. Написать программу для вычисления 2 3 1! 2! 3! ! ( , ) 1 ... N N F N x х х х x = − + − + ± для заданного действительного х >> 10. Здесь N – заданное натуральное число. Через N! обозначено произведение 1 ⋅ 2 ⋅ 3 ⋅ … ⋅ N, называемое «N факториал». Результат вывести на экран. 2.3**(Р). Даны действительные числа s и Е < 1. Вычислить 1 2 = ! n n n F s n ∞ =∑ для s < 1, пока очередное слагаемое не станет меньше точности Е. Результат вывести на экран.
2.4*. Написать программу для вычисления суммы 1 2 3 4 85 86 ... . 3 4 5 6 87 88 S ⋅ ⋅ ⋅ = + + + ⋅ ⋅ ⋅ Результат вывести на экран. 2.5**. Написать программу для вычисления суммы 2 4 2 ... , 3 4! 5 6! (2 1)(2 2)! n S n n = + + + ⋅ ⋅ + + где n – заданное натуральное число. Вывести на экран значение S. 2.6*. Написать программу для вычисления суммы 1 , ! i N i i x S i = = + = ∑ где x – заданное действительное число и N – заданное натуральное число. Вывести на экран значение S. 2.7*. Написать программу для вычисления суммы 2 2 2 2 1 1 1 1 1 ... ... 2 3 4 S N = + − + − ± ∓ , пока последнее слагаемое не станет по модулю меньше заранее заданного действительного числа Е < 1. Вывести на экран значение S. 2.8**(P). Написать программу для вычисления суммы 3 3 3 3 1 1 1 1 1 ... ... 2 3 4 S N = + − + − ± ∓ , пока разность предпоследнего и последнего слагаемых не станет по модулю меньше заранее заданного действительного числа Е < 1. Вывести на экран значение S.