Анализатор арифметического выражения - 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.
Объяснение кода листинга программы
- Объявлены две константы: ch и z.
- Константа ch содержит все цифры от 0 до 9.
- Константа z содержит все операторы: +, -, *, /.
- Функция analiz принимает строку s и возвращает булево значение true, если выражение корректно, иначе false.
- В функции объявлены две переменные: i и f.
- Переменная i используется для итерации по строке s.
- Переменная f в начале функции устанавливается в false.
- Если первый символ строки s не является цифрой или равен -, то функция возвращает false.
- Если первый символ является цифрой, то функция устанавливает f в true и i в 2.
- Цикл while проверяет корректность выражения, начиная со второго символа и до конца строки s.
- Если текущий символ не является цифрой или оператором, или является оператором и следующий за ним символ также является оператором, то функция возвращает false.
- Если текущий символ является цифрой или оператором и следующий за ним символ является оператором, то функция пропускает два символа и продолжает проверку следующего символа.
- Если цикл while завершается без ошибок, то функция возвращает true.
- В основной программе запрашивается ввод арифметического выражения без скобок.
- Введенное выражение передается в функцию analiz.
- Если функция вернула true, то выводится сообщение
нет ошибки
. - Если функция вернула false, то выводится сообщение
ошибка
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д