Анализатор арифметического выражения - Pascal ABC

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

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

Помогите! Тут такое дело, пишу анализатор для выражения с целочисленными операндами. И вроде как то работает, но не так как то. Подскажите или помогите его переписать.
[/FONT]

Решение задачи: «Анализатор арифметического выражения»

textual
Листинг программы
const ch=['0'..'9'];
      z=['+', '-','*','/'];
function analiz(s:string):boolean;
var i:byte;
    f:boolean;
begin
if not(s[1] in ch)or(s[1]='-')then f:=false
else
 begin
  f:=true;
  i:=2;
  while(i<=length(s))and f do
  if not(s[i] in ch+z)or((i<length(s))and(s[i] in z)and(s[i+1] in z))
  then f:=false else inc(i)
 end;
analiz:=f
end;
var s:string;
begin
writeln('Введите арифметическое выражение без скобок');
readln(s);
if analiz(s) then  writeln('нет ошибки')
else writeln('ошибка')
end.

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

  1. Объявлены две константы: ch и z.
  2. Константа ch содержит все цифры от 0 до 9.
  3. Константа z содержит все операторы: +, -, *, /.
  4. Функция analiz принимает строку s и возвращает булево значение true, если выражение корректно, иначе false.
  5. В функции объявлены две переменные: i и f.
  6. Переменная i используется для итерации по строке s.
  7. Переменная f в начале функции устанавливается в false.
  8. Если первый символ строки s не является цифрой или равен -, то функция возвращает false.
  9. Если первый символ является цифрой, то функция устанавливает f в true и i в 2.
  10. Цикл while проверяет корректность выражения, начиная со второго символа и до конца строки s.
  11. Если текущий символ не является цифрой или оператором, или является оператором и следующий за ним символ также является оператором, то функция возвращает false.
  12. Если текущий символ является цифрой или оператором и следующий за ним символ является оператором, то функция пропускает два символа и продолжает проверку следующего символа.
  13. Если цикл while завершается без ошибок, то функция возвращает true.
  14. В основной программе запрашивается ввод арифметического выражения без скобок.
  15. Введенное выражение передается в функцию analiz.
  16. Если функция вернула true, то выводится сообщение нет ошибки.
  17. Если функция вернула false, то выводится сообщение ошибка.

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


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

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

7   голосов , оценка 3.286 из 5