Министерство образования Российской федерации Ростовский ордена Трудового Красного Знамени государственный университет
...
80 downloads
243 Views
391KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской федерации Ростовский ордена Трудового Красного Знамени государственный университет
Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева
Информатика. Задачи. Часть 2
Задачи на тему: массивы, строки, множества. Методические указания для студентов дневного и вечернего отделений механико-математического факультета
Ростов - на - Дону 2002
2
Печатается по решению учебно-методической механико-математического факультета РГУ от . .2002.
комиссии
АННОТАЦИЯ Методические указания содержат набор задач, предназначенных для отработки основных приемов программирования при работе с такими структурами данных, как одномерные и двумерные массивы, строки и множества. Методические указания предназначены для начинающих программистов, студентов младших курсов, специализирующихся в области прикладной математики, и для преподавателей, ведущих практические занятия по программированию. Авторы: Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева
© Н.И. Амелина, Я.М. Русанова, А.А. Чекулаева, 2002
3
1 2 3 4 5
СОДЕРЖАНИЕ Массив как структура данных ............................................................... 4 Двумерные массивы (матрицы)............................................................. 8 Сортировка массивов. Поиск элементов. ............................................. 12 Строки ...................................................................................................... 15 Множества ............................................................................................... 19
4 1.1 Массив как структура данных. Программа, которая из данных n целых чисел выводит сначала все отрицательные числа, а затем - все остальные. Program MAS; const nmax = 10; type IArray = array[1..nmax] of integer; var A: IArray; n, i: byte; begin write ('количество элементов массива = '); readln (n); writeln ('Введите элементы массива.'); for i := 1 to n do readln (A[i]); writeln ('Вывод по заданному правилу:'); for i := 1 to n do if A[i]< 0 then writeln(A[i]); for i := 1 to n do if A[i] >= 0 then writeln(A[i]); end. 1.1.1 Дан массив целых чисел. Найти: а) сумму (произведение) положительных (отрицательных) элементов массива; б) среднее арифметическое его положительных (отрицательных) элементов; в) сумму (произведение) четных (нечетных) элементов массива; г) сумму (произведение) элементов массива, кратных (не кратных) заданному числу. 1.1.2 Дан массив чисел A. Для него нужно: а) вычислить
10
y = ∑ ( −1) i Ai
без
использования
операции
i =1
возведения в степень; б) получить массив B, расположив элементы массива A в обратном порядке; в) получить массив B, в котором i-й элемент является средним арифметическим всех элементов массива A, кроме i-го. 1.1.3 Дан массив целых чисел. Определить: а) сколько раз в массиве меняется знак;
5 б) количество инверсий в массиве (т.е. таких пар элементов, в которых большее число находится слева от меньшего); в) количество элементов в наиболее длинной группе из подряд идущих нулей. 1.1.4 Дан массив вещественных чисел. Найти: а) произведение и среднее арифметическое элементов массива, предшествующих первому нулевому элементу; б) сумму и произведение элементов массива, расположенных между первым и вторым нулевыми элементами; в) количество и сумму положительных элементов массива, предшествующих первому отрицательному элементу; г) среднее арифметическое первых подряд идущих положительных элементов. 1.1.5 Преобразовать массив вещественных чисел по правилу: а) положительные элементы заменить их квадратами, отрицательные - абсолютными величинами; б) умножить все отрицательные элементы массива на первый, если он тоже отрицателен; в) минимальный элемент заменить целой частью среднего арифметического всех элементов массива (если в массиве несколько элементов с минимальным значением, заменить последний по порядку); г) все элементы с нечётными номерами, предшествующие первому по порядку максимальному элементу, умножить на значение максимального элемента; д) если первый элемент неотрицателен, умножить все элементы на квадрат минимального элемента, в противном случае - на квадрат максимального. 1.1.6 Дан массив вещественных чисел. Определить: а) значение наибольшего (наименьшего) элемента и его порядковый номер в массиве; б) разность между наибольшим и наименьшим элементом; в) отношение суммы (произведения) элементов массива, расположенных до максимального (минимального) элемента в массиве, к сумме (произведению) элементов, расположенных после максимального (минимального); г) произведение (сумму, среднее арифметическое) элементов массива, расположенных между максимальным и минимальным элементами; д) среднее арифметическое элементов (сумму, произведение) массива, расположенных между максимальным
6 (минимальным) и "центральным" элементами массива (предполагается, что в массиве нечётное число элементов). 1.1.7 Преобразовать массив по правилу x k' = max xi , п ри 1 ≤ i ≤ k . 1.1.8 Даны два вещественных массива с разным числом элементов. Найти: а) общее число нулевых (ненулевых, положительных, отрицательных) элементов массивов; б) минимальную (максимальную) из сумм (произведений) положительных (отрицательных, четных, нечетных) элементов массивов; в) сумму минимальных элементов обоих массивов; г) отношение максимальных элементов массивов; д) модуль разности чисел, являющихся минимальными среди положительных элементов массивов. 1.1.9 Даны вещественные массивы A и B с разным числом элементов. Логической переменной Flag присвоить значение "истина", если: а) у массива A больше положительных элементов, чем у массива B; б) сумма отрицательных элементов массива A меньше суммы отрицательных элементов массива B; в) в массиве A нулевых элементов меньше, чем в массиве B; г) произведение ненулевых элементов массива A больше произведения ненулевых элементов массива B; иначе Flag положить равной "ложь". Выдать значение переменной. 1.1.10 Даны вещественные массивы Х и У. Преобразовать каждый из них по правилу: а) если у массива есть хотя бы один элемент, принадлежащий отрезку [a,b], то все отрицательные элементы заменить нулями. В противном случае - единицами; б) заменить нулями элементы предшествующие первому по порядку отрицательному элементу (если отрицательных элементов нет, вектор оставить без изменений); в) всем элементам, следующим за максимальным (минимальным) элементом присвоить значение максимального элемента (минимального). 1.1.11 Для заданного массива выяснить, упорядочены ли элементы массива а) по невозрастанию; б) по неубыванию;
7 в) по невозрастанию или по неубыванию. 1.1.12 Для заданного одномерного массива выяснить представляют ли его элементы монотонную последовательность. 1.1.13 Найти элемент, ближайший (наиболее удаленный) по значению к максимуму (минимуму, среднему арифметическому). 1.1.14 Напишите программу, которая вводит значения ежемесячной зарплаты для заданного двенадцатимесячного периода и затем определяет месяц, в котором а) обнаружен наибольший прирост зарплаты; б) обнаружено наибольшее уменьшение зарплаты. 1.1.15 Дан массив целых чисел. а) для каждого из чисел, входящего в массив, указать, сколько раз оно входит в массив. б) выяснить, имеется ли в массиве хотя бы одна пара совпадающих чисел. в) выдать все числа, входящие в массив по одному разу; г) найти число различных элементов массива. 1.1.16 Поменять местами: а) максимальный и минимальный элементы массива; б) наибольший (наименьший) элемент с первым (последним) элементом. 1.1.17 Переставить элементы массива так, чтобы в начале массива располагались все отрицательные (четные), а в конце массива все положительные элементы (нечетные). 1.1.18 Из массива удалить: а) все элементы, равные (не равные) заданному значению; б) все элементы, меньшие (большие) заданного значения; в) первый (последний, второй) из нулевых элементов; г) элементы, принадлежащие (не принадлежащие) заданному интервалу (отрезку). 1.1.19 Элементы массива (числового или символьного) а) сдвинуть на одну позицию влево (вправо); б) сдвинуть на k позиций влево (вправо); в) циклически сдвинуть на одну позицию влево (вправо); г) циклически сдвинуть на k позиций влево (вправо).
8 1.1.20 По заданным вещественным числам a0, a1,…, a20 и t вычислить значение многочлена a n x n + a n −1 x n −1 + ... + a1 x + a0 и его производной в точке t. 1.1.21 По заданным коэффициентам Aij и правым частям bi решить систему линейных уравнений. n
∑A x j =1
ij
j
= bi
Считать, что определитель матрицы отличен от нуля.1 1.1.22 Вычислить длину заданного одномерного массива (вектора) по формуле: d = a12 + a 22 + ... + a n2 , где n- количество элементов вектора. 1.1.23 Вычислить скалярное произведение двух векторов. 1.1.24 Дан текст из n литер. Выдать вначале все цифры, входящие в этот текст, а затем все остальные литеры, сохраняя при этом взаимное расположение литер в каждой из этих двух групп.2 1.1.25 Дан непустой текст из цифр, за которыми следует точка. Выдать наиболее часто встречающуюся цифру. 1.1.26 Дан текст из n литер. Определить, является ли он палиндромом, т.е. читается ли он одинаково справа налево и наоборот. 1.1.27 Дан текст. Заменить каждое вхождение одной точки троеточием. 1.2 Двумерные массивы (Матрицы) Программа, которая заданную прямоугольную матрицу (двумерный массив) преобразовывает по правилу: все отрицательные элементы заменить их абсолютными величинами. Program MATRIX; const nmax = 10; type matr = array [1..nmax,1..nmax] of real; var A: matr; m, n, i, j: byte; fl: boolean; {признак преобразования}; begin 1 2
Рекомендация: вначале приведите систему уравнений к треугольному виду. В задачах № 2.1.24-2.1.27 под текстом понимается массив, элементами которого являются символы.
9 writeln (‘Введите число строк и столбцов матрицы’); readln (m,n); writeln (‘Введите матрицу’); fl:= false; for i:= 1 to m do for j:= 1 to n do if A[i, j] < 0 then begin A[i, j]:= abs(A[i, j]); fl:=true end; if not fl then writeln (‘Матрица не преобразована, так как’, ‘отрицательных элементов нет’) else begin for i:= 1 to m do begin for j:= 1 to n do write (A[i,j]:8:2); writeln end end. 1.2.1 Для квадратной матрицы определить: а) след матрицы, то есть сумму диагональных элементов (главной, побочной); б) норму матрицы. 1.2.2 Для прямоугольной матрицы найти: а) сумму (произведение) её элементов (квадратов её элементов); б) произведение (сумму) положительных (отрицательных, ненулевых) элементов; в) минимальный и максимальный элементы; г) номера строки и столбца, на пересечении которых находится максимальный (минимальный) элемент. 1.2.3 Дана прямоугольная матрица. Получить из нее новую матрицу путём а) деления всех элементов на квадрат последнего (первого) элемента последней (первой) строки (столбца), если он отличен от нуля; б) замены нулями всех отрицательных (положительных) элементов; в) замены всех элементов, по абсолютной величине больших (меньших) Х, на Х.
10 1.2.4 Прямоугольную матрицу преобразовать по правилу: а) если последний (первый) элемент строки (столбца) отличен от нуля, разделить на него все элементы этой строки (столбца); б) если первый (последний) элемент столбца (строки) отрицателен (положителен), возвести в квадрат все элементы этого столбца (строки); в) разделить все элементы матрицы на элемент, наибольший (наименьший) по абсолютной величине; г) умножить все элементы матрицы на минимальный (максимальный) элемент этой матрицы; д) все элементы каждой строки (столбца) матрицы разделить на минимальный (максимальный) элемент этой строки (столбца); е) все элементы каждого столбца (строки) матрицы умножить на максимальный (минимальный) элемент этого столбца (строки). 1.2.5 Дана прямоугольная матрица. Получить вектор, каждая компонента которого: а) сумма всех элементов соответствующей строки (столбца) матрицы; б) произведение всех элементов соответствующего столбца (строки) матрицы; в) сумма отрицательных (положительных) элементов соответствующего столбца (строки); г) произведение отрицательных (положительных) элементов соответствующей строки (столбца); д) количество нулевых элементов соответствующей строки (столбца) матрицы; е) количество отрицательных (положительных) элементов соответствующего столбца (строки) матрицы; ж) минимальный (максимальный) элемент соответствующего столбца матрицы; з) максимальный (максимальный) элемент соответствующей строки матрицы; и) наибольший (наименьший) по абсолютной величине элемент соответствующей строки (столбца) матрицы. 1.2.6 Для заданного двумерного массива (матрицы) с компонентами вещественного типа написать программы решения задач: а) поменять местами минимальный и максимальный элементы; б) поменять местами строки (столбцы) с номерами i и j; в) определить количество различных элементов матрицы, т.е. повторяющиеся элементы считать один раз; г) в каждой строке (столбце) поменять местами минимальный и максимальный элементы
11 д) в каждой строке (столбце) определить количество различных элементов, т.е. повторяющиеся элементы считать один раз. 1.2.7 Получить таблицу Пифагора - квадратную матрицу размером m х m, элементы которой определяются формулой Pij=i*j. 1.2.8 Получить матрицу, транспонированную заданной прямоугольной матрице.
по
отношению
к
1.2.9 Определить, является ли заданная целая квадратная матрица: а) симметричной относительно главной (побочной) диагонали. б) ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1; в) магическим квадратом (суммы во всех строках и столбцах, одинаковы). 1.2.10 Определить индексы всех седловых точек матрицы, т.е. таких элементов, которые являются наименьшими в своей строке и одновременно наибольшими в своем столбце. 1.2.11 Подсчитать количество локальных минимумов (максимумов) заданной матрицы (локальный минимум - элемент, который строго меньше своих соседей). 1.2.12 Найти максимум (минимум) среди всех локальных минимумов (максимумов) заданной матрицы. 1.2.13 Преобразовать заданную матрицу, переставляя её строки и столбцы так, чтобы наибольший элемент оказался в правом нижнем углу. 1.2.14 По заданной матрице получить новую матрицу, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Соседями элемента Aij матрицы называют элементы Akl, для которых i-1≤k ≤i+1, j-1 ≤ l ≤ j+1, (k,l) ≠ (i,j). 1.2.15 Проверить, является ли матрица B обратной для матрицы А. 1.2.16 Найти сумму двух прямоугольных матриц.
12 1.2.17 Найти произведение вектора на матрицу и произведение матрицы на вектор. 1.2.18 Найти произведение двух прямоугольных матриц. 1.2.19 Вычислить n-ю степень квадратной матрицы. 1.2.20 Дана таблица результатов некоторого спортивного турнира, в котором участвовало K спортсменов. Элементы таблицы записаны по следующему правилу: если i-й спортсмен выиграл у j-го, то в i-й строке и j-м столбце ставится 'V', в случае проигрыша -'P' в соответствующей клетке таблицы, при ничьей 'N', а на главной диагонали записываются 'X'. За выигрыш даётся одно очко, за ничью - пол-очка, за поражение - ноль. Выдать список участников в порядке убывания набранных ими очков. 1.2.21 Напишите программу кодирования текстов кодом Виженера. В нем несколько раз k-я буква сообщения зашифровывается (k MOD n)-м алфавитом, причём n - это общее число применяемых алфавитов. 1.2.22 Дан текст. Напишите: а) программу кодирования текстов методом Цезаря, в котором каждую букву алфавита заменяет другая определенная буква (например "а" вместо "б", "б" вместо "ж" и т.д). б) программу, подбирающую ключ к коду Цезаря (смотрите предыдущую задачу). И подсчитайте частоты встречаемости букв в закодированном тексте и частоты встречаемости букв в русском языке. 1.3 Сортировка массивов. Поиск элементов. Методы сортировки можно разбить на три основные группы: сортировка выбором, сортировка обменом, сортировка вставками. Для сортировки n-элементного массива методом прямого выбора отыскивается максимальный (минимальный) элемент и меняется местами с последним (первым) элементом. Затем этот процесс повторяется с оставшимися n-1 элементами, n-2 элементами и т.д. Простейший алгоритм прямого обмена - "метод пузырька" основан на сравнении пары соседних элементов и их обмене, если они расположены не по порядку, и продолжении этого процесса до тех пор, пока не будут упорядочены все элементы. При сортировке вставками элементы просматриваются по одному, начиная со второго, каждый очередной i-й элемент вставляется в подходящее место среди (i-1)-го ранее упорядоченного элемента.
13 Процесс нахождения элемента массива, значение которого равно заданному ключевому значению, называется поиском. Если для проведения процедуры поиска не предлагается дополнительной информации, то используется простейший метод линейного поиска, при котором последовательно перебираются все элементы массива до тех пор, пока не будет обнаружен первый ключевой элемент, или пока весь массив не будет просмотрен, а совпадений найти не удастся. Для упрощения процедуры поиска используется метод линейного поиска с барьером. В конец массива помещается дополнительный (n+1) элемент, значение которого задается равным ключевому. Далее действия производятся в соответствии с алгоритмом линейного поиска. Данный метод гарантирует, что ключевой элемент будет найден. Поиск можно сделать более эффективным, если элементы массива будут упорядочены. В этом случае применяется алгоритм двоичного поиска. Алгоритм определяет местоположение среднего элемента массива и сравнивает его с ключевым. Если они равны, то ключевой элемент найден и выдаётся его индекс. В противном случае задача сокращается на половину элементов массива. Если ключ меньше, чем средний элемент массива, то дальнейший поиск осуществляется в первой половине массива, а если больше, то во второй половине. Поиск продолжается до тех пор, пока ключевой элемент не станет равным среднему элементу или пока оставшийся подмассив содержит хотя бы один элемент, не равный ключевому. Отметим, что если для определения места включения очередного элемента в упорядоченную часть массива для метода сортировки вставками использовать двоичный поиск, то удастся увеличить скорость сортировки. Программа, реализующая поиск заданного элемента в упорядоченном массиве методом бинарного поиска. program BINPOISK; const nmax = 9; type IArray = array [1..nmax] of integer; var n, l, r, k: byte; x: integer; A: IArray; begin writeln (‘Введите число элементов массива’); readln (n); writeln('Введите элементы массива'); for k:= 1 to n do readln(A[k]); writeln('Введите искомый элемент:');
14 readln(x); l:= 1; r:= n+1; while l < r do begin k:= (l+r) div 2; if A[k] < x then l := k+1 else r := k end; if A[r] = x then writeln ('Это ', r:1,'-й элемент массива.') else writeln('Ключевой элемент не найден.') end. 1.3.1 Реализовать алгоритм линейного поиска с барьером. 1.3.2 Вставить в упорядоченный массив элемент, имеющий заданное значение, если он отсутствует в массиве. 1.3.3 Удалить из упорядоченного массива элементы, равные заданному значению. 1.3.4 Упорядочить массив по неубыванию (невозрастанию), используя метод прямого выбора. 1.3.5 Упорядочить массив по невозрастанию (неубыванию) методом пузырька. 1.3.6 Даны два упорядоченных по возрастанию массива. Получить путём слияния исходных массивов новый упорядоченный массив: а) по неубыванию; б) по возрастанию. 1.3.7 Упорядочить массив по неубыванию методом двоичных вставок, получая упорядоченный массив а) на месте старого массива; б) в другом массиве. 1.3.8 Дана прямоугольная матрица. Упорядочить строки матрицы: а) по неубыванию (невозрастанию) сумм элементов строк; б) по неубыванию (невозрастанию) наименьших элементов строк; в) по невозрастанию (неубыванию) наибольших элементов строк.
15 1.4 Строки Примечание: во всех приведённых задачах под текстом понимается строка или группа строк. Последовательности символов, разделённые пробелами и не содержащие пробелов внутри себя, будем называть словами. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определим группу цифр и группу знаков. 1.4.1 Напишите программу, которая принимает на входе текст, содержащий последовательность заглавных и строчных букв, затем печатает этот текст только литерами заглавных букв. 1.4.2 Найдите количество предложений в заданном тексте. Предложения заканчиваются точками, восклицательными или вопросительными знаками. 1.4.3 Проверьте, имеется ли в заданном тексте баланс открывающих и закрывающих скобок. 1.4.4 В заданном тексте а) определить наличие символов, отличных от букв (цифр) и пробела; б) заменить одни заданные символы другими заданными символами. 1.4.5 Если в данном тексте нет заданного символа a, то оставьте его без изменений, иначе каждый из символов, предшествующих вхождению символа a, заменить символом b. 1.4.6 Если в данном тексте есть буквы, то каждый из символов, следующих за каждой группой букв, замените точками. В противном случае текст оставьте без изменений. 1.4.7 Получите текст наоборот (т.е. разверните его). 1.4.8 Палиндром - слово или текст, одинаково читающийся слева направо и справа налево. Выясните, является ли заданный текст палиндромом. 1.4.9 В заданном тексте найти наибольшее количество цифр (букв, гласных букв, согласных букв), идущих в нём подряд. 1.4.10 Дан текст. Удалите из текста:
16 а) б) в) г)
все вхождения заданных символов; первое и последнее вхождения заданных символов; все четные (нечетные) вхождения заданного символа; каждый символ, следующий сразу за (перед) заданным символом.
1.4.11 Замените в данном тексте каждую из групп стоящих рядом точек, одной точкой. 1.4.12 Замените в тексте каждую точку троеточием. 1.4.13 Напечатать в алфавитном порядке все различные русские буквы, входящие в данный текст. 1.4.14 Для каждого символа данного текста указать, сколько раз он встречается в тексте. 1.4.15 Для данного текста найдите: а) слова, имеющие заданную длину; б) слова, начинающиеся и оканчивающиеся одной и той же буквой; в) слова, начинающиеся (оканчивающиеся) заданной буквой; г) слова, имеющих заданное количество заданных букв; д) слова, начинающиеся и оканчивающиеся гласными (согласными) буквами; е) слова, начинающиеся гласной (согласной) буквой и заканчивающиеся согласной (гласной) буквой; ж) слова, начинающиеся (заканчивающиеся) двумя (тремя) гласными (согласными) буквами; з) слова, начинающиеся (заканчивающиеся) заглавными буквами; и) слова, у которых количество букв – четное (нечетное); к) самое длинное (короткое) слово; л) слова, в которых (количество) доля гласных (согласных) максимальна; м) среднее арифметическое длин всех слов и слово, длина которого наиболее близка (удалена) к среднему; н) последнее из слов, содержащих не более (не менее) заданного количества букв. 1.4.16 Для данного текста: а) удалите заданное слово; б) удалите каждое четное (нечетное) слово; в) удалите все вхождения первого (второго, предпоследнего, последнего, i-го) слова; г) оставьте только одно вхождение каждого слова;
17 д) удалите слова, встречающие более одного раза; е) поменяйте местами два слова с заданными номерами; ж) замените каждое вхождение одного заданного слова на второе заданное; з) для каждого из слов укажите, сколько раз оно встречается среди слов текста. 1.4.17 Дан текст, каждый символ которого может быть буквой, цифрой или одним из знаков (+, -, *, /). а) Выяснить, встречается ли в заданном тексте заданная группа букв. б) Выяснить, каких групп больше: букв, цифр или знаков. в) Найти количество групп, начинающихся и оканчивающихся одной и той же буквой. 1.4.18 Дан текст, каждый символ которого может быть буквой, цифрой или одним из знаков (+, -, *, /). Найти: а) количество групп, имеющих заданную длину; б) количество групп, начинающихся и оканчивающихся одной и той же буквой; в) количество групп, начинающихся (оканчивающихся) заданной буквой; г) количество групп, имеющих заданное количество заданных букв; д) количество групп, начинающихся и оканчивающихся гласными (согласными) буквами; е) группы, начинающиеся гласной (согласной) буквой и заканчивающиеся согласной (гласной) буквой; ж) группы, начинающиеся (заканчивающиеся) двумя (тремя) гласными (согласными) буквами; з) группы, у которых количество букв – четное (нечетное); и) самую длинную (короткую) группу; к) группы, в которых (количество) доля гласных (согласных) максимальна; л) последнюю из групп, содержащих не более (не менее) заданного количества букв; м) самую длинную (короткую) последовательность групп букв (групп цифр, групп знаков, всех групп); н) количество групп букв, заключенных между первой и последней группами цифр (знаков); о) номер первой по порядку группы цифр, начинающейся с заданной цифры; п) число тех групп букв, которые заканчиваются, той же буквой, что и первая группа букв.
18 1.4.19 Дан текст. Проверить, совпадают ли в нем первое и последнее, второе и предпоследнее и т.д. слова. 1.4.20 Зашифруйте текст, циклически сдвигая его вправо или влево. 1.4.21 Даны два текста. Слейте их в один, чередуя слова из первого и второго. Если один из них – длиннее, то все оставшиеся слова добавьте в конец новой строки. 1.4.22 Дан текст. Составить новый из последних (первых) букв всех слов (групп букв) исходного текста. 1.4.23 Дан текст. Напечатать: а) все слова, но развернув их наоборот; б) те слова, перед которыми в тексте находятся только меньшие по алфавиту слова, а за ними только большие; в) все слова в алфавитном порядке; г) слова, в которых буквы упорядочены по алфавиту; д) слова, которые совпадают с конечным (начальным) отрезком латинского алфавита; е) слова, в которых нет повторяющихся букв; ж) слова, в которых гласные буквы чередуются с согласными. 1.4.24 Дан текст. Преобразовать все его слова по правилу: а) перенести первую (последнюю) букву в конец (начало) слова; б) удалить из слова первую (последнюю, среднюю, i-ую) букву; в) удалить из слова все последующие вхождения первой (i-ой буквы); г) удалить из слова все предыдущие вхождения последней (i-ой буквы); д) оставить в слове только первые вхождения каждой буквы; е) если слово нечетной длины, то удалить его первую букву. 1.4.25 Даны два текста. Для них а) найдите множество всех слов, встречающихся в каждом тексте; б) найдите самое длинное (короткое) общее слово обоих тестов; в) найдите самое короткое (длинное) из слов первого текста, которого нет во втором. 1.4.26 Выяснить, является ли данный текст: а) десятичной записью целого числа; б) идентификатором; в) правильной записью римскими цифрами целого числа от 1 до 999.
19 1.4.27 Дано слово, содержащее запись вещественного числа в формате мантисса – порядок. Получить строку, содержащую число в формате с фиксированной точкой. 1.4.28 Дано слово, содержащее запись вещественного числа в формате с фиксированной точкой. Получить строку, содержащую число в формате мантисса – порядок. 1.5 Множества Функция, подсчитывающая количество элементов в множестве A, состоящем из целых чисел от 0 до 99. type ISet = set of 0..99; { множество целых чисел от 0 до 99 } function KOL (A: ISet): integer; Var i: byte; j: integer; begin j := 0; for i := 0 to 99 do if i in A then j := j + 1; { сколько чисел из интервала [0;99] входят в A } KOL := j end; 1.5.1 Дано сто целых чисел от 1 до 50. Напишите программу, определяющую, сколько из них являются числами Фибоначчи и сколько чисел, первая значащая цифра в записи которых 1 или 2. 1.5.2 Дано множество символов от 'a' до 'z'. Напишите программу, выводящую элементы этого множества на печать в алфавитном порядке. 1.5.3 Дан текст из цифр и строчных букв латинского алфавита, за которым следует точка. Определить, каких букв - гласных (a, e, i, o, u) или согласных - больше в этом тексте. 1.5.4 Дано множество символов А и символ х. Напишите программу, строящую множество В из множества А по следующему правилу: а) добавлением элемента х; б) удалением элемента х. 1.5.5 Дан текст из строчных латинских букв, за которым следует точка. Напечатайте: а) первые вхождения букв в текст, сохраняя при этом их исходный взаимный порядок;
20 б) все буквы, входящие в текст не менее двух раз; в) все буквы, входящие в текст по одному разу. 1.5.6 Дан текст, за которым следует точка. В алфавитном порядке напечатать по одному разу все строчные русские гласные буквы, входящие в этот текст. 1.5.7 В возрастающем порядке напечатать все целые числа из диапазона 1..10000, представимые в виде n2+m2, где n, m ≥0. 1.5.8 В порядке убывания напечатать все целые числа из диапазона 1..4900, которые представимы в виде n2+2k2 , но не представимы в виде 7ij+j+3, n, k, i, j ≥0. 1.5.9 Дано целое n от 2 до 1000. Используя метод решета Эратосфена, напечатайте в убывающем порядке все простые числа из диапазона n..2n. Суть этого метода. Выписываются все целые числа, большие единицы; выбирается первое из них (это 2 - простое число) и вычёркиваются все кратные ему числа, кроме него самого; затем берётся следующее из невычеркнутых чисел (это 3 - также простое число) и вычеркиваются все кратные ему, кроме него самого; действия повторяются для всех невычеркнутых ранее чисел. В конце концов, останутся только простые числа, начиная с двух. 1.5.10 Предположим, что существует некоторый набор товаров. Ассортимент магазина - это множество товаров из этого набора. Компания владеет двадцатью магазинами. По информации об ассортименте, представленном в каждом из этих магазинов построить множество А - множество продуктов, которые есть во всех магазинов; В - множество продуктов, каждый из которых есть хотя бы в одном магазине; С - множество продуктов, которых нет ни в одном магазине. 1.5.11 Перечислены имена одноклассников: Вася, Володя, Ира, Лида, Марина, Миша, Наташа, Олег, Оля, Света, Юля. В гости к каждому из них приглашается некоторое подмножество ребят. Создайте массив, содержащий сведения о приглашенных и, используя его, определите а) есть ли среди них хотя бы один человек, побывавший в гостях у всех одноклассников; б) есть ли люди, не приглашённые ни к одному из одноклассников.
21 1.5.12 Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом точка. Напечатать в алфавитном порядке: а) все гласные буквы, которые входят в каждое слово; б) все согласные буквы, которые не входят ни в одно слово; в) все звонкие согласные буквы, которые входят хотя бы в одно слово; г) все глухие согласные, которые не входят хотя бы в одно слово; д) все согласные буквы, которые входят только в одно слово; е) все глухие согласные, которые не входят только в одно слово; ж) все звонкие согласные, которые входят более чем в одно слово; з) все гласные буквы, которые не входят более чем в одно слово; и) все звонкие согласные буквы, которые входят в каждое нечётное слово и не входят ни в одно чётное слово; к) все глухие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово. 1.5.13 Дан список городов некоторого региона: a, b, c, d, e, f, g, h. Для каждого из них известно множество городов, в которые можно попасть из данного города за один автобусный рейс без пересадки. Напишите программу, которая, используя массив, содержащий такую информацию для всех городов, будет определять а) множество городов, в которые можно попасть из заданного пользователем города; б) кратчайший (в смысле количества пересадок) путь между парой заданных городов. 1.5.14 Напишите программу, реализующую игру "быки и коровы". Компьютер загадывает четырёхзначное число, не содержащее двух одинаковых цифр; пользователь пытается назвать цифры, из которых состоит это число; на каждом шаге сообщается количество "быков" - правильно отгаданных - и "коров" - не правильно отгаданных цифр; игра продолжается, пока не будет набрано четыре "быка".