Суть задачи такова: Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами.Подсчитать количество символов в самой длинной группе. Нашел вот такой исходник, пытался пон...

Суть задачи такова: Дана строка, состоящая из групп нулей и единиц. Каждая группа отделяется от другой одним или несколькими пробелами.Подсчитать количество символов в самой длинной группе. Нашел вот такой исходник, пытался понять но так и не понял, объясните кто-нибудь код) procedure TForm1.Button1Click(Sender: TObject); var s:string; i,l,c,m:integer; z,u:boolean; begin if combobox1.Text<>'' then begin s:=combobox1.Text; combobox1.Items.Insert(0,s); l:=length(s); z:=false; u:=false; c:=0; m:=0; for i:=1 to l do begin if ((s[i]='0')and not z)or((s[i]='1')and not u)then begin if m end; if ((s[i]='0')and not z) then begin u:=false; z:=true; c:=0; end; if ((s[i]='1')and not u) then begin u:=true; z:=false; c:=0; end; if ((s[i]='0')and z)or((s[i]='1')and u)then c:=c+1; end; if m label1.Caption:='Количество символов в самой длинной группе: '+inttostr(m); end; end;
Гость
Ответ(ы) на вопрос:
Гость
Программа для случая, когда в строке только "0", "1" и пробелы (т.е. проверки корректности ввода нет): procedure TForm1.Button1Click(Sender: TObject); var s:string; i,k,max:integer; begin if combobox1.Text<>'' then begin s:=combobox1.Text; combobox1.Items.Insert(0,s); s:=s+' '; while pos('  ',s)>0 do delete(s,pos('  ',s),1); k:=0; max:=0; for i:=1 to length(s) do   if s[i]<>' '    then k:=k+1    else begin         if k>max then max:=k;         k:=0;         end; label1.Caption:='Количество символов в самой длинной группе: '+inttostr(max); end; end;
Не нашли ответ?
Ответить на вопрос
Похожие вопросы