Скопировать в другой файл последовательность строк, и подсчитать число палиндромов - 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.

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

  1. Объявление переменных:
    • n, k, i, b, p: целочисленные переменные для хранения счетчиков;
    • ch: переменная типа char для хранения текущего символа;
    • s: строковая переменная для хранения текущей строки;
    • alph, decim: множества символов для определения диапазона копирования;
    • int, outt: текстовые переменные для работы с файлами.
  2. Определение функции Pal для проверки строки на палиндром:
    • Функция принимает строку s и возвращает булево значение true, если строка является палиндромом, и false в противном случае.
    • Внутри функции определен цикл, который проходит по половине строки и сравнивает каждый символ с его зеркальным отображением. Если символы совпадают, то счетчик палиндромов увеличивается.
    • Если количество палиндромов равно общему количеству символов в строке (с учетом пробелов), то функция возвращает true.
  3. Основная часть программы:
    • Создание и открытие файлов int и outt для чтения и записи соответственно;
    • Запрос у пользователя диапазона для копирования (начало и конец);
    • Инициализация счетчиков b и p;
    • Цикл, который проходит по каждому символу в указанном диапазоне;
    • Если текущий символ является буквой, то увеличивается счетчик b;
    • Если текущий символ не является числом или знаком препинания, то он добавляется в строку s;
    • Если строка s является палиндромом, то увеличивается счетчик p;
    • После обработки каждого символа, он записывается в файл outt;
    • После завершения цикла, выводятся результаты: количество скопированных букв и количество скопированных строк-палиндромов.
  4. Конец программы:
    • Закрытие файлов int и outt;
    • Ожидание нажатия клавиши для завершения программы.

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


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

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

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