Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример использования множеств



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

Решение: сделаем простейший вариант, когда пользователь вводит строку с произвольным содержимым. Программа проверяет, все ли символы из множества шестнадцатеричных цифр он ввел.

Замечание: в записи шестнадцатеричных чисел могут быть использованы цифры от ‘0’ до ‘9’ и латинские буквы – либо большие (от ‘A’ до ‘F’), либо маленькие (от ‘a’ до ‘f’).

Программа:

Program digitsOfHex;

Type

SetChar = set of char; {Множество символов}

Var

S: string; {Вводимая строка}

I: integer; {Счетчик цикла}

HexSymb: SetChar; {Множество всех шестнадцатеричных цифр}

InputSymb: SetChar; {Множество всех введенных символов}

TrueSymb: SetChar; {Множество правильно введенных символов}

ErrSymb: SetChar; {Множество ошибочно введенных символов}

MissSymb: SetChar; {Множество забытых символов}

{Процедура вывода символов, содержащихся в множестве S, на экран.

S - множество, Message - строка, выводимая перед выводом множества}

procedure WriteSetChar(message: string; S: SetChar);

var

C: char; {Выводимый символ}

begin

Write(message); {Вывод сообщения}

{Проход по всем мыслимым символам}

For c:= #0 to #255 do

If c in S {Если символ C присутствует в множестве S}

then write(c,' '); {То этот символ выводится на экран}

Writeln;

end;

Begin

{Инициализация множеств}

HexSymb:= ['0'..'9','a'..'f','A'..'F'];{Все возможные

шестнадцатеричные цифры}

InputSymb:= []; {Множество введенных символов вначале пустое}

{Ввод строки с цифрами}

Writeln;

Writeln('Введите в одну строку все символы,’);

Writeln('используемые для записи шестнадцатеричных’);

Write (’ чисел: ');

ReadLn(s);

{Формирование множества всех введенных символов}

For I:= 1 to length(s) do

InputSymb:= InputSymb + [s[i]]; {Проходим в цикле по

всем символам введенной строки, добавляя

каждый символ в множество InputSymb}

{Формирование множества правильно введенных символов}

TrueSymb:= InputSymb * HexSymb; {Правильно введенные

символы - это те символы из введенных, которые есть в

множестве шестнадцатеричных цифр}

{Формирование множества неправильно введенных символов}

ErrSymb:= InputSymb - HexSymb; {Неправильно введенные

символы - это те символы из введенных, которых

нет в множестве шестнадцатеричных цифр}

{Формирование множества забытых (пропущенных) символов}

MissSymb:= HexSymb - TrueSymb; {Пропущенные символы -

это те символы из множества шестнадцатеричных цифр,

которых нет в множестве правильно введенных}

{Вывод результатов}

Writeln;

{Проверка, ввел ли пользователь хотя бы один правильный символ}

If TrueSymb <> []

Then {Если ввел, то выводим все их на экран}

WriteSetChar('Вы ввели следующие правильные символы:',

TrueSymb)

Else {Если не ввел ни одного правильного, выдаем сообщение}

Writeln('Вы не ввели ни одного правильного символа!');

{Проверка, ввел ли пользователь хотя бы один неправильный

символ}

If ErrSymb <> []

Then {Если ввел, то выводим все их на экран}

WriteSetChar('Вы ввели следующие неправильные символы:',

ErrSymb)

Else {Если не ввел ни одного неправильного, выдаем сообщение}

Writeln('Вы не ввели ни одного неправильного’,

’ символа!!!');

{Проверка, забыл ли пользователь ввести хотя бы один правильный

символ}

If MissSymb <> []

Then {Если забыл, то выводим все забытые на экран}

WriteSetChar('Вы забыли ввести следующие символы:',

MissSymb)

Else {Если не забыл, выдаем сообщение}

Writeln('Вы ввели все возможные шестнадцатеричные’,

’ цифры!!!');

End.

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





Дата публикования: 2014-11-29; Прочитано: 173 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...