0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 14
1

Описать рекурсивную логическую функцию Sym(S, i, j), проверяющую, является ли симметричной часть строки S

14.01.2013, 16:21. Показов 2621. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать рекурсивную логическую функцию Sym(S, i, j), проверяющую, является ли симметричной часть строки S, начинающаяся i-м и кончающаяся j-м ее элементами.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2013, 16:21
Ответы с готовыми решениями:

Описать логическую функцию, проверяющую является ли симметричной часть массива
Описать логическую функцию, проверяющую является ли симметричной часть массива, начинающегося i-м и...

Описать рекурсивную логическую функцию cumm (s,I,j),Проверяющую ,является ли симметричной часть строки s,Начинающаяся i-m и кончающаяся j-m ее элем
Описать рекурсивную логическую функцию cumm (s,I,j),Проверяющую ,является ли симметричной часть...

Описать рекурсивную логическую функцию, определяющую, является ли симметричной часть строки S
3. Описать рекурсивную логическую функцию, определяющую, является ли симметричной часть строки S,...

Описать логическую функцию, проверяющую, упорядочены ли по возрастанию элементы непустого файла
Type row = file of 0..999. описать логическую функцию, проверяющую, упорядочены ли по возрастанию...

4
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 14
17.01.2013, 17:43  [ТС] 2
Добавлено через 19 часов 37 минут
Программу мне помогли решить.
Вот, может пригодится кому:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var j,k,i,n:integer;
    s:string;
    c:char;
 
function sym(s:string; i,j:integer):string;
var sm:string;
    n:integer;
begin
     n:=j-i+1;
     if (n mod 2)=1 then
     begin
       n:=n div 2+1;
       Delete(s,i+n,1);
       j:=j-1;
     end;
     n:=n-1+i;
     if i<n then begin
        if s[i] = s[j] then
        begin
             i:=i+1;
             j:=j-1;
             sym:=sym(s,i,j);
        end
        else
            sym:='no';
     end
     else
     sym:='yes';
end;
begin
writeln('Vvedite stroku s');
Readln(s);
writeln('Vvedite i');
readln(i);
writeln('Vvedite j');
readln(j);
Writeln(sym(s,i,j));
readln;
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32489 / 20975 / 8115
Регистрация: 22.10.2011
Сообщений: 36,249
Записей в блоге: 7
18.01.2013, 17:01 3
Выбрось это решение куда подальше, чтоб его никто не видел (тем более, это решение не соответствует заданию. Просили логическую функцию, а у тебя sym возвращает не Boolean, а String). Задача рекурсивно решается в две строки:
Pascal
1
2
3
4
5
function sym(s : string; start, finish : integer) : boolean;
begin
   if finish - start < 2 then sym := s[start] = s[finish]
   else sym := sym(s, start + 1, finish - 1);
end;
1
142 / 148 / 116
Регистрация: 15.11.2012
Сообщений: 537
Записей в блоге: 2
22.01.2013, 22:48 4
да работает, но только если длина строка чётная, при входных abc и 1,3 говорит что симметрична -(
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
VAR
   stroka:string;
   i,j,k:integer;
 
function sym(s : string; start, finish : integer) : boolean;
begin
   if finish - start < 2 then sym := s[start] = s[finish]
   else sym := sym(s, start + 1, finish - 1);
end;
 
BEGIN
     write('stroka = '); readln(stroka);
     write('i,j (cherez probel) = '); readln(i,j);
     if SYM(stroka,i,j) then for k:=i to j do write(stroka[k])
     else write('no!');
     readln;
END.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32489 / 20975 / 8115
Регистрация: 22.10.2011
Сообщений: 36,249
Записей в блоге: 7
23.01.2013, 02:19 5
А так:
Pascal
1
2
3
4
5
6
function sym(s : string; start, finish : integer) : boolean;
begin
   if finish - start < 2 then sym := s[start] = s[finish]
   else
      sym := (s[start] = s[finish]) and sym(s, start + 1, finish - 1);
end;
?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2013, 02:19
Помогаю со студенческими работами здесь

Описать логическую функцию, проверяющую, есть ли в группе хотя бы 2 человека одного роста
type имя = (Анна, Евгений, Петр, Андрей, Татьяна); данные = record пол...

Описать логическую функцию check(s) для тестового фаила S, проверяющую, содержит ли фаил S латинские буквы
Описать логическую функцию check(s) для тестового фаила S, проверяющую, содержит ли фаил S...

Проверить, является ли симметричной часть строки s
Помогите пожалуйста решить: Type stroka= array of char; Описать рекурсивную логическую функцию...

Описать, логическую функцию Is_letter(c), которая определит , является ли некий произвольный символ с одной из
Описать, логическую функцию Is_letter(c), которая определит , является ли некий произвольный символ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru