- •О.Ф. Власенко, и.В. Беляева символы и строки в языке turbo pascal
- •Оглавление
- •Введение
- •Символьный тип Символьный тип char
- •Функция Ord
- •Функция Chr
- •Функция Succ
- •Функция Pred
- •Функция UpCase
- •Процедура Inc
- •Процедура Dec
- •Примеры использования стандартных процедур и функций обработки символов
- •Строки Встроенный тип string
- •Операции над строками string
- •Правила сравнения двух строк
- •Стандартные процедуры и функции для работы со строками string
- •Процедура Delete
- •Процедура Insert
- •Процедура Str
- •Процедура Val
- •Функция Length
- •Функция Concat
- •Функция Copy
- •Функция Pos
- •Примеры использования стандартных процедур и функций обработки строк
- •Множества
- •Операции над множествами
- •Пример использования множеств
- •Пример Обработки массива строк Задача “Поиск символов в тексте”
- •Задача “Поиск слов в строке и удаление символов”
- •Лабораторная работа “обработка строк” Цель работы
- •Общее задание
- •Простые варианты
- •Средние варианты
- •Сложные варианты
- •Список литературы
- •Символы и строки в языке turbo pascal
- •432027, Г. Ульяновск, Сев. Венец, 32.
Пример использования множеств
Задача: сделать программу, обеспечивающую проверку знаний шестнадцатеричных цифр.
Решение: сделаем простейший вариант, когда пользователь вводит строку с произвольным содержимым. Программа проверяет, все ли символы из множества шестнадцатеричных цифр он ввел.
Замечание: в записи шестнадцатеричных чисел могут быть использованы цифры от ‘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.
Попытайтесь решить эту задачу без использования множеств, и тогда вы почувствуете, насколько эффективны множества…
