Скопировать из одного файла в другой слова с чётным количеством букв - PascalABC.NET

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

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

Всем привет. Не работает программа. Задание: Прочитать текст из файла f и записать в g все слова с четным количеством букв. Скорее всего весь мой код - лютый бред, но другой алгоритм не могу придумать.
Листинг программы
  1. program Vvod_Vivod;
  2. var
  3. A: array[1..255] of char;
  4. i, k, id, z: integer;
  5. t, f: text;
  6. l: string;
  7. begin
  8. assign(t, 'd:\input.txt');
  9. reset(t);
  10. read(t, l);
  11. i := 1;
  12. while i < length(l) do
  13. begin
  14. if not (l[i] = ' ') then
  15. k := k + 1
  16. else
  17. begin
  18. if (k mod 2 = 0) then begin
  19. id := i;
  20. i := i - k - 1;
  21. while i < id do
  22. begin
  23. a[i] := l[i];
  24. i := i + 1;
  25. z := z + 1;
  26. end;
  27. k := 0;
  28. end;
  29. end;
  30. i := i + 1;
  31. end;
  32. close(t);
  33. assign(f, 'output.txt');
  34. rewrite(f);
  35. for i := 1 to z do
  36. begin
  37. write(f, a[i]);
  38. end;
  39. close(f);
  40. end.
Решение есть.
Листинг программы
  1. program Vvod_Vivod;
  2. var
  3. A: array[1..255] of char;
  4. i, k, id, z: integer;
  5. t, f: text;
  6. l: string;
  7. begin
  8. assign(t, 'd:\input.txt');
  9. reset(t);
  10. read(t, l);
  11. i := 1;
  12. z:=i;
  13. l:=l+' ';
  14. while i <= length(l) do
  15. begin
  16. if (l[i] <> ' ') then
  17. begin
  18. k := k + 1;
  19. writeln(k);
  20. end
  21. else
  22. begin
  23. if (k mod 2 = 0) then begin
  24. id := i;
  25. i := i - k - 1;
  26. writeln('I - ', i);
  27. while i < id do
  28. begin
  29. a[z] := l[i];
  30. i := i + 1;
  31. z := z + 1;
  32. end;
  33. end;
  34. k := 0;
  35. end;
  36. i := i + 1;
  37. end;
  38. close(t);
  39. assign(f, 'output.txt');
  40. rewrite(f);
  41. for i := 1 to z do
  42. begin
  43. write(f, a[i]);
  44. end;
  45. close(f);
  46. end.

Решение задачи: «Скопировать из одного файла в другой слова с чётным количеством букв»

textual
Листинг программы
  1. begin
  2.   var d := (' .,!?:;''"/=<>{}[]()-+').ToCharArray;
  3.   var G : Text; Rewrite(G, 'output.txt');
  4.   foreach var S : String in ReadLines('input.txt') do
  5.     foreach var W : String in S.ToWords(d) do
  6.       if Not Odd(W.Length) then
  7.         WriteLn(G, W);
  8.   Close(G);
  9. end.

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

Код на языке PascalABC.Net выполняет следующие действия:

  1. Создаёт переменную d типа array of char, которая содержит символы, обозначающие пробелы и знаки препинания.
  2. Создаёт объект Text типа StreamWriter для записи в файл output.txt.
  3. Открывает файл input.txt для чтения строк.
  4. В цикле считывает строки из файла input.txt и разделяет каждую строку на слова с помощью метода ToWords(d).
  5. Вложенным циклом проверяет каждое слово на чётность длины с помощью функции Odd(W.Length). Если длина слова чётная, то записывает его в файл output.txt.
  6. Закрывает файл G.

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


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

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

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы