Проверить, есть ли заданные символы в "допустимой синтаксической конструкции" - Pascal

Узнай цену своей работы

Формулировка задачи:

Уважаемые, кто может объяснить в чем ошибка.? Имеется строка символов введеных с клавиатуры., нужно проверить, есть ли эти символы в "допустимой синтаксической конструкции", то есть, мы берем нашу строку которую ввели, не зависимо от того, числа там, знаки +-/*, или буквы. И ищем их в массиве a, если все символы строки содержатся в этом массиве, то выводится ''допустимо'', иначе ''не допустимо''. Проблема в том, что бы я не вводил, результат всегда ''не допустимо''.
Листинг программы
  1. var
  2. s:string;
  3. i,n:byte;
  4. f:boolean;
  5. а:array[0..9000] of char;
  6. begin
  7. writeln('Введите вашу строку символов');
  8. read(s);
  9. n:=length(s);
  10. f:=true;
  11. i:=1;
  12. while(i<=n)and f do
  13. if not ((i=0) and (s[i] in a)) then f:=false
  14. else inc(i);
  15. if f then writeln(Допустимо')
  16. else writeln('не допустимо');
  17. end.

Решение задачи: «Проверить, есть ли заданные символы в "допустимой синтаксической конструкции"»

textual
Листинг программы
  1. var dsk,s:string;
  2.     i,n:byte;
  3.     f:boolean;
  4. begin
  5. writeln('Введите ДСК');
  6. readln(dsk);
  7. writeln('Введите вашу строку символов');
  8. readln(s);
  9. n:=length(s);
  10. f:=true;
  11. i:=1;
  12. while(i<=n)and f do
  13. if pos(s[i],dsk)=0 then f:=false
  14. else inc(i);
  15. if f then writeln('Допустимо')
  16. else writeln('не допустимо');
  17. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы