Статистика выполненных
работ:

Текстовых работ - 0
Компьютерных работ - 0
Лабораторных работ - 0
Курсовых проектов - 0
Экзаменов - 0


Программирование (Е.А. Потапова, 2013 г., 88 с.)

ЛАБОРАТОРНАЯ РАБОТА № 1

Лабораторная работа № 1 посвящена созданию программ с использованием простых управляющих структур: условного оператора, цикла. В задании используются простые типы данных (нет необходимости использовать массивы). Поэтому программы, написанные с использованием массивов, не засчитываются. Кроме того, программы должны быть разработаны в рамках структурного программирования. В частности, запрещается использовать операторы перехода и метки.
Задание состоит из двух задач. Решение первой задачи предусматривает использование простых типов данных, а решение второй задачи — строкового типа данных. В ходе выполнения лабораторной работы необходимо составить программы на языке Паскаль. В некоторых программах полезно определить вспомогательные функции или процедуры. Во всех задачах строки вводятся пользователем с клавиатуры.
Многие задачи лабораторной работы № 1 имеют вид: ‘Дана последовательность из n (действительных) целых чисел. Определить (вычислить) …’ или ‘Даны натуральное n и вещественные числа a1, a2, ..., an. Определить (вычислить) …’ и т.п. Во всех этих задачах не требуется хранения исходных последовательностей значений. Вводится n, затем в цикле, работающем n раз, осуществляется пошаговый ввод чисел, и определенным образом постепенно вычисляется необходимый результат.

Вариант 1
Задача 1. Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа n. Вводите число n как значение типа integer. Например, если n = 1234, то ответ равен 4321. Строки не использовать. Подсказка. Как получать цифры целого числа, см. учебное пособие В.М. Зюзькова ‘Программирование’, раздел 3.5.
Задача 2. Для заданной строки определить длину содержащейся в ней максимальной подстроки, не имеющей латинских букв.

Вариант 2
Задача 1. Даны целое n>2 и вещественные числа a1, b1, ..., an, bn (ai < bi). Рассматривая пары ai и bi как левые и правые концы отрезков на одной и той же прямой, определить концы отрезка, являющегося пересечением всех этих отрезков. Если такого отрезка нет, сообщить об этом. Например, если n = 3 и a1 = 0, b1 = 10, a2 = 1, b2 = 11, a3 = –1, b3 = 5, то результатом будет отрезок [1, 5].
Задача 2. Дана строка S. Создать новые строки из строки S:
а) заменить все восклицательные знаки точками;
б) заменить каждую точку многоточием (т.е. тремя точками);
в) заменить каждую из групп стоящих рядом точек одной точкой;
г) заменить каждую из групп стоящих рядом точек многоточием (т.е. тремя точками).

Вариант 3
Задача 1. Не используя стандартные функции, вычислить с точностью eps > 0, Y = cos(x) = 1 – x2/2!+x4/4! - .. + (-1)nx2n/(2n)! + …
Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps; все последующие слагаемые можно уже не учитывать. Вложенные циклы не использовать.
Подсказка: в двух разных переменных храните отдельно числитель и знаменатель очередного слагаемого и на каждом шаге вычисляйте новые числитель и знаменатель через предыдущие значения.
Задача 2. В заданную непустую строку входят только цифры и буквы. Определить, удовлетворяет ли строка следующему свойству: строка содержит (помимо букв) только одну цифру, причем ее числовое значение равно длине строки.

Вариант 4
Задача 1. Даны натуральные числа n, m. Получить сумму m последних цифр числа n. Число n вводить как величину типа
integer, и строки не использовать. Пример. Пусть n = 12345, m = 3, тогда ответ равен 3 + 4 + 5 = 12.
Подсказка. Как получать цифры целого числа, см. учебное пособие В.М. Зюзькова ‘Программирование’, раздел 3.5.
Задача 2. Для каждой цифры '0', '1', ... , '9' подсчитать количество вхождений в данную строку S.
Вариант 5
Задача 1. Определить функцию f(n), значением которой является натуральное число, получаемое выбрасыванием из записи натурального числа n первой справа цифры 0 или 5. Например, f(13510) = 1351, f(1351) = 131. Для данного натурального числа m, примените функцию f последовательно необходимое число раз, так чтобы в записи m не осталось цифр 0 и 5.
Подсказка. Как получать цифры целого числа, см. учебное пособие В.М. Зюзькова ‘Программирование’, раздел 3.5.
Задача 2. Составьте программу, в результате выполнения которой в первой заданной строке удваивается каждый символ, принадлежащий также второй строке.
Вариант 6
Задача 1. Дано натуральное n > 0. Найти произведение первых n простых чисел. Подсказка: используйте булевскую функцию для проверки, является число простым числом или нет.
Задача 2. Из данной строки удалить все цифры и малые латинские буквы.

Вариант 7.
Задача 1. Даны длины a, b и c сторон некоторого треугольника. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. Замечание: длина медианы, проведенной к стороне a, равна 0,5 * 2 * b2 + 2 * c2 − a2 .
Определите функцию для вычисления медианы и используйте ее необходимое число раз.
Задача 2. Ввести две строки S1 и S2, состоящие только из цифр. Определить, в какой строке сумма цифр большая.

Вариант 8
Задача 1. Дано: натуральное n, действительные a 1, a 2,...,a n. Вычислить: a1 + a2 * (a2 –1) + a3 * (a3 –1) * (a3 – 2) + a4 * (a4 – 1) * (a4 – 2) * (a4 – 3) + ... + an * (an – 1) * (an – 2) *...* (an – n +1).
Задача 2. В данной строке найти самую длинную подстроку, состоящую из одинаковых символов.

Вариант 9
Задача 1. Пусть n — натуральное число. Обозначим через n!! произведение 1 * 3 * ... * n для нечетного n и 2 * 4 * 6 * ...* n для четного n. Дано натуральное n. Получить n!!.
Задача 2. Дана строка S, и дано натуральное n. Удалить из строки S все группы длиной n подряд стоящих одинаковых символов.
Указание: если ввести строку, например ‘kjhdahhhasaaaaa’, а значение n ввести равное 2, то необходимо получить
‘kjhdahasaaa’.

Вариант 10
Задача 1. Дано n вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к квадрату какого-нибудь целого числа. Например, если n = 10 и вводим числа 110, 90, 80, 30, 50, 40, 40, 30, 22, 60, то ответ равен 3 или 5 (имеем |80 – 92| = | 50 – 72| = 1).
Подсказка: определите функцию f(k), которая вычисляет абсолютную величину разности k и ближайшего целого
квадрата (ближайшим целым квадратом будет (trunc( k ))2 или (trunc( k ) + 1)2).
Задача 2. Для заданной строки определить длину содержащейся в ней максимальной подстроки, не имеющей латинских букв.

Вариант 11
Задача 1. Вычислить бесконечную сумму с заданной точностью E (E > 0). Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем Е; это и все последующие слагаемые можно уже не учитывать. Вложенные циклы не использовать.
Подсказка: вместо вычисления факториала вычисляйте величину, обратную факториалу, тем самым вы избежите целочисленного переполнения (см. учебное пособие В.М. Зюзькова ‘Программирование’, раздел 3.6, задача 3).
Задача 2. Дана строка S. Каждую подстроку длиной n > 1, состоящую из одинаковых символов, заменить на подстроку из тех же символов в количестве 2*n штук.
Например, дана строка ‘kjhhsdaaa’. Необходимо получить и вывести на зкран строку: ‘kjhhhhsdaaaaaa’.

Вариант 12
Задача 1. Числа Фибоначчи: F0 = 0, F1 = 1, а любое следующее число Фибоначчи равно сумме двух предыдущих: Fn = Fn – 1 + Fn – 2. Известно, что при достаточно больших n справедливо приближенное равенство n.
Определите наименьший номер n, начиная с которого равенство выполняется с точностью до заданного eps.
Задача 2. Определить, является ли заданная строка правильной записью вещественного числа (возможно, со знаком, а также с пробелами спереди и/или сзади).
Указание: вещественное число может быть представлено либо в виде числа с фиксированной десятичной точкой (–214.78), либо в виде числа с плавающей десятичной точкой (–2.1478Е+02).

Вариант 13
Задача 1. Рассмотрим последовательность e 1, e 2, e 3,..., образованную по следующему закону. Дано действительное eps. Найти первый член e n этой последовательности, для которого |en – en–1| < eps. (Существование en гарантируется одной из теорем математического анализа: чем меньше eps, тем ближе en к числу е = = 2,718281828... .)
Задача 2. В заданном предложении найти пару слов, из которых одно является обращением другого.
Указание: воспользуйтесь массивом строк для хранения слов.

Вариант 14
Задача 1. Даны натуральные n, m. Получить все меньшие n натуральные числа, сумма цифр которых равна m. Подсказка. Как получать цифры целого числа, см. учебное пособие В.М. Зюзькова ‘Программирование’, раздел 3.5.
Задача 2. Проверить, правильно ли в данной строке расставлены круглые скобки (т.е. находится ли справа от каждой открывающей скобки соответствующая закрывающая скобка, а слева от каждой закрывающей — соответствующая открывающая). Ответ — ‘да’ или ‘нет’.
Используйте следующий алгоритм:
На каждом шаге цикла во время просмотра строки символов текущее значение количества открывающих скобок больше
или равно текущему значению количества закрывающих скобок.
После окончания цикла количество открывающих скобок равно количеству закрывающих скобок.

Вариант 15
Задача 1. Пусть дано натуральное число n. Составить программу вычисления n3 как суммы нечетных чисел исходя из того, что: 13 = 1; 23 = 3 + 5; 33 = 7 + 9 + 11; 43 = 13 + 15 + 17 + 19; 53 = 21+ 23 + 25 + 27 + 29; …
Задача 2. Исключить из данной строки группы символов, расположенные между скобками ( , ). Сами скобки тоже должны быть исключены.
Указание: предполагается, что внутри каждой пары скобок нет других скобок.

Вариант 16
Задача 1. Вычислить с точностью eps>0 бесконечную сумму
Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps; все последующие слагаемые можно уже не учитывать.
Задача 2. Даны две строки S1 и S2. Создать строку, состоящую из символов, входящих либо в S1, либо в S2, но не в обе сразу.

Вариант 17
Задача 1. Вычислить с точностью eps>0 бесконечную сумму
Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps; все последующие
слагаемые можно уже не учитывать.
Задача 2. Даны две строки S1 и S2. Создать строку, состоящую из латинских букв, не принадлежащих какой-либо строке S1 и S2. Указание: результирующая строка должна содержать те латинские буквы, которых вообще нет ни в строке S1, ни в строке S2.

Вариант 18
Задача 1. Составить программу вычисления значения функции
Задача 2. Для заданных трех строк S1, S2 и S3 напечатать те латинские буквы, которые входят только в одну из этих строк.
Указание: например, ввели строки S1 — ‘asfgsas’, S2 — ‘qweasdyu’, S3 — ‘mnbqwef’. Ответом должно служить следующее: ‘Только в первую строку входят буквы — g’, ‘Только во вторую строку входят буквы — dyu’, ‘Только в
третью строку входят буквы — mnb’.

Вариант 19
Задача 1. Вводим вещественные числа x1, x2, … до тех пор, пока не введем отрицательное число (первое число − неотрицательное). И пусть x1, x2, …, xn — члены данной последовательности, предшествующие отрицательному числу. Посчитать количество полных квадратов среди чисел x1, x2, …, xn.
Подсказка. Число k является полным квадратом, если выполнено равенство k = (trunc( k ))2.
Задача 2. Для заданных трех строк S1, S2 и S3 определить, какая из них является десятичной записью числа, кратного 3.
Указание: строка может быть любой длины, поэтому переводить строку целиком в число не рекомендуется. Вспомните и используйте другой метод определения кратности числа 3.

Вариант 20
Задача 1. Даны натуральное число n, действительные числа x1, x2, …, xn. Найти длину наименьшего отрезка числовой оси, содержащего все числа x1, x2, …, xn.
Задача 2. Для заданных трех строк S1, S2 и S3 определить, какая из них является палиндромом. Назовем строку палиндромом, если его запись читается одинаково с начала и с конца (как, например, ‘казак’, ‘алла’, ‘fffjjjfff’). Указание: определить булевскую функцию f(s) для проверки, является ли строка s палиндромом. Результатом должен быть ответ ‘да’ или ‘нет’.

ЛАБОРАТОРНАЯ РАБОТА № 2
Лабораторная работа № 2 посвящена созданию программ с использованием массивов (одномерных и матриц) и множеств. В этих программах полезно использовать подпрограммы.
Задание состоит из двух задач, требующих написания программ на языке Паскаль. Программы должны быть написаны в рамках структурного программирования. В частности, запрещается использовать операторы перехода и метки.

Вариант 1
Задача 1. Даны целые числа a1, a2, ..., an . Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением max (a1, a2, ..., an), домножить на max (a1, a2, ..., an).
Задача 2. Спортлото: 6 из 49. Составьте программу, в которой загадываются, иначе говоря, создаются 6 разных чисел, значения которых никак не связаны друг с другом, а величина лежит в интервале от 1 до 49.
Указание. Для решения задачи используйте множества. Выражение random(49) +1 дает случайное целое число в интервале от 1 до 49.

Вариант 2
Задача 1. var k : integer; c : array[1..n, 1..m] of char; Определить k — количество различных элементов массива c (т.е. повторяющиеся элементы считать один раз). Указание: для хранения счетчиков для всех символов использовать массив типа array[char] of integer.
Задача 2. В возрастающем порядке напечатать все целые числа из диапазона 1..255, представимые в виде n2 + m2, где m, n ≥ 0. Указание. Для решения задачи используйте множества.

Вариант 3.
Задача 1. var k : integer; c : array[1..n, 1..m] of integer; Определить k — количество ‘особых’ элементов массива c, считая элемент ‘особым’, если в его строке слева от него находятся элементы, меньшие его, а справа — большие. Указание: определите булевскую функцию f(x), которая проверяет, является ли элемент x ‘особым’.
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно один раз. Указание: решение задачи простое, если вы будете использовать множества.

Вариант 4
Задача 1. Дана матрица целых чисел размером MxN. Найти номера строки и столбца наибольшего элемента матрицы.
Задача 2. Дана строка. В алфавитном порядке напечатайте все малые латинские буквы, не входящие в эту строку. Указание: решение задачи простое, если вы будете использовать множества.

Вариант 5
Задача 1. Даны действительные числа a1, a2, ..., an, b1, b2, ..., bn. Вычислить (a1 + bn) * (a2 + bn–1)* ... *(an + b1).
Задача 2. Спортлото: 5 из 36. Составьте программу, в которой загадываются, иначе говоря, создаются 5 разных чисел, значения которых никак не связаны друг с другом, а величина лежит в интервале от 1 до 36.
Указание: решение задачи простое, если вы будете использовать множества. Выражение random(36) +1 дает случайное целое число в интервале от 1 до 36.

Вариант 6
Задача 1. Даны координаты n точек на плоскости: x1, y1, ..., xn, yn. Найти номера двух точек, расстояние между которыми наибольшее (считать, что такая пара точек единственная).
Задача 2. Напечатать все натуральные числа от 10 до 32767, в десятичной записи которых нет одинаковых цифр. Указание: решение задачи простое, если вы будете использовать множества. Необходимо для каждого числа создавать множество, состоящее из цифр числа. При этом проверять: если очередная цифра числа есть уже во множестве, то такое число не надо выводить на экран.

Вариант 7
Задача 1. Определить, является ли заданная целая квадратная матрица n-го порядка магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
Пример магического квадрата:
0 1 2 3 4
1 2 3 4 0
2 3 4 0 1
3 4 0 1 2
4 0 1 2 3
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку более одного раза. Указание: решение задачи простое, если вы будете использовать множества.

Вариант 8
Задача 1. Дана последовательность из n целых чисел. Определить количество инверсий в этой последовательности (т.е. таких пар элементов, в которых большое число находится слева от меньшего: x i > x j при i < j).
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все строчные латинские согласные буквы, входящие в эту строку.
Указание: гласные буквы — а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.

Вариант 9
Задача 1. type вектор = array [1..n] of integer; (n – четно), матрица = array [1..n] of вектор; var A : матрица; x : вектор; В матрице A поменять местами 1-ю и 2-ю строки, 3-ю и 4-ю строки,..., (n–1)-ю и n-ю строки (воспользоваться x как вспомогательным массивом).
Задача 2. Дана строка символов. Подсчитайте количество различных латинских малых букв, входящих в данную строку. Указание: решение задачи простое, если вы будете использовать множества.

Вариант 10
Задача 1. var A : array [1..6,1..6] of boolean; B : array [1..5,1..5] of boolean;
n,k : 1..6; Получить массив B из массива A удалением n-ой строки и kго столбца.
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все большие латинские гласные буквы, входящие в эту строку.
Указание: гласные буквы — а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.

Вариант 11
Задача 1. const n =..; var A,B,C : array [1..n,1..n] of real; Вычислить С = (A+B)2 (сумма двух матриц A и B возводится в квадрат).
Указание: определите процедуру с параметрами для сложения матриц и процедуру с параметрами для возведения матрицы в квадрат.
Задача 2. Дана строка из строчных латинских букв. Напечатайте все буквы, входящие в текст не менее двух раз. Указание. Просматривая в цикле символы текста, формируйте два множества: одно содержит уже просмотренные символы, другое наполняется теми элементами, которые входят в первое множество.

Вариант 12
Задача 1. const n = ...; var x, y : array [1..n] of real;
Дано k (1 <= k <= n–1). Преобразовать массив x по следующему правилу (воспользоваться массивом y как вспомогательным): элементы массива x циклически сдвинуть на k позиций влево. Подсказка: определить процедуру для сдвига массива на 1 позицию влево и применить ее k раз.
Задача 2. Дана строка. Определить, каких букв больше в этом тексте: латинских строчных гласных или согласных. Указание: гласные буквы — а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.

Вариант 13
Задача 1. var A : array [1..n,1..n] of real;
Найти сумму элементов из области матрицы А, отмеченной символом '*' (диагонали входят в выделенную область):
* * * * * * *
0 * * * * * 0
0 0 * * * 0 0
0 0 0 * 0 0 0
0 0 * * * 0 0
0 * * * * * 0
* * * * * * *
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские буквы, входящие в эту строку ровно два раза.
Указание: решение задачи простое, если вы будете использовать множества. Заведите три множества X1, X2 и X3 (сначала эти множества пустые). И в цикле просмотрите все символы из введенной строки. С каждым символом — маленькой латинской буквой — выполняйте следующие действия:
1. Если этого символа нет в X1, то поместите его туда (после окончания цикла множество X1 содержит все символы из строки).
2. Если этот символ есть в X1 и нет в X2, то поместите этот символ в X2 (после окончания цикла множество X2 содержит все символы из строки, которые там встречаются более одного раза).
3. Если этот символ есть в X1 и в X2, то поместите этот символ в X3 (после окончания цикла множество X3 содержит все символы из строки, которые там встречаются более двух раз).
После окончания цикла распечатайте в алфавитном порядке все элементы из разности множеств X2–X3.
Это будет ответ.
(Используйте цикл for c:=’a’ to ‘z’ do если c входит в X2–X3, то печать c. )

Вариант 14
Задача 1. Даны натуральное n и (построчно) элементы квадратной вещественной матрицы А четвертого порядка. Вычислить n-ю степень этой матрицы (A1 = A; A2 = A*A; A3 = A2 * A и т.д.).
Указания: 1. Определите процедуру mult(a,b,c) для умножения матриц (a*b = c).
2. Для вычисления n-ой степени матрицы поступайте так же, как при вычислении в цикле n-ой степени числа, но вместо умножения чисел используйте процедуру mult.
Задача 2. Дана строка. В алфавитном порядке напечатайте (по разу) все малые латинские гласные буквы, входящие в эту строку ровно 3 раза.
Указание: гласные буквы — а, e, i, o, u; остальные — согласные. Решение задачи простое, если вы будете использовать множества.

Вариант 15
Задача 1. Даны действительные числа a1, a2, ..., an, an , ... , a2n . Получить max (a1 + a2n , a2 + a2n – 1, ... , an + an+1 ); min(a1 * an, a2 * an+1, ..., an+1 * a2n ).
Задача 2. Напечатать все натуральные числа от 10 до 32767, в десятичной записи которых нет одинаковых цифр.
Указание: решение задачи простое, если вы будете использовать множества. Необходимо для каждого числа создавать множество, состоящее из цифр числа. При этом проверять: если очередная цифра числа есть уже во множестве, то такое число не надо выводить на экран.

Вариант 16
Задача 1. const n = ...; var s : array [1..n] of integer; Напечатать те элементы массива s, которые являются полными квадратами (1, 4, 9, 16, 25,...).
Подсказка. Число k является полным квадратом, если выполнено равенство k = (trunc( k ))2.
Задача 2. Дана строка из строчных латинских букв. Напечатать первые вхождения букв в текст, сохраняя их взаимный порядок. Указание: формируйте множество, в которое очередной элемент добавляется после первой печати.

Вариант 17
Задача 1. Даны целые числа a1, a2, ..., an, каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются (+, –, +, –,.... или –, +, –, +,...), то напечатать исходную последовательность. Иначе напечатать все отрицательные члены последовательности, сохранив порядок их следования.
Задача 2. Введите множество, состоящее из 20 целых чисел от 1 до 50. Определите, сколько чисел, у которых последняя цифра 3, 5 или 7.

Вариант 18
Задача 1. Напечатать величины a1, a2, ..., an, где a0 — заданное целое число,
ai = [i / 2] ai 1 a + − при i = 1, 2, ... n. [i/2] означает целую часть числа i/2.
Задача 2. type S = set of 0..50; Описать функцию p (A), подсчитывающую произведение элементов множества A типа S. (Например, sum ([5,8,23] = 920.))
Программа: введите множество A (ноль используйте как прекращение ввода). Выдайте, вызвав функцию p, произведение элементов множества A.

Вариант 19
Задача 1. var A : array [1..n,1..n] of real; (n–нечетно) Найти сумму элементов из области матрицы А, отмеченной символом ' * ':
1 n
0 0 0 * 0 0 0
0 0 * * * 0 0
0 * * * * * 0
* * * * * * *
0 * * * * * 0
0 0 * * * 0 0
n 0 0 0 * 0 0 0
Задача 2. Создайте множество, состоящее из простых чисел < 255 и дающее при делении на 4 остаток 3. Напечатайте элементы этого множества.

Вариант 20
Задача 1. Даны целые числа a1, a2, ..., an. Наименьший член последовательности a1, a2, ..., an заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения. Если в последовательности несколько членов со значением min(a1, a2, ..., an), то заменить последний по порядку.
Задача 2. Дана строка символов. В возрастающем порядке напечатайте все цифры, входящие в эту строку.

ЛАБОРАТОРНАЯ РАБОТА № 3
Лабораторная работа № 3 состоит из двух задач. Первая задача посвящена созданию программ, отражающих приемы работы с файлами. Необходимо в начале программы создать файл (элементы файла вводятся с клавиатуры или генерируются случайным образом), а в конце программы сначала вывести на экран содержимое созданного файла, а затем отразить полученные результаты. Во второй задаче необходимо составить программу, реализующую рекурсивный алгоритм. В ходе выполнения лабораторной работы № 3 необходимо составить программы на языке Паскаль.

Вариант 1
Задача 1. type ряд = file of integer; Описать процедуру p(f,g) от двух файлов типа ряд, которая в пустой файл f переписывает положительные элементы файла g. Указание: введите файл g (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл f.
Задача 2. Напишите рекурсивную подпрограмму, которая печатает в обратном порядке заданную строку.

Вариант 2
Задача 1. type fr = file of real; Описать процедуру predlast(f), значением которой является предпоследний элемент файла f, имеющего тип fr и содержащего не менее двух элементов. Указание: введите файл f (последний элемент = 0) и вычислите функцию predlast(f).
Задача 2. Type reals = file of real; var f : reals; Опишите рекурсивную функцию sum без параметров для нахождения суммы элементов файла f.

Вариант 3
Задача 1. type rad = file of integer; Описать процедуру p(f,g) от двух файлов типа rаd, которая из файла f переписывает в пустой файл g сначала все положительные числа, а потом все отрицательные.
Указание: введите файл f (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл g.
Задача 2. Описать рекурсивную функцию letter (s), которая подсчитывает количество букв в строке s.

Вариант 4
Задача 1. type seria = file of integer; Описать функцию prod(s) с вещественным значением, подсчитывающую произведение ненулевых элементов файла s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции prod(s).
Задача 2. Напишите рекурсивную программу, которая n раз выводит на экран текст истории о попе и его собаке (рассказ в рассказе).

Вариант 5
Задача 1. type seria = file of integer; var s:seria; Описать функцию max(s), вычисляющую значение максимального элемента файла s. Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции max(s).
Задача 2. Во входном файле задана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число. Описать рекурсивную функцию sum без параметров для нахождения суммы этих положительных чисел.

Вариант 6
Задача 1. Описать логическую функцию check(s) для текстового файла s, проверяющую, содержит ли файл s латинские буквы. Указание: введите файл s (последний элемент в файле '.') и вычислите значение функции check(s).
Задача 2. Type reals = file of real; var f : reals; Напишите рекурсивную программу, которая печатает сначала все отрицательные элементы этого файла, а затем положительные (в любом порядке).

Вариант 7
Задача 1. Для файла s, состоящего из целых чисел, определите процедуру, которая находит значения максимального и минимального элементов файла s. Указание: введите файл s (последний элемент равен 0) и напечатайте значения максимального и минимального элементов файла s.
Задача 2. const n=...; type vector = array [1..n] of real; Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.
Указание: пусть min(x) — функция, которая вычисляет минимум среди элементов массива x, а min1(k) — функция, которая вычисляет минимум среди элементов xk, xk+1, …, xn массива x (для этой функции массив x есть глобальная переменная, определенная в главной программе). Имеем равенство min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
1) если k=n, то функция возвращает результат xn;
2) если k

Вариант 8
Задача 1. type rad = file of 1..maxint; Описать процедуру prim(f,n), записывающую в файл f все простые числа 2,3,5,7,11,13,17..., не превосходящие целого положительного числа n. Указание: введите n. Выполните процедуру prim(f,n). Распечатайте файл f.
Задача 2. Описать рекурсивную функцию sign (s), которая подсчитывает количество знаков препинания в строке s (знаки: '.' , ',' ,';' , ':').
Вариант 9
Задача 1. type ряд = file of integer; Описать процедуру append(f,g,h) от трех файлов типа ряд, которая записывает в файл f сначала все элементы файла g, а затем все элементы файла h. Указание: введите два файла g и h. Выполните процедуру append(f,g,h). Напечатайте файл f.
Задача 2. Дан массив a : array [1..n] of integer; Напишите рекурсивную программу для вычисления суммы n. Пусть функция f(k) вычисляет сумму 1/a[1]+1/a[2]+…+1/a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=1/a[1];
2) если k>1, то значение функции равно сумме 1/a[k] и f(k–1).

Вариант 10
Задача 1. Type fr = file of real; Описать функцию s3(f), значением которой является сумма последних трех элементов файла f, имеющего тип fr и содержащего не менее 3 элементов. Указание: введите файл f (последний элемент = 0) и вычислите функцию s3(f).
Задача 2. Type reals = file of real; var f : reals; Опишите рекурсивную функцию sum (n) для нахождения суммы n
Указание.
Пусть функция f(k) вычисляет сумму a[1]n+a[2]n+…+a[k]n.
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1]n;
2) если k>1, то значение функции равно сумме a[k]n и f(k–1).

Вариант 11
Задача 1. type seria = file of integer; var s:seria;
Описать функцию poz(s), подсчитывающую количество положительных чисел в файле s. Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции poz(s).
Задача 2. Напишите рекурсивную программу для вычисления суммы n
Указания. Пусть функция f(k) вычисляет сумму a[1]+a[2]+…a[k]. Нам надо вычислить f(n). Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1];
2) если k>1, то значение функции равно сумме a[k] и f(k–1).

Вариант 12
Задача 1. Описать процедуру letter(s,t), которая записывает в текстовый файл t все латинские буквы из строки s. Указание: введите строку s. Выполните процедуру letter(s,t) и распечатайте элементы файла t.
Задача 2. Функция f (n) определена для целых положительных чисел следующим образом: Вычислить f (k) для k=15, 16,..., 30.

Вариант 13
Задача 1. type reals = file of real; Описать процедуру p(f,g,h) от трех файлов типа reals, которая переписывает из файла f в непустой файл g все элементы,
меньшие среднего арифметического всех элементов файла f, и в непустой файл h записывает все остальные числа. Указание: введите файл f (последний элемент = 0). Выполните процедуру p(f,g,h). Распечатайте файлы g и h.
Задача 2. Напишите рекурсивную программу для вычисления суммы n
Указание:
Пусть функция f(k) вычисляет сумму a[1]+a[2]+…a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1];
2) если k>1, то значение функции равно сумме a[k] и f(k–1).

Вариант 14
Задача 1. Дан текстовый файл, в котором строки содержат как латинские буквы, так и цифры. Необходимо создать другой текстовый файл, содержащий строки из первого, преобразованные по следующему принципу: в начале строки расположены все буквы исходной строки, а затем все цифры (в том же порядке). Описать процедуру letter(s,t), которая записывает в текстовый файл t сначала все латинские буквы из строки s, а затем все цифры.
Указание: введите исходный файл. Выполните процедуру letter(s,t) и распечатайте элементы файла t.
Задача 2. Дан массив a : array [1..n] of integer; Напишите рекурсивную программу для вычисления произведения n
Указание.
Пусть функция f(k) вычисляет произведение a[1]*a[2]*…a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
3) если k=1, то f(k)=a[1];
4) если k>1, то значение функции равно произведению a[k] и f(k–1).

Вариант 15
Задача 1. type seria = file of integer; var s:seria;
Описать функцию poz(s, n), подсчитывающую количество положительных и отрицательных чисел в файле s. Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции poz(s, n).
Задача 2. Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s.

ЛАБОРАТОРНАЯ РАБОТА № 4
Лабораторная работа № 4 состоит из двух задач. Первая задача посвящена созданию программ, отражающих приемы работы со списками. Второе задание посвящено созданию программ в графическом режиме. В ходе выполнения лабораторной работы № 4 требуется составить программы на языке Паскаль.

Вариант 1
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру или функцию, которая:
а) переносит в начало непустого списка его последний элемент;
б) добавляет в конец списка L1 все элементы списка L2.
Задача 2. Напишите программу для графической иллюстрации сортировки массива алгоритмом простого выбора. Массив изобразите в виде диаграммы — каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.

Вариант 2
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру или функцию, которая:
а) вставляет в список L за первым вхождением элемента E все элементы списка L1, если E входит в L.
б) удаляет из списка L все элементы, которые есть в списке L1.
Задача 2. Построить эпициклоиду — кривую, заданную параметрическим уравнениемx = (a+b) cos(t) – a cos((a+b) t/a), y = (a+b) sin(t) – a sin((a+b) t/a), a>0, b>0, b/a — целое положительное число, t принадлежит интервалу [0,2π].

Вариант 3
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру, которая удаляет:
а) из списка второй элемент, если такой есть;
б) из непустого списка последний элемент.
Задача 2. Построить лемнискату — кривую, уравнение которой в полярных координатах ρ = a 2 cos(2ϕ) . a>0.

Вариант 4
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру, которая удаляет:
а) из списка первый отрицательный элемент, если такой есть;
б) из списка все отрицательные элементы.
Задача 2. Построить строфоиду — кривую, заданную параметрическим уравнением
x = a(t 2 – 1)/(t 2 + 1),
y = at (t 2 – 1)/(t 2 +1), a>0,t
принадлежит интервалу [– ∞, + ∞].

Вариант 5
Задача 1. Используйте линейные списки для хранения последовательности строк. Опишите функцию, подсчитывающую количество строк — элементов списка, которые:
а) начинаются и оканчиваются одним и тем же символом;
б) начинаются с того же символа, что и следующая строка.
Задача 2. Построить кривую ‘улитку Паскаля’ по заданному параметрическому уравнению
x = a cos 2 (t) + b cos(t),
y = a cos(t) sin(t) + b sin(t), a>0, b>0,
t принадлежит интервалу [0, 2π].
Рассмотреть три случая:
1) b >= 2a (см. рис.); 2) a < b< 2a; 3) a > b.

Вариант 6
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру или функцию, которая для данного списка L создает список L1, содержащий те же элементы, но в обратном порядке
Задача 2. Соединить конечное множество точек на плоскости замкнутой ломаной линией без самопересечений с вершинами в этих точках. (Полный перебор не делать; ответом будет порядок обхода точек плоскости.)
Указание: перейти к полярным координатам и упорядочить точки по значениям угла, а для точек с одинаковым значением угла — по расстоянию до полюса.

Вариант 7
Задача 1. Используйте линейные списки для хранения последовательности вещественных чисел. Опишите процедуру или функцию, которая:
а) находит среднее арифметическое элементов непустого списка;
б) заменяет в списке все вхождения элемента E1 на элемент E2.
Задача 2. Даны целые числа t1, t2, ... t31, — задающие график температур за март месяц. Построить график температур. Отрезки прямых, лежащие выше 0 градусов Цельсия и лежащие ниже 0 градусов Цельсия, должны быть окрашены в разные цвета.

Вариант 8
Задача 1. Используйте линейные списки для хранения последовательности вещественных чисел. Опишите процедуру или функцию, которая:
а) меняет местами первый и последний элементы непустого списка;
б) удаляет последний элемент списка.
Задача 2. Построить кривую кардиоиду по заданному параметрическому
уравнению
x = a cos t (1+ cos t),
y = a sin t (1 + cos t), a>0, t OE [0, 2p).

Вариант 9
Задача 1. Используйте линейный список для представления многочлена от переменно x, упорядоченного по степеням x. Напишите программу для дифференцирования многочлена.
Задача 2. Построить кривую циссоиду по заданному параметрическому
уравнению
x = a t2/(1+t2),
y = a t3 /(1 + t2), a>0, t OE (–•, •).

Вариант 10
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру, которая вставляет:
а) новый элемент Е после первого элемента непустого списка;
б) новый элемент Е1 за каждым вхождением элемента Е.
Задача 2. Построить спираль вокруг начала координат с n витками и внешним радиусом r; начальное направление спирали образует с осью x угол a. Параметрическое представление спирали:
x = r cos t,
y = r sin t,
r = t/2, a£t£2p n.

Вариант 11
Задача 1. Используйте представление последовательности строк в виде
линейного списка и опишите процедуру ПЕРЕСТАНОВКА(L , i , j), меняющую местами i-ю и j-ю строки списка L.
Задача 2. Напишите программу для графической иллюстрации сортировки массива алгоритмом ‘пузырька’. Массив изобразите в виде диаграммы — каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.

Вариант 12
Задача 1. Используйте представление последовательности строк в виде
линейного списка и опишите процедуру ЗАМЕНА(L , i , j), заменяющую i-ю строку списка L на копию j-й строки.
Задача 2. Напишите программу для графической иллюстрации сортировки массива алгоритмом простых включений. Массив изобразите в виде диаграммы — каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.

Вариант 13
Задача 1. Используйте представление последовательности строк в виде
линейного списка и опишите процедуру ДОБАВИТЬ(L , i , j), добавляющую после i-ой строки списка L копию j-й строки.
Задача 2. Напишите программу для графической иллюстрации сортировки массивов алгоритмом слияния. Массивы изобразите в виде диаграммы — каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массивов после каждого перемещения элементов.

Вариант 14
Задача 1. Используйте представление последовательности строк в виде
линейного списка и опишите процедуру УДАЛИТЬ(L , i), удаляющую i-ю строку из списка L.
Задача 2. Напишите программу, которая имитирует движение велосипеда.
Указание: напишите процедуру отображения велосипеда с параметрами. В качестве параметра возьмите координаты какойнибудь точки велосипеда (например, середина педалей — x1, y1). Назовем данную точку ‘центральной’. Построение велосипеда ведите относительно центральной точки (например, чтобы нарисовать колесо велосипеда, можно воспользоваться следующим действием: circle(x1+50,y1,25)). Перемещение
велосипеда по экрану можно получить, реализовав, например, следующий алгоритм:
1. Задаем начальные значения переменным x1 и y1.
2. Рисуем велосипед заданным цветом с данными значениями x1 и y1 (вызываем процедуру рисования велосипеда).
3. Изменяем цвет линий на цвет, соответствующий цвету фона.
4. Рисуем велосипед измененным цветом с теми же значениями x1 и y1 (вызываем процедуру рисования велосипеда).
5. Изменяем координаты x1.
6. Изменяем цвет линий на цвет, соответствующий цвету велосипеда.
7. Рисуем велосипед заданным цветом с новыми значениями
x1 и y1 (вызываем процедуру рисования велосипеда).
8. Повторяем действия 2—7.

Вариант 15
Задача 1. Используйте линейные списки для хранения последовательности чисел. Опишите процедуру или функцию, которая для данного списка L создает список L1, содержащий только положительные элементы списка.
Задача 2. Написать программу, вызывающую пульсацию окружности в центре экрана. Окружность должна увеличиваться в диаметре до тех пор, пока не достигнет границ экрана, затем она начинает сжиматься. Процесс должен циклически повториться, при этом необходимо обеспечить чередование цветов при увеличении и уменьшении диаметра окружности.





ОТПРАВИТЬ ЗАЯВКУ
(уточните наименование работ: ТКР, ЛР, ККР, КП, ЭКЗ,
2 последние цифры пароля
к какому числу нужно выполнить работы)

Имя

Email



© 2009-2024 TusurBiz