Читайте также: |
|
8.1 Из множества целых чисел 1..N выделить множество чисел делящихся на 6 и множество чисел делящихся на 2 или на 3;
Пояснения к программе:
Первоначально формируются множество N2 четных чисел и множество N3 чисел кратных 3. Путем пересечения этих множеств получаем множество N6 чисел, делящихся на 6, и путем их объединения получаем множество N23 чисел, делящихся на 2 или на 3. Переменные множественного типа нельзя использовать в процедурах ввода-вывода, поэтому для вывода результирующих множеств используется стандартный прием — в цикле перебираются все возможные значения элементов множества и с помощью операции in выделяются элементы, принадлежащие множеству.
program Set_6;
Const
N = 33;
Var
N2, N3, N6, N23: set of 1.. N;
K: Integer;
Begin
N2:= []; N3:= [];
for K:= 1 to N do
Begin
if K mod 2 = 0 then N2:= N2 + [ K ];
if K mod 3 = 0 then N3:= N3 + [ K ]
end;
N6:= N2 * N3;
N23:= N2 + N3;
Writeln('На 6 делятся:');
for K:= 1 to N do
if K in N6 then Write (K: 3);
Writeln;
Writeln('На 2 или 3 делятся:');
for K:= 1 to N do
if K in N23 then Write (K: 3)
End.
8.2 Пусть дан текст. Распечатайте те буквы, которые встречаются в каждом слове текста только один раз.
8.3 Пусть дан текст. Найдите наибольшее количество цифр, идущих подряд.
8.4 Пусть вводится последовательность символов длиной не более 4. Если все вводимые символы — цифры, то выполните преобразование данной последовательности в целое число.
8.5 Пусть дан текст. Определите, содержит ли он символы, отличные от букв и пробелов.
8.6 Пусть дан фрагмент программы. Опишите процедуру Print(A), печатающую в алфавитном порядке все элементы множества А типа TLetter.
Type
TLetter = set of 'a'..'z';
8.7 Пусть дан текст, состоящий из строчных латинских букв и цифр. Определите, каких букв — гласных (а, е, i, о, u) или согласных — больше в этом тексте.
8.8 Пусть дан текст, оканчивающийся точкой. Напечатайте:
а) первые вхождения символов в текст, сохраняя их исходный порядок;
б) символы, входящие в текст не менее двух раз;
8.9 Пусть дана непустая последовательность слов из строчных русских букв. Между соседними словами присутствует запятая, за последним — точка. Напечатайте в алфавитном порядке:
а) гласные буквы, которые входят в каждое слово;
б) согласные буквы, которые не входят ни в одно слово;
в) все звонкие согласные буквы, которые входят хотя бы в одно слово;
г) все глухие согласные буквы, которые не входят хотя бы в одно слово;
д) все глухие согласные буквы, которые не входят только в одно слово;
е) все звонкие согласные буквы, которые входят более чем в одно слово;
ж) все гласные буквы, которые не входят более чем в одно слово;
з) все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово;
и) все глухие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово.
ПРИМЕЧАНИЕ Буквы а, е, и, о, у, ы, э, ю, я — гласные; все остальные — согласные, кроме й, ь, ъ;
звонкие согласные — б, в, г, д, ж, з, л, м, н, р;
глухие согласные — к, п, с, т, ф, х, ц, ч, ш, щ.
8.10 Пусть дано натуральное число п ( п > 2). Найдите все меньшие п простые числа, используя решето Эратосфена. Решетом Эратосфена называют следующий способ определения простых чисел. Выпишем подряд все целые числа от 2 до п. Первое простое число 2. Подчеркнем его, а все большие числа, кратные 2, зачеркнем. Первое из оставшихся чисел — 3. Подчеркнем его, а все большие числа, кратные трем, зачеркнем. Первое число из оставшихся теперь — 5, так как 4 уже зачеркнуто. Подчеркнем его как простое, а все большие числа, кратные пяти, зачеркнем и т. д.
8.11 С помощью решета Эратосфена (см. предыдущее задание) найдите четверки меньших п простых чисел, принадлежащих одному десятку (например, 11, 13, 17, 19).
8.12 Пусть дан фрагмент программы. Опишите функцию QuantDays(m), определяющую количество дней в месяце m невисокосного года.
Type
month = 1..12;
8.13 Пусть дан фрагмент программы. Опишите функцию Card(A), подсчитывающую количество элементов во множестве А типа М. Например, Card([5, 8, 23])=3.
Type
М = set of 1..99;
8.14 Пусть дан фрагмент программы. Опишите функцию Sum(A, SI, S2), вычисляющую сумму тех элементов матрицы А, номера строк и номера столбцов которых принадлежат соответственно непустым множествам S1 и S2 типа num.
Const
n = 10;
Type
number = 1..n;
matrix = array [number, number] of real;
num = set of number;
Var
A: matrix;
S1, S2: num;
8.15 Опишите перечисленные ниже подпрограммы:
а) процедура Print(n) печатает в возрастающем порядке все цифры, не входящие в десятичную запись числа n.
б) функция Digit(n) подсчитывает количество различных значащих цифр в десятичной записи числа;
program Set_Digits;
Var
N: LongInt;
function Digits (N: LongInt): LongInt;
Var
Sd: Set of 0.. 9;
D: 0.. 9;
K: Integer;
Begin
Sd:= [];
Repeat
D:= N mod 10;
Sd:= Sd + [ D ];
N:= N div 10;
until N = 0;
K:= 0;
for D:= 0 to 9 do
if D in Sd then K:= K + 1;
Digits:= K
end;
Begin
Writeln('Введите целое число');
Readln(N);
Writeln('В записи целого числа ', N,
' количество различных цифр =', Digits(abs(N)):2)
End.
8.16 В возрастающем порядке напечатайте все целые числа из диапазона
1.. 1000, представимые в виде п2 + т2, где m,n>0.
8.17 Пусть дан фрагмент программы. Опишите процедуру Наличие(Маг, А, В, C), которая по информации из массива Маг типа магазины присваивает параметрам А, В, С типа ассортимент значения, перечисленные ниже.
Type
продукт = (хлеб,масло,молоко,мясо,рыба,соль,сыр, колбаса,сахар,чай,кофе);
ассортимент = set of продукт;
магазины = array [1..20] of ассортимент;
a) А — продукты, которые есть во всех магазинах;
б) В — продукты, которые есть хотя бы в одном магазине;
в) С — продукты, которых нет ни в одном магазине.
8.18 Пусть дан фрагмент программы. Опишите логическую функцию Везде(ГР) определяющую, есть ли в группе ГР хотя бы один человек, побывавший в гостях у всех остальных из группы (ГР[х] — множество людей, побывавших в гостях у человека с именем х; х Ë ГР[х]).
Type
имя = (Вася, Володя, Ира, Лида, Марина, Миша, Наташа, Олег, Оля, Света, Юля);
гости = set of имя;
группа = array [имя] of гости;
8.19 Пусть дан фрагмент программы. Опишите процедуру МожноПопасть(Р, Н, К), которая по рейсам Р (Р[х] — множество городов, в которые можно за один рейс доехать из города х) определяет К — множество городов, в которые можно попасть автобусом (за один рейс или через другие города) из города Н.
Type
город = (A, B, C, D, E, F, G, H);
города = set of город;
рейсы = array [город] of города;
Файлы
9.1 Написать программу triangle, формирующую текстовый файл из 9 строк, в первой из которых — одна цифра '1', во второй — две цифры '2', …, в девятой — девять цифр'9'.
program Triangle;
Var
F: Text; { файловая переменная }
D: Char; { параметр внешнего цикла по числу строк }
C: Char; { параметр внутр. цикла по цифрам в строке}
St: String [80]; { переменная для работы со строками }
Begin
{ создание файла }
Assign (F, 'Triangle.txt');
ReWrite (F);
for D:= '1' to '9' do
Begin
for C:= '1' to D do
Write (F, D);
WriteLn (F)
end;
Close (F);
{ чтение и вывод сформированного файла }
ReSet (F);
WriteLn ('Содержимое сформированного файла');
while Not EOF (F) do
Begin
ReadLn (F, St);
WriteLn (St)
end;
Close (F)
end.
9.2 Пусть в программе введено описание типа:
Type
Letters = file of char;
Описать процедуру:
a) add1(f,c), добавляющую литеру св начало текста f;
б) addlast(f,c), добавляющую литеру св конец текста f;
в) double(f),удваивающую (т.е. повторяющую) в тексте f каждую цифру;
г) replace(f,c),заменяющую последнюю литеру непустого текста fна литеру с;
д) next(f), заменяющую в тексте f каждую цифру на следующую по величине цифру ('9' заменять на '0');
е) delete(f), удаляющую из текста fвсе знаки '+' и '–';
ж) del(f ), удаляющую из текста fпредпоследний элемент, если такой есть;
з) firsts(f), оставляющую в тексте f только первые вхождения каждой литеры.
9.3 Описать процедуру Line40(f), которая считывает из входного файла литеры до первой точки и записывает их (без точки) в текстовый файл f, формируя в нем строки по 40 литер (в последней строке литер может быть и меньше).
9.4 Описать функцию, которая:
а) подсчитывает количество пустых строк в текстовом файле f;
б ) находит максимальную длину строк текстового файла f.
9.5 Описать процедуру printlines(f), печатающую построчно содержимое текстового файла f.
9.6 Пусть текстовый файл f разбит на непустые строки. Описать функцию count(f)для подсчета числа строк, которые:
а) начинаются с буквы'd';
б) оканчиваются буквой 'z';
в) начинаются и оканчиваются одной и той же литерой;
г) состоят из одинаковых литер.
9.7 Пусть дан текстовый файл. Для каждой строки распечатайте слово наибольшей длины. Если их несколько, то распечатайте все.
9.8 Пусть дан текстовый файл. Распечатайте строку с заданным номером.
9.9 Пусть дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом.
9.10 Пусть дан текстовый файл. Распечатайте все строки, начинающиеся с заданного символа.
9.11 Пусть дан текстовый файл. Распечатайте все строки, начинающиеся с заданного слова.
9.12 Пусть дан текстовый файл. Распечатайте все строки, оканчивающиеся заданным словом.
9.13 Пусть дан текстовый файл. Найдите строку максимальной длины.
9.14 Пусть дан текстовый файл. Создайте новый файл на основе данного, оставив в каждой группе подряд идущих строк, отличающихся между собой только количеством пробелов между словами, одну с минимальным числом пробелов.
9.15 Пусть дан текстовый файл. Определите, сколько строк файла имеют длину, большую, равную и меньшую, чем заданное значение k.
9.16 Пусть дан текстовый файл. Создайте два выходных файла: в один перепишите из каждой строки первые р слов ( р задается вводом), в другой — оставшиеся. Если в строке меньше чем р слов, то во втором файле соответствующая строка должна быть пустой.
9.17 Пусть даны файлы, созданные по условию предыдущего задания. Выполните объединение двух файлов: из соответствующих двух строк входных файлов получите одну строку выходного файла.
9.18 Пусть дан текстовый файл. Распечатайте строки, предшествующие строкам, начинающимся с заданного слова.
9.19 Пусть дан текстовый файл. Напечатайте первое из слов, в котором наибольшее число различных букв. Если длина слова больше 20, то распечатайте первые 20 букв.
9.20 Пусть дан текстовый файл. Для каждой строки распечатайте первое из слов, содержащее наибольшее число различных букв.
9.21 Пусть дан текстовый файл. Для каждой строки распечатайте слово с номером (п + 1) div 2, где п — количество слов в строке.
9.22 Пусть дан текстовый файл. Создайте файл целых чисел, в котором каждой строке исходного файла соответствует в выходном файле число, равное количеству слов в строке. Пустой строке или строке, состоящей из одних пробелов, соответствует число 0.
9.23 Пусть дан текстовый файл. Максимальная длина слов в этом файле равна пяти символам. Создайте пять файлов. Каждой строке входного файла соответствует одна строка в каждом из пяти файлов, в которые переписаны через пробел слова соответствующей длины: в первом файле — слова длины 1, во втором — слова длины 2 и т. д. Если слов длины k нет, то соответствующая строка k -го должна быть пустой.
9.24 Пусть даны два текстовых файла. Определите, равны ли они. Равенство понимается в смысле совпадения соответствующих символов и одинакового деления на строки.
9.25 Пусть дан текстовый файл. Заменить последовательность Р1 подряд идущих символов последовательностью Р2. Последовательности Р1 и Р2 задаются пользователем.
9.26 Пусть в файле фамилий family находятся фамилии студентов (одна запись — одна фамилия), в файле оценок note — в том же порядке оценки студентов (одна запись — массив оценок одного студента). Записи упорядочены по номеру студента. Распечатайте список фамилий студентов, получающих стипендию, то есть сдавших сессию только на «хорошо» и «отлично».
Списки
10.1 Дан текст, состоящий из слов, разделенных запятыми, и оканчивающийся точкой. Слова текста содержат не более 100 букв. Требуется подсчитать число вхождений заданной буквы в первое по порядку слово максимальной длины.
Дата добавления: 2015-07-08; просмотров: 648 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пояснения к программе | | | Пояснения к программе |