Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

mnoshtext

.doc
Скачиваний:
12
Добавлен:
09.02.2015
Размер:
110 Кб
Скачать

Тип данных множество

Множество определяют как совокупность (набор) однотипных логически связанных друг с другом элементов. Характер связей между элементами подразумевается программистом, но никак не контролируется.

Описание типа множества выглядит следующим образом:

Type <имя типа>=set of <базовый тип>;

Количество элементов в множестве (мощность множества) может находиться в интервале от 0 до 256. Это определяется внутренним представлением элементов множества: вхождение элемента в множество определяется значением двоичного разряда (бита). Нулевое значение означает, что соответствующий элемент отсутствует в множестве, единичное значение означает, что элемент присутствует в множестве. Для хранения этой информации всегда отводится 32 байта (256 бит) и нумерация ведется от 0 до 255, поэтому всегда в множестве могут присутствовать элементы с номерами, лежащими в указанном диапазоне (от 0 до 255).

Способ представления элементов множества самым существенным образом влияет на выбор базового типа множества. В качестве базового типа может фигурировать, во-первых, только порядковый тип, во-вторых, тип, у которого максимальный номер элемента не превышает значения, равного 255. Таким образом, в качестве базового типа могут выступать только следующие типы: Byte, Boolean, Char, перечисляемый тип с количеством элементов не более 256.

В множестве элементы повторяться не могут.

Примеры правильных описаний типов:

  1. Type Mn1=set of Byte;

  2. Mn2=set of Boolean;

  3. Mn3=set of Char;

  4. Mon=(jan,feb,mar,apr,mai,jun,jul,aug,sep,okt,nov,dez);

  5. Mn4=set of Mon;

Пример неправильного описания типа:

  1. Mn5=set of 2..257;

В последнем случае формально количество элементов равно 256, но элементы имеют значения от 2 до 257, для представления элементов со значениями 256, 257 в множестве просто отсутствует место, так как нумерация элементов ведется с нуля и первые два бита не будут задействованы, а для представления двух последних значений не хватит разрядов.

Для задания множества используется конструктор множества – квадратные скобки, в которых размещается через запятую список спецификаций элементов множества. Спецификациями элементов могут быть константы или выражения базового типа или тип-диапазон того же базового типа. Множество может быть пустым, в этом случае внутри квадратных скобок спецификации отсутствуют.

Пример:

  1. Var A:Mn1; B:Mn2; C:Mn3; D:Mn4;

  2. Begin

  3. A:=[0,22..40, 50+K div 2..88,250,255];

  4. B:=[true];

  5. C:=[Chr(10)..Chr(15),'A'..'G', 'К'.. 'Я', '%', '#'];

  6. D:=[jan,mar,jun..aug,dez];

  7. A:=[]; //пустое множество

  8. ……

  9. End.

Над множествами допускается выполнять следующие операции.

Пересечение множеств, обозначается символом * (звездочка). Результатом выполнения этой операции является множество, включающее общие элементы двух множеств. Например, var A1,A2,A3:Mn1; A1:=[2,3,4,7..10]; A2:=[3,7,9,12,13]; A3:=A1*A2; В результате множество A3 будет содержать следующие элементы [3,7,9].

Объединение множеств, обозначается символом + (плюс). Результатом выполнения объединения двух множеств является множество, состоящее из элементов обоих множеств, т.е. элементы первого множества дополняются теми элементами второго множества, которых нет в первом. Если выполнить объединение A3:=A1+A2 множеств из предыдущего примера, то получим множество [2,3,4,7..10,12,13].

Разность множеств, обозначается символом – (минус). Результатом выполнения этой операции является множество, состоящее из элементов первого множества, которых нет во втором. Например, в результате выполнения оператора A3:=A1-A2; получим множество, состоящее из следующих элементов [2,4,8,10].

Операции отношения. Проверка эквивалентности двух множеств, обозначается символом = (равенство). Результат операции истина, если два множества содержат одинаковые элементы, и ложь, если два множества содержат неодинаковые элементы. Например, var B:Boolean; B:=A1=A2; переменная B получит значение false. Если же выполнить оператор B:=[1,3,..9]=[1,3,..9]; переменная B получит значение true.

Проверка неэквивалентности двух множеств, обозначается символами <> (символы меньше, больше). Результат операции истина, если два множества содержат несовпадающие элементы, и ложь, если множества содержат одинаковые элементы. Например, после выполнения оператора присваивания B:=A1<>A2; переменная B получит значение true. Если же выполнить оператор B:=[1,3,..9]<>[1,3,..9]; переменная B получит значение false.

Проверка вхождения первого множества во второе, обозначается символами <= (символы меньше, равно). Результат операции истина, если все элементы первого множества присутствую во втором, и ложь, если не все элементы первого множества присутствуют во втором множестве. Например, если A1:=[2,3,4,7..10]; A2:=[2,3..5,7..13]; , то результатом выполнения оператора B:=A1<=A2; будет true. Если A1:=[2,3,4,7..10]; A2:=[2,3..5,7..9]; , то результатом выполнения оператора B:=A1<=A2; будет false.

Проверка вхождения второго множества в первое, обозначается символами >= (символы больше, равно). Результат операции истина, если все элементы второго множества присутствуют в первом, и ложь, если не все элементы второго множества присутствуют в первом множестве. Например, если A1:=[2,3,4,7..10]; A2:=[2,3,7..9]; , то результатом выполнения оператора B:=A1>=A2; будет true. Если A1:=[2,3,4,7..10]; A2:=[2,3..5,7..9]; , то результатом выполнения оператора B:=A1>=A2; будет false.

Проверка вхождения элемента в множество, обозначается in. Первый операнд операции – выражение того же базового типа, что и базовый тип множества, являющегося вторым операндом. Результат выполнения операции истина, если элемент входит в множество, и ложь, если элемент отсутствует в множестве. Например, после выполнения оператора B:=5+6 div 2 in A1; переменная B получит значение true (A1:=[2,3,4,7..10];). Если будет выполнен оператор B:=5+6 div 2-7 in A1;, то переменная B получит значение false.

Для работы с множествами предназначены две процедуры. Процедура Include(M,L); позволяет включить в множество M элемент L. Элемент L должен принадлежать тому же типу, что и базовый тип множества M.

Процедура Exclude(M,L); позволяет исключить из множества M элемент L. Элемент L должен принадлежать тому же типу, что и базовый тип множества M.

Значения множественного типа нельзя вводить и выводить. Выход из положения состоит в том, что можно вводить значения элементов множества (если они не принадлежат перечисляемому или булевскому типу) и включать затем их в множество.

Вывод элементов множества можно организовать путем проверки принадлежности всех возможных значений, которые могут образовывать множество рассматриваемого типа, в множество и выводить очередное значение в случае его вхождения в множество. Ввод и вывод элементов множества демонстрирует следующий фрагмент программы:

  1. type Mn=set of char;

  2. var M1:Mn;

  3. Ch:char;

  4. begin

  5. M1:=[];

  6. Writeln(Rus('Введите символ'));

  7. ReadLn(Ch);

  8. Ch:=RusIn(Ch);

  9. while Ch<>'?' do

  10. begin

  11. M1:=M1+[Ch];

  12. writeln(Rus('Введите символ'));

  13. readLn(Ch);

  14. Ch:=RusIn(Ch);

  15. end;

  16. for Ch:=Chr(0) to Chr(255) do

  17. if Ch in M1 then Write(Rus(Ch));

  18. end.

В приведенном фрагменте ввод символов (элементов множества) производится до тех пор, пока не будет введен символ вопросительного знака. В качестве символа-признака окончания ввода можно выбрать любой символ, вводимый с клавиатуры. Можно при вводе каждый раз выводить пользователю запрос о продолжении ввода, но это неудобно, так как вместо одного символа требуется вводить два символа – ответ на запрос и сам вводимый символ.

  1. repeat

  2. writeln(Rus('Введите символ'));

  3. readLn(Ch);

  4. Ch:=RusIn(Ch);

  5. M1:=M1+[Ch];

  6. writeln(Rus('Продолжить ввод (Y/N)'));

  7. Ch:=RusIn(Ch);

  8. until UpCase(Ch)<>’Y’;

Поскольку множество может содержать максимально 256 элементов, то сфера применения этого типа данных достаточно ограничена. Наиболее удачной сферой применения множеств является использование их при обработке символьных и строковых данных.

Пример 1 использования множеств. Найти в строке все символы, которые встретились в ней ровно по два раза. Найденные символы распечатать в алфавитном порядке, алгоритм упорядочения не использовать.

При написании программы будем использовать три множества. Первое множество будут образовывать все символы, которые присутствуют в строке. Второе множество будет содержать только те символы, которые встретились не менее двух раз. В третьем множестве будут присутствовать те символы, которые встретились в строке более, чем по два раза. Во второе множество очередной символ строки заносится только в том случае, если он присутствует в первом множестве и отсутствует во втором. Если анализируемый символ строки уже присутствует во втором множестве, это означает, что он встретился более, чем во второй раз, и заносится в третье множество. Результирующее множество символов получается в результате вычитания третьего множества из второго.

  1. program mnosh2;

  2. {$APPTYPE CONSOLE}

  3. uses

  4. SysUtils;

  5. type Mn=set of char;

  6. Var A,B,C:Mn;

  7. Ch:char;

  8. S:string;

  9. I,N:integer;

  10. function Rus(S:String):String;

  11. var I:Byte;

  12. begin

  13. Result:='';

  14. for I:=1 to Length(S) do

  15. case S[I] of

  16. 'А'..'п': Result:=Result+Chr(Ord(S[I])-64);

  17. 'р'..'я': Result:=Result+Chr(Ord(S[I])-16);

  18. 'Ё': Result:=Result+Chr(240);

  19. 'ё': Result:=Result+Chr(241);

  20. else

  21. Result:=Result+S[I];

  22. end;

  23. end;

  24. function RusIn(S:String):String;

  25. var I:Integer;

  26. begin

  27. Result:='';

  28. for I:=1 to Length(S) do

  29. case Ord(S[I]) of

  30. 128..175: Result:=Result+Chr(Ord(S[I])+64);

  31. 224..239: Result:=Result+Chr(Ord(S[I])+16);

  32. 240: Result:=Result+Chr(168);

  33. 241: Result:=Result+Chr(184);

  34. else

  35. Result:=Result+S[I];

  36. end;

  37. end;

  38. begin

  39. A:=[];

  40. B:=[];

  41. C:=[];

  42. WriteLn(Rus('Введите строку'));

  43. ReadLn(S);

  44. S:=RusIn(S);

  45. N:=Length(S);

  46. for I:=1 to N do

  47. begin

  48. if S[I] in A then

  49. if not(S[I] in B) then B:=B+[S[I]]

  50. else C:=C+[S[I]]

  51. else A:=A+[S[I]];

  52. end;

  53. B:=B-C;

  54. WriteLn(Rus('Символы, встретившиеся ровно по два раза в строке'));

  55. for Ch:=Chr(0) to Chr(255) do

  56. if Ch in B then Write(Rus(Ch));

  57. Readln;

  58. end.

Пример 2 использования множеств. Во втором примере рассмотрим использование множеств для работы с числовыми (целыми) значениями. Задача состоит в том, чтобы определить все простые числа из заданного диапазона целых чисел, причем максимальное число не должно превышать 3000.

Для определения простых чисел можно использовать алгоритм, названный решетом Эратосфена. Для этого сначала следует сформировать множество всех целых чисел в диапазоне от 1 до n, где n – максимальное число. Во второе множество заносятся простые числа. Для этого в него сначала помещаются два первых простых числа 1 и 2. Из исходного множества исключаются эти числа и все другие числа, кратные двум. Затем в исходном множестве находится минимальное число, которое является следующим простым числом. Это число включается в результирующее множество, а из исходного множества опять исключаются все числа, кратные найденному, включая само это число. Описанная процедура повторяется до тех пор, пока исходное множество не станет пустым.

Для решения поставленной задачи необходимо использовать массив множеств, так как все исходные числа не могут быть представлены в одном множестве. Если в одном множестве будут представлены mm чисел, то всего потребуется ]3000/mm[ элементов (множеств) массива. В этом случае j-ый элемент i-го множества будет соответствовать числу (i-1)*mm+j.

  1. {Определение простых чисел в диапазоне от 0 до 3000}

  2. program mnosh3;

  3. {$APPTYPE CONSOLE}

  4. uses

  5. SysUtils;

  6. const Mm=255;// количество значений, заносимых в множество

  7. Nn=3000 div Mm +1;//количество элементов в массиве

  8. type Mn=set of 1..Mm;

  9. Mas=array[1..Nn] of Mn;

  10. var A,B:mas;// массивы исходного и получаемого множества чисел

  11. I,J,N,K,L,M,Kb,Ib,Jb,S,Si,Sj,Kp:integer;

  12. function Rus(S:String):String;

  13. var I:Byte;

  14. begin

  15. Result:='';

  16. for I:=1 to Length(S) do

  17. case S[I] of

  18. 'А'..'п': Result:=Result+Chr(Ord(S[I])-64);

  19. 'р'..'я': Result:=Result+Chr(Ord(S[I])-16);

  20. 'Ё': Result:=Result+Chr(240);

  21. 'ё': Result:=Result+Chr(241);

  22. else

  23. Result:=Result+S[I];

  24. end;

  25. end;

  26. begin

  27. WriteLn(Rus('Введите максимальное число диапазона (не более 3000)'));

  28. ReadLn(N);

  29. WriteLn('N=',N:4);

  30. //цикл присваивания начальных значений массивам множеств

  31. for I:=1 to Nn do

  32. begin

  33. A[I]:=[];

  34. B[I]:=[];

  35. end;

  36. {формирование массива множеств из чисел заданного диапазона}

  37. K:=N div Mm;//количество используемых элементов массива мно-

  38. //жеств

  39. L:=N mod Mm;//количество чисел в последнем элементе массива

  40. //множеств

  41. //цикл заполнения исходного массива множеств

  42. for I:=1 to K do

  43. for J:=1 to Mm do

  44. A[I]:=A[I]+[J];

  45. //цикл заполнения последнего элемента исходного массива мно-

  46. //жеств

  47. if L<>0 then //L – количество элементов в последнем множестве

  48. for I:=1 to N-K*Mm do //N-K*Mm-количество элементов в

  49. //предыдущих элементах массива множеств

A[K+1]:=A[K+1]+[I];

  1. {Печать чисел исходного множества}

  2. WriteLn(Rus('Исходное множество'));

  3. for I:=1 to K do

  4. for J:=1 to Mm do

  5. if J in A[I] then Write((I-1)*Mm+J:4,' ');

  6. if L<>0 then

  7. for I:=1 to N-K*Mm do

  8. if I in A[K+1] then Write((K*Mm+I):4,' ');

  9. ReadLn;

  10. //Поиск простых чисел

  11. B[1]:=B[1]+[1];//добавление единицы в результат

  12. A[1]:=A[1]-[1];//удаление единицы из исходного множества

  13. M:=2; //очередное простое число

  14. if L<>0 then K:=K+1;//количество непустых элементов массива A

  15. while A[K]<>[ ] do //цикл поиска простых чисел (пока исходное

  16. begin //множество не станет пустым

  17. S:=M; //установка начального значения очередного удаляемого

  18. //из исходного множества числа

  19. while S<=N do //цикл удаления из исходного множества

  20. begin //непростых чисел

  21. Si:=S div Mm; //номер элемента массива множеств, содержа-

  22. //щего удаляемый элемент

  23. Sj:=S mod Mm; //номер удаляемого элемента в множестве

  24. if Sj=0 then A[Si]:=A[Si]-[Mm] //исключение числа из

  25. else A[Si+1]:=A[Si+1]-[Sj];//исходного множества

  26. S:=S+M; //вычисление очередного удаляемого числа

  27. end;

  28. Ib:=M div Mm;//номер элемента массива множеств для добавле-

  29. //ния очередного простого числа

  30. Jb:=M mod Mm;// номер добавляемого элемента в множестве

  31. if Jb=0 then B[Ib]:=B[Ib]+[Mm] //добавление простого числа

  32. else B[Ib+1]:=B[Ib+1]+[Jb];//в множество-результат

  33. repeat // цикл нахождения минимального числа, содержащегося

  34. M:=M+1;// в исходном множестве – нового простого числа

  35. Si:=M div Mm;

  36. Sj:=M mod Mm;

  37. if Sj=0 then I:=Si else I:=Si+1;

  38. until (M>N)or(Sj in A[I]);

  39. end;

  40. {Печать полученного множества}

  41. WriteLn(Rus('Простые числа из заданного диапазона'));

  42. for I:=1 to Ib do

  43. begin

  44. for J:=1 to Mm do

  45. if J in B[I] then Write((I-1)*Mm+J:4,' ');

  46. ReadLn;

  47. end;

  48. if Jb<>0 then

  49. for J:=1 to Mm do

  50. if J in B[Ib+1] then Write (Ib*Mm+J:4,' ');

  51. WriteLn;

  52. ReadLn;

  53. end.

Задания на обработку множеств

Вариант 1

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить строки матрицы по убыванию количества подсчитанных символов. Новых матриц не вво­дить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 2

Даны две символьные матрицы A(N,M), B(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, одновременно при­сутствующих в обеих матрицах. Из полученного множества соста­вить одномерный массив, упорядоченный по алфавиту. Отпечатать исходные матрицы и полученный массив. Ввод и вывод матриц осу­ществлять в виде матриц.

Вариант 3

Даны две символьные матрицы C(N,M), D(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, присутствующих в первой матрице, но отсутствующих во второй матрице. Из получен­ного множества составить одномерный массив, который упорядочить по алфавиту. Отпечатать исходные матрицы и полученный массив. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 4

Даны две символьные матрицы E(N,M), F(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, присутствующих либо в первой матрице, либо во второй матрице. Из полученного мно­жества составить одномерный массив, который упорядочить по ал­фавиту. Отпечатать исходные матрицы и полученный массив. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 5

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить строки мат­рицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 6

Дана символьная матрица V(M,N), M<=14, N<=16. С клавиатуры вводятся два множества символов M1 и M2. Сформировать из матри­цы одномерный массив символов, принадлежащих пересечению двух введенных множеств, который должен быть упорядочен по алфавиту. Отпечатать исходную матрицу, введенные множества символов, по­лученный массив символов. Ввод и вывод матрицы осуществлять в виде матрицы.

Вариант 7

Дана символьная матрица V(M,N), M<=14, N<=16. С клавиатуры вводятся два множества символов M1 и M2. Сформировать из матри­цы одномерный массив символов, принадлежащих объединению двух введенных множеств, который должен быть упорядочен по алфавиту. Отпечатать исходную матрицу, введенные множества символов, по­лученный массив символов. Ввод и вывод матрицы осуществлять в виде матрицы.

Вариант 8

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, не входящих в множество сим­волов Z, которое вводится с клавиатуры. Упорядочить строки мат­рицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 9

Подсчитать по каждому столбцу символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить столбцы мат­рицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 10

Подсчитать по каждому столбцу символьной матрицы S(N,M), N<=12, M<=15 количество символов, не входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить столбцы мат­рицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 11

Даны две символьные матрицы A(N,M), B(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, одновременно присутс­твующих в обеих матрицах. Из полученного множества составить од­номерный массив, упорядоченный в порядке, обратном алфавитному. Отпечатать исходные матрицы и полученный массив. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 12

Даны две символьные матрицы C(N,M), D(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, присутствующих в первой матрице, но отсутствующих во второй матрице. Из получен­ного множества составить одномерный массив, который упорядочить в порядке, обратном алфавитному. Отпечатать исходные матрицы и полученный массив. Ввод и вывод матриц осуществлять в виде мат­риц.

Вариант 13

Даны две символьные матрицы E(N,M), F(K,L), N<=15, M<=12, K<=14, L<=13. Получить множество символов, присутствующих либо в первой матрице, либо во второй матрице. Из полученного мно­жества составить одномерный массив, который упорядочить в порядке, обратном алфавитному. Отпечатать исходные матрицы и получен­ный массив. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 14

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить строки мат­рицы по убыванию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 15

Дана символьная матрица V(M,N), M<=14, N<=16. С клавиатуры вводятся два множества символов M1 и M2. Сформировать из матри­цы одномерный массив символов, принадлежащих пересечению двух введенных множеств, который должен быть упорядочен в порядке, обратном алфавитному. Отпечатать исходную матрицу, введенные множества символов, полученный массив символов. Ввод и вывод матрицы осуществлять в виде матрицы.

Вариант 16

Дана символьная матрица V(M,N), M<=14, N<=16. С клавиатуры вводятся два множества символов M1 и M2. Сформировать из матри­цы одномерный массив символов, принадлежащих объединению двух введенных множеств, который должен быть упорядочен в порядке, обратном алфавитному. Отпечатать исходную матрицу, введенные множества символов, полученный массив символов. Ввод и вывод матрицы осуществлять в виде матрицы.

Вариант 17

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, не входящих в множество сим­волов Z, которое вводится с клавиатуры. Упорядочить строки мат­рицы по убыванию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы

и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 18

Подсчитать по каждому столбцу символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить столбцы мат­рицы по убыванию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 19

Подсчитать по каждому столбцу символьной матрицы S(N,M), N<=12, M<=15 количество символов, не входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить столбцы мат­рицы по убыванию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 20

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество символов, входящих в множество А1, в множество А2 и принадлежащих пересечению множеств А1 и А2 (мно­жества символьные, элементы множеств вводятся с клавиатуры). Полученные количества записать в матрицу К(N,3). Упорядочить строки матрицы по убыванию количества символов, вхо­дящих в пересечение множеств. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенные мно­жества символов. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 21

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество согласных букв, не входящих в множество символов Z, которое вводится с клавиатуры. Упорядочить строки матрицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 22

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество небуквенных символов, входящих в мно­жество символов Z, которое вводится с клавиатуры. Упорядочить строки матрицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осу­ществлять в виде матриц.

Вариант 23

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество цифр, не входящих в множество сим-

волов Z, которое вводится с клавиатуры. Упорядочить строки мат­рицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осущест­влять в виде матриц.

Вариант 24

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество строчных согласных букв, для которых в множестве символов Z есть соответствующая заглавная буква, мно­жество Z вводится с клавиатуры. Упорядочить строки матрицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введен­ное множество символов. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 25

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество строчных гласных букв, для которых в множестве Z (вводится с клавиатуры) нет соответствующей заглав­ной буквы. Упорядочить строки матрицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать ис­ходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осуществлять в виде матриц.

Вариант 26

Подсчитать по каждой строке символьной матрицы S(N,M), N<=12, M<=15 количество небуквенных символов, не входящих в мно­жество символов Z, которое вводится с клавиатуры. Упорядочить строки матрицы по возрастанию количества подсчитанных символов. Новых матриц не вводить. Отпечатать исходную, преобразованную матрицы и введенное множество символов. Ввод и вывод матриц осу­ществлять в виде матриц.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]