Суть такова: дана строка, состоящая из групп нулей и единиц. каждая группа отделяется от другой одним или несколькими пробелами.подсчитать количество символов в самой длинной группе. нашел вот такой исходник, пытался понять но так и не понял, объясните кто-нибудь код) 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;

madina319 madina319    1   24.08.2019 22:50    11

Ответы
Marmanril12 Marmanril12  05.10.2020 17:33
Программа для случая, когда в строке только "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;
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика