Предмет: Информатика, автор: BlackNPS

Описать рекурсивную логическую функцию
Sim(s,i,j),
проверяющую, является ли симметричной часть строки s,
начинающаяся і-м и заканчивающаяся j-м элементом. СРОЧНО

Ответы

Автор ответа: coresh76
1

Ответ:

program SymmetryCheck;

function Sim(s: string; i, j: integer): boolean;

begin

 // Условие 1

 if i > j then

   Sim := true

 // Условие 2

 else if s[i] <> s[j] then

   Sim := false

 // Условие 3

 else

   Sim := Sim(s, i+1, j-1);

end;

var

 s: string;

 result: boolean;

begin

 s := 'abcba';

 result := Sim(s, 1, Length(s));

 if result then

   writeln('Строка является симметричной')

 else

   writeln('Строка не является симметричной');

end.

Объяснение:

В этом коде мы объявляем функцию Sim, которая будет проверять, является ли часть строки s[i..j] симметричной. Функция работает рекурсивно, вызывая саму себя для части строки s[i+1..j-1] и возвращая результат этого вызова.

Затем мы объявляем переменную s и присваиваем ей значение 'abcba'. Эта строка является симметричной, так как она читается слева направо и справа налево одинаково. Мы вызываем функцию Sim для этой строки, передавая ей начальный и конечный индексы строки (1 и Length(s) соответственно). Результат этого вызова сохраняется в переменной result.

Наконец, мы используем условную конструкцию if-then-else, чтобы вывести сообщение о том, является ли строка симметричной или нет. Если result равно true, то строка симметрична, иначе - нет.


BlackNPS: Сможешь полностью код скинуть ? pascal
coresh76: думаю да
coresh76: куда кинуть?
BlackNPS: сюда просто
coresh76: Я изменил ответ, можешь смотреть
BlackNPS: Sim не описан что за функция (
Похожие вопросы
Предмет: Литература, автор: alinamisurka2