Строки. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дана строка символов, состоящая из русских слов, разделенных пробелами. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы. Полученные слова вывести на экран в обратном лексикографическом порядке.

Решение задачи: «Строки. В каждом четном по порядку слове удалить все нечетные буквы, а в каждом нечетном слове удалить все четные буквы»

textual
Листинг программы
var 
  s, T : string;
  i, j, prev, word_num : integer;
  arr : array[1 .. 50] of string;
begin
  { write('s = '); readln(s); }
  s := 'привет это простой тест приложения';
  
  s := s + ' ';
  prev := 0; 
  word_num := 1;
  i := 1;
  while i <= length(s) do
  begin
    if s[i] = ' ' then
    begin
      if i - prev > 1 then
      begin
        { слово - от prev + 1 до i - 1 }
        for j := i - prev - 1 downto 1 do 
          if odd(word_num) <> odd(j) then 
          begin
            delete(s, prev + j, 1); dec(i);
          end;
        arr[word_num] := copy(s, prev + 1, i - prev - 1);
        inc(word_num);
      end;
      prev := i;
    end;
    inc(i);
  end;
  dec(word_num);
  
  for i := 1 to word_num do
    for j := word_num downto i +1 do
      if arr[j - 1] < arr[j] then
      begin
        T := arr[j - 1]; arr[j - 1] := arr[j]; arr[j] := T;
      end;
  for i := 1 to word_num do
    write(arr[i], ' ');
  writeln;
end.

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

  1. Объявляются переменные: s, T, i, j, prev, word_num, arr.
  2. Строка «s =» используется для чтения строки из стандартного ввода.
  3. Строка «s :=» используется для присвоения строки переменной s.
  4. Строка «s := s + « »» используется для добавления пробела к строке s.
  5. Строка «prev := 0» устанавливает значение переменной prev равным 0.
  6. Строка «word_num := 1» устанавливает значение переменной word_num равным 1.
  7. Строка «i := 1» устанавливает значение переменной i равным 1.
  8. Строка «while i <= length(s) do» используется для цикла while i меньше или равно длине строки s.
  9. Строка «if s[i] = « «»» then» используется для проверки, является ли i-й символ строки s пробелом.
  10. Строка «begin» используется для начала блока кода.
  11. Строка «if s[i] = « «»» then» повторяется до тех пор, пока i не превышает длину строки s.
  12. Строка «if odd(word_num) <> odd(j) then» используется для проверки, является ли j-й индекс массива word_num нечетным.
  13. Строка «delete(s, prev + j, 1)` используется для удаления j-го символа из строки s, начиная с позиции prev + j.
  14. Строка «arr[word_num] := copy(s, prev + 1, i — prev — 1)` используется для копирования символов из строки s, начиная с позиции prev + 1 и заканчивая позицией i — prev — 1, в массив word_num.
  15. Строка «inc(word_num)` используется для увеличения значения переменной word_num на 1.
  16. Строка «dec(word_num)` используется для уменьшения значения переменной word_num на 1.
  17. Строка «for i := 1 to word_num do» используется для цикла for i от 1 до длины массива word_num.
  18. Строка «write(arr[i], « «»»)` используется для вывода i-го элемента массива word_num.
  19. Строка «writeln» используется для вывода строки на экран.
  20. Строка «end.» используется для окончания блока кода.

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


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

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

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