Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Задача: сделать программу, обеспечивающую проверку знаний шестнадцатеричных цифр.
Решение: сделаем простейший вариант, когда пользователь вводит строку с произвольным содержимым. Программа проверяет, все ли символы из множества шестнадцатеричных цифр он ввел.
Замечание: в записи шестнадцатеричных чисел могут быть использованы цифры от ‘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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!