Скопировать в другой файл последовательность строк, и подсчитать число палиндромов - Pascal
Формулировка задачи:
Мне нужно скопировать из одного текстового файла в другой последовательность строк, заданных начальным и конечным порядковыми номерами от начала файла.И затем вывести на экран количество скопированных символов букв и число скопированных слов, являющихся ПАЛИНДРО*МАМИ.
Решение задачи: «Скопировать в другой файл последовательность строк, и подсчитать число палиндромов»
textual
Листинг программы
program fr; var alph, decim: set of char; int, outt: text; n, k, i, b, p: integer; ch: char; s: string; function Pal(s: string):boolean; var z, c: byte; begin c:= 0; for z:= 1 to ((length(s) div 2)+(length(s) mod 2)) do begin if s[z] = s[length(s)-z+1] then inc(c); end; if c = ((length(s) div 2) + (length(s) mod 2)) then Pal:= true else Pal:= false; end; begin assign(int,'1.txt'); assign(outt,'2.txt'); reset(int); rewrite(outt); alph:= ['a'..'z','A'..'Z']; decim:= ['.',' ',',',':',';','?','!']; writeln('Vvedite diapazon kopirovania: '); write('Nachalo: '); readln(n); write('Konez: '); readln(k); p:= 0; b:= 0; i:= 1; repeat begin if i >= n then begin read(int,ch); if (ch in alph) then inc(b); if not (ch in decim) then s:= s+ch else begin if Pal(s) then inc(p); s:= ''; end; write(outt,ch); end; inc(i); end; until i > k+1; writeln('Kolichestvo skopirovannux bukb: ', b); writeln('Kolichestvo skopirovannux slov, iavliaychixsia palindromami: ', p); close(int); close(outt); readln; end.
Объяснение кода листинга программы
- Объявление переменных:
- n, k, i, b, p: целочисленные переменные для хранения счетчиков;
- ch: переменная типа char для хранения текущего символа;
- s: строковая переменная для хранения текущей строки;
- alph, decim: множества символов для определения диапазона копирования;
- int, outt: текстовые переменные для работы с файлами.
- Определение функции Pal для проверки строки на палиндром:
- Функция принимает строку s и возвращает булево значение true, если строка является палиндромом, и false в противном случае.
- Внутри функции определен цикл, который проходит по половине строки и сравнивает каждый символ с его зеркальным отображением. Если символы совпадают, то счетчик палиндромов увеличивается.
- Если количество палиндромов равно общему количеству символов в строке (с учетом пробелов), то функция возвращает true.
- Основная часть программы:
- Создание и открытие файлов int и outt для чтения и записи соответственно;
- Запрос у пользователя диапазона для копирования (начало и конец);
- Инициализация счетчиков b и p;
- Цикл, который проходит по каждому символу в указанном диапазоне;
- Если текущий символ является буквой, то увеличивается счетчик b;
- Если текущий символ не является числом или знаком препинания, то он добавляется в строку s;
- Если строка s является палиндромом, то увеличивается счетчик p;
- После обработки каждого символа, он записывается в файл outt;
- После завершения цикла, выводятся результаты: количество скопированных букв и количество скопированных строк-палиндромов.
- Конец программы:
- Закрытие файлов int и outt;
- Ожидание нажатия клавиши для завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д