Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Множества

Читайте также:
  1. ОДИН ИЗ ВЕЛИКОГО МНОЖЕСТВА
  2. Понятие множества.
  3. Элементы теории множеств. Множества и операции над ними
  4. Я видел солнце, бесконечный простор неба. Я видел безбрежные барханы пустыни. Я видел множества различных песчинок. Но в массе они были незаметны. Ветер определял их направление.

 

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 | Нарушение авторских прав


Читайте в этой же книге: Вычисление функций | Пояснения к программе | Пояснения к программе | Одномерные массивы | Матрицы | Пояснения к программе | Обработка текстов | Пояснения к программе | Процедуры и функции | Пояснения к программе |
<== предыдущая страница | следующая страница ==>
Пояснения к программе| Пояснения к программе

mybiblioteka.su - 2015-2024 год. (0.026 сек.)