Вывести перевод последовательности слов на английский (f=0) или на символьный (f=1) язык - Turbo Pascal
Формулировка задачи:
Здравствуйте, прошу помощи с заданием.
вводятся n (кол-во слов) и f (направление перевода 1 или 0) f=0 означает перевод с языка символов на английский, а f=1 – перевод с английского на символьный. Следующие n строк содержат по два слова – слово из языка символов и его перевод на английский.
Следующая (последняя) строка ввода содержит последовательность слов на символьном (f=0) или на английском (f=1) языке. Слова разделены одним пробелом.
Вывести перевод последовательности слов на английский (f=0) или на символьный (f=1) язык. Если какое-то слово отсутствует в словаре, то вывести вместо перевода символ ?
пример:
5 0
>< home
~ eat
>= good
()@ go
!> work
введенная строка
!> ~ ()@ ><
work eat go home ?
Решение задачи: «Вывести перевод последовательности слов на английский (f=0) или на символьный (f=1) язык»
textual
Листинг программы
program lab; type TString = string[20]; TLocalVocabulary = array [1..100] of TString; TDictionary = array[0..1] of TLocalVocabulary; var n, f: integer; Dictionary: TDictionary; i, j: integer; s: string; sWord, sWordReady: string; begin readln(n, f); for i := 1 to n do begin readln(s); j := pos(' ', s); Dictionary[0, i] := copy(s, 1, j - 1); Dictionary[1, i] := copy(s, j + 1, length(s) - j); end; readln(s); while length(s) > 0 do begin j := pos(' ', s); if j = 0 then j := length(s) + 1; sWord := copy(s, 1, j - 1); Delete(s, 1, j); sWordReady := '?'; for j := 1 to n do if sWord = Dictionary[f, j] then begin sWordReady := Dictionary[1 - f, j]; break; end; Write(sWordReady); if Length(s) <> 0 then Write(' '); end; writeln; end.
Объяснение кода листинга программы
- В начале программы объявляются необходимые переменные и создается тип данных для строковых массивов.
- Затем считываются данные с консоли: число слов для перевода (n) и флаг (f), указывающий на тип перевода.
- Для каждого слова, введенного пользователем, считывается строка s.
- По найденному пробелу в строке s определяется индекс слова в словаре.
- Если слово в словаре есть, то копируется нужная часть строки s в соответствующую ячейку словаря.
- После ввода всех слов, считывается последнее слово в строке s.
- Пока длина строки s больше 0, выполняется цикл.
- В цикле снова считывается строка s.
- По найденному пробелу в строке s определяется индекс слова в словаре.
- Если слово в словаре есть, то копируется нужная часть строки s в соответствующую ячейку словаря.
- В цикле удаляется символ пробела из строки s.
- Если слово в словаре есть, то переменной sWord присваивается значение слова из словаря, а переменной sWordReady присваивается значение слова, которое будет выведено на экран.
- После ввода всех слов, в цикле проверяется, есть ли совпадение слова в словаре.
- Если совпадение есть, то значение переменной sWordReady меняется на значение слова из словаря.
- Если совпадения нет, то в переменной sWordReady присваивается знак вопроса.
- После ввода всех слов, в цикле выводится на экран значение переменной sWordReady.
- Если длина строки s больше 0, то выводится пробел.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д