Курсовая работа - Изучение конечного автомата / Дискретка. Задание №5.doc
S0 — исходное состояние, счетчик букв равен 0;
S1 — переход к рабочему состоянию, номер текущего элемента массива равен 1;
S2 — определение содержимого ячейки (цифра или буква);
S3 — состояние увеличения счетчика букв.
S4 — состояние проверки наличия несосчитанных ячеек;
S5 — состояние перехода к следующей ячейке, увеличение номер текущего элемента массива;
S6 — конечное состояние счета букв;
S7 — вывод счетчика букв.
X1 — ввод исходных данных;
X2 — переход к процессу подсчета;
X3 — переход к увеличению счетчика букв;
X4 — переход к состояние перехода к следующей ячейке
X5 — переход к следующей ячейке;
X6 — продолжение счета ячеек;
X7 — переход в конечное состояние;
X8 — вывод результатов;
Y1 — количество ячеек содержащих буквы.
| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | |
| S0 | S1 | S0 | S0 | S0 | S0 | S0 | S0 | S0 |
| S1 | S1 | S2 | S1 | S1 | S1 | S1 | S1 | S1 |
| S2 | S2 | S2 | S3 | S4 | S2 | S2 | S2 | S2 |
| S3 | S3 | S3 | S3 | S4 | S3 | S3 | S3 | S3 |
| S4 | S4 | S4 | S4 | S4 | S5 | S4 | S6 | S4 |
| S5 | S5 | S5 | S5 | S5 | S5 | S2 | S5 | S5 |
| S6 | S6 | S6 | S6 | S6 | S6 | S6 | S6 | S7 |
| S7 | S7 | S7 | S7 | S7 | S7 | S7 | S7 | S7 |
| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | |
| S0 | - | - | - | - | - | - | - | - |
| S1 | - | - | - | - | - | - | - | - |
| S2 | - | - | - | - | - | - | - | - |
| S3 | - | - | - | - | - | - | - | - |
| S4 | - | - | - | - | - | - | - | - |
| S5 | - | - | - | - | - | - | - | - |
| S6 | - | - | - | - | - | - | - | Y1 |
| S7 | - | - | - | - | - | - | - | - |
program task5;
var
a: array [1..100] of char;
n, i, count: integer;
begin
// S0 — исходное состояние, счетчик букв равен 0;
count := 0;
// X1 — ввод исходных данных;
write(’enter cell count:’);
readln(n);
for i := 1 to n do begin
write(‘a[‘, i, ’]=’);
readln(a[i]);
end
// S1 — переход к рабочему состоянию, номер текущего элемента массива равен 1;
// X2 — переход к процессу подсчета;
for i := 1 to n do begin // X6 — продолжение счета ячеек;
if (a[i] in [’a’..’z’, ’a’..’z’, ’а’..’я’, ’a’..’я’]) then begin // S2 — определение
// содержимого ячейки (цифра или буква);
// X3 — переход к увеличению счетчика букв;
// S3 — состояние увеличения счетчика букв.
count := count + 1;
end
// X4 — переход к состояние перехода к следующей ячейке
// S4 — состояние проверки наличия несосчитанных ячеек;
// X5 — переход к следующей ячейке;
// S5 — состояние перехода к следующей ячейке, увеличение номер текущего элемента массива;
End
// S6 — конечное состояние счета букв;
// X8 — вывод результатов;
writeln(’letters count: ’, count); // S7 — вывод счетчика букв.
// Y1 — количество ячеек содержащих буквы.
end.
