06.12.2015, 21:24 | #1 (permalink) |
Новичок
Регистрация: 06.12.2015
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Найти самое длинное симметpичное слово заданного пpедложения
|
06.12.2015, 21:24 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Не стоит делать поспешных действий, полистайте аналогичные проблемы Что из сборки самое слабое? Самое нужное iOS 7 - самое неудачное обновление |
07.12.2015, 10:43 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Понятно. Пожалуйста.
Единственно, я не пользуюсь ни ABC, ни ABC.Net, написано на Turbo (Free), Вы уж подправьте сами, если что. Код:
Var W:Array[1..100] of String; S:String; i,j,N,L,Imax,Lmax:integer; Function Test_symm(D:String):Boolean; var b:boolean; Ld,k:integer; begin Ld:=Length(D); k:=0; b:=true; repeat Inc(k); if D[k]<>D[Ld-k+1] then b:=false; until (b=false) or (k=(Ld div 2)); Test_symm:=b; end; Begin Writeln('Enter the string'); Readln(S); L:=Length(S); Writeln; j:=1; i:=0; Repeat W[j]:=''; repeat Inc(i); until S[i]<>' '; if i<L then begin while (S[i]<>' ') and (i<=L) do begin W[j]:=W[j]+S[i]; Inc(i); end; end; if i<L then Inc(j); Until i>=L; N:=j; Lmax:=0; Imax:=0; for i:=1 to N do if Test_symm(W[i]) and (Length(W[i])>Lmax) then begin Imax:=i; Lmax:=Length(W[i]); end; if Imax=0 then Writeln('String contains no symmetrical words') else Writeln('Result: '+W[Imax]); Readln End. |
07.12.2015, 11:59 | #5 (permalink) |
Новичок
Регистрация: 06.12.2015
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Мне нужно с циклом while, мы не используем inc
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
07.12.2015, 12:26 | #7 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну ладно, вот:
Код:
Var W:Array[1..100] of String; S:String; i,j,N,L,Imax,Lmax:integer; Function Test_symm(D:String):Boolean; var b:boolean; Ld,k:integer; begin Ld:=Length(D); k:=0; b:=true; while b and (k<=(Ld div 2)) do begin k:=k+1; if D[k]<>D[Ld-k+1] then b:=false; end; Test_symm:=b; end; Begin Writeln('Enter the string'); Readln(S); L:=Length(S); Writeln; j:=1; i:=0; While i<L do begin W[j]:=''; while S[i]=' ' do i:=i+1; if i<L then begin while (S[i]<>' ') and (i<=L) do begin W[j]:=W[j]+S[i]; i:=i+1; end; end; if i<L then j:=j+1; end; N:=j; Lmax:=0; Imax:=0; for i:=1 to N do if Test_symm(W[i]) and (Length(W[i])>Lmax) then begin Imax:=i; Lmax:=Length(W[i]); end; if Imax=0 then Writeln('String contains no symmetrical words') else Writeln('Result: '+W[Imax]); Readln End. |
07.12.2015, 12:38 | #8 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
procedure Proverka(var as1,as2:string);
var j,e,m:byte; f:boolean; begin m:=Length(as1); e:=0; f:=true; for j:=1 to (m div 2) do if as1[j]=as1[m-j+1] then e:=e+1 else begin f:=false; as1:=''; Break end; if f then if m>Length(as2) then begin as2:=as1; as1:=''; end; end; var s,s1,s2:string; i:byte; begin Writeln('Vvedite stroku:'); Readln(s); Writeln; s1:=''; s2:=''; i:=0; While i<Length(s) do begin i:=i+1; if i=Length(s) then begin s1:=s1+s[i]; if Length(s1)=1 then s1:='' else Proverka(s1,s2); end else if s[i]<>' ' then s1:=s1+s[i] else if Length(s1)=1 then s1:='' else Proverka(s1,s2); end; if Length(s2)>0 then Writeln('Samoe dlinnoe sim. slovo: '+s2) else Writeln('Net simmetricnih slov'); Readln; end. |
07.12.2015, 14:59 | #9 (permalink) |
Новичок
Регистрация: 06.12.2015
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|