
Напишите, пожалуйста, программу на Free Pascal. Определить, является ли заданная строка
подпоследовательностью исходной строки. Без использования строковых функций. Можно использовать только функцию lenght(s).

Ответы на вопрос

var
s, ss: string;
ls, lss, i, j: integer;
flag: boolean;
begin
readln(s);
readln(ss);
i := 1;
ls := Length(s);
lss := Length(ss);
flag := false;
while i <= ls - lss + 1 do
begin
if s[i] = ss[1] then
begin
flag := true;
for j := 1 to lss - 1 do
if s[i + j] <> ss[j + 1] then
begin
i := i + j;
flag := false;
break
end;
if flag then
begin
write('является');
exit;
end;
end;
i += 1;
end;
write('не является');
end.



Конечно, вот программа на Free Pascal, которая определяет, является ли заданная строка подпоследовательностью исходной строки без использования строковых функций:
pascalprogram SubsequenceCheck; var source, subsequence: string; i, j, sourceLen, subsequenceLen: integer; isSubsequence: boolean; begin // Ввод исходной строки write('Введите исходную строку: '); readln(source); // Ввод строки, которую нужно проверить как подпоследовательность write('Введите строку, которую нужно проверить: '); readln(subsequence); // Получение длины исходной строки и строки-подпоследовательности sourceLen := length(source); subsequenceLen := length(subsequence); // Инициализация флага, который будет указывать, является ли subsequence подпоследовательностью source isSubsequence := false; // Перебираем исходную строку i := 1; j := 1; while (i <= sourceLen) and (j <= subsequenceLen) do begin if source[i] = subsequence[j] then begin // Если символы совпадают, увеличиваем индексы обеих строк i := i + 1; j := j + 1; end else begin // Если символы не совпадают, увеличиваем только индекс исходной строки i := i + 1; end; // Если мы прошли по всей строке-подпоследовательности, она является подпоследовательностью if j > subsequenceLen then begin isSubsequence := true; break; end; end; // Вывод результата if isSubsequence then writeln('Строка "', subsequence, '" является подпоследовательностью строки "', source, '".') else writeln('Строка "', subsequence, '" не является подпоследовательностью строки "', source, '".'); end.
Эта программа сначала запрашивает у пользователя исходную строку и строку, которую нужно проверить как подпоследовательность. Затем она перебирает символы обеих строк и проверяет, является ли вторая строка подпоследовательностью первой. Результат выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili