Вывести перевод последовательности слов на английский (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.

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

  1. В начале программы объявляются необходимые переменные и создается тип данных для строковых массивов.
  2. Затем считываются данные с консоли: число слов для перевода (n) и флаг (f), указывающий на тип перевода.
  3. Для каждого слова, введенного пользователем, считывается строка s.
  4. По найденному пробелу в строке s определяется индекс слова в словаре.
  5. Если слово в словаре есть, то копируется нужная часть строки s в соответствующую ячейку словаря.
  6. После ввода всех слов, считывается последнее слово в строке s.
  7. Пока длина строки s больше 0, выполняется цикл.
  8. В цикле снова считывается строка s.
  9. По найденному пробелу в строке s определяется индекс слова в словаре.
  10. Если слово в словаре есть, то копируется нужная часть строки s в соответствующую ячейку словаря.
  11. В цикле удаляется символ пробела из строки s.
  12. Если слово в словаре есть, то переменной sWord присваивается значение слова из словаря, а переменной sWordReady присваивается значение слова, которое будет выведено на экран.
  13. После ввода всех слов, в цикле проверяется, есть ли совпадение слова в словаре.
  14. Если совпадение есть, то значение переменной sWordReady меняется на значение слова из словаря.
  15. Если совпадения нет, то в переменной sWordReady присваивается знак вопроса.
  16. После ввода всех слов, в цикле выводится на экран значение переменной sWordReady.
  17. Если длина строки s больше 0, то выводится пробел.
  18. Программа завершается.

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы