Проверить, есть ли заданные символы в "допустимой синтаксической конструкции" - Pascal
Формулировка задачи:
Уважаемые, кто может объяснить в чем ошибка.?
Имеется строка символов введеных с клавиатуры., нужно проверить, есть ли эти символы в "допустимой синтаксической конструкции", то есть, мы берем нашу строку которую ввели, не зависимо от того, числа там, знаки +-/*, или буквы. И ищем их в массиве a, если все символы строки содержатся в этом массиве, то выводится ''допустимо'', иначе ''не допустимо''. Проблема в том, что бы я не вводил, результат всегда ''не допустимо''.
var s:string; i,n:byte; f:boolean; а:array[0..9000] of char; begin writeln('Введите вашу строку символов'); read(s); n:=length(s); f:=true; i:=1; while(i<=n)and f do if not ((i=0) and (s[i] in a)) then f:=false else inc(i); if f then writeln(Допустимо') else writeln('не допустимо'); end.
Решение задачи: «Проверить, есть ли заданные символы в "допустимой синтаксической конструкции"»
textual
Листинг программы
var dsk,s:string; i,n:byte; f:boolean; begin writeln('Введите ДСК'); readln(dsk); writeln('Введите вашу строку символов'); readln(s); n:=length(s); f:=true; i:=1; while(i<=n)and f do if pos(s[i],dsk)=0 then f:=false else inc(i); if f then writeln('Допустимо') else writeln('не допустимо'); end.
Объяснение кода листинга программы
- Объявление переменных:
dsk
иs
- строки для хранения вводимых значенийi
иn
- переменные типа byte для хранения индексов и длины строкиf
- логическая переменная (boolean), которая будет использоваться в качестве флага для проверки символов
- Ввод значений:
- Вводится строка
dsk
, содержащая допустимую синтаксическую конструкцию. - Вводится строка
s
, содержащая символы для проверки.
- Вводится строка
- Проверка символов:
- Вычисляется длина строки
s
и сохраняется вn
. - Устанавливается начальное значение для переменной
f
(флаг) как true. - Устанавливается начальное значение для переменной
i
как 1. - В цикле происходит посимвольная проверка:
- Пока
i
меньше или равноn
и при этом флагf
равен true: - Если символ на позиции
i
в строкеs
не найден в строкеdsk
(с помощью функции pos), то флагf
становится false. - Иначе инкрементируется переменная
i
.
- Пока
- Если флаг
f
после цикла равен true, выводитсяДопустимо
, иначене допустимо
. Этот код осуществляет проверку наличия всех символов из строкиs
в строкеdsk
и выводит соответствующее сообщение в зависимости от результата.
- Вычисляется длина строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д