Проверить, есть ли заданные символы в "допустимой синтаксической конструкции" - 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
и выводит соответствующее сообщение в зависимости от результата.
- Вычисляется длина строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д