Нужно сделать чтобы программа выдавала ошибку в транслите с англ. на русский - Pascal ABC
Формулировка задачи:
Это программа транслирует только с русского на англ., а нужно сделать чтобы в обратном порядке он отменял программу и выдавал ошибку, т.е. например: "саша вышел погRлять" присутствует англ. буква и чтобы он сразу выдал ошибку не транслируя остальные буквы.
Решение задачи: «Нужно сделать чтобы программа выдавала ошибку в транслите с англ. на русский»
textual
Листинг программы
const alph :array [1..34,1..2] of string = (('а','a'),('б','b'),('в','v'),('г','g'),('д','d'),('е','e'),('ё','e'),('ж','zh'), ('з','z'),('и','i'),('й','y'),('к','k'),('л','l'),('м','m'),('н','n'),('о','o'),('п','p'), ('р','r'),('с','s'),('т','t'),('у','u'),('ф','f'),('х','h'),('ц','c'), ('ч','ch'),('ш','sh'),('щ','sch'),('ь','"'),('ы','y'),('ъ','i'),('э','e'), ('ю','y'),('я','ya'),(' ',' ')); var s, inp, t: string; i, j: integer; b: boolean; begin inp := ''; t := ''; b := false; writeln('Введите строку');readln(s); for i:=1 to length(s) do begin for j:= 1 to 34 do if alph[j, 1] = s[i] then t := alph[j, 2]; if length(t) > 0 then inp := inp + t else begin inp := inp + '?'; b := true; writeln(' ':i - 1, '^'); writeln('Ошибка транслитерации!'); break end; if b then break; T:='' end; writeln('translit :'); writeln(inp); readln; end.
Объяснение кода листинга программы
- В начале кода объявляются переменные s, inp, t и b. Переменная s предназначена для хранения введенной пользователем строки, переменная inp - для временного хранения транслитерации, переменная t - для хранения символа, соответствующего введенному символу алфавита, а переменная b - для контроля выхода из цикла при успешной транслитерации.
- Затем идет цикл for, который выполняется для каждого символа во введенной строке.
- Внутри цикла проверяется соответствие введенного символа символу алфавита. Если символы совпадают, то в переменную t записывается соответствующий символ транслитерации.
- Если длина переменной t становится больше 0, то к переменной inp добавляется символ из переменной t. Если длина переменной t равна 0, то в переменную inp добавляется символ '?'.
- После проверки всех символов введенной строки, если в переменной inp есть символы, то выводится сообщение об ошибке транслитерации и цикл прерывается командой break.
- Если в процессе выполнения цикла была найдена соответствующая транслитерация, то в конце программы выводится сообщение 'translit :' и значение переменной inp.
- В конце программы вызывается функция readln для чтения символа новой строки из стандартного ввода и завершения работы программы.