Проверить, есть ли заданные символы в "допустимой синтаксической конструкции" - 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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • dsk и s - строки для хранения вводимых значений
    • i и n - переменные типа byte для хранения индексов и длины строки
    • f - логическая переменная (boolean), которая будет использоваться в качестве флага для проверки символов
  2. Ввод значений:
    • Вводится строка dsk, содержащая допустимую синтаксическую конструкцию.
    • Вводится строка s, содержащая символы для проверки.
  3. Проверка символов:
    • Вычисляется длина строки s и сохраняется в n.
    • Устанавливается начальное значение для переменной f (флаг) как true.
    • Устанавливается начальное значение для переменной i как 1.
    • В цикле происходит посимвольная проверка:
      • Пока i меньше или равно n и при этом флаг f равен true:
      • Если символ на позиции i в строке s не найден в строке dsk (с помощью функции pos), то флаг f становится false.
      • Иначе инкрементируется переменная i.
    • Если флаг f после цикла равен true, выводится Допустимо, иначе не допустимо. Этот код осуществляет проверку наличия всех символов из строки s в строке dsk и выводит соответствующее сообщение в зависимости от результата.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы