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

0 голосов
124 просмотров

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

Нашел вот такой исходник, пытался понять но так и не понял, объясните кто-нибудь код)

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;


Информатика (50 баллов) | 124 просмотров
0

Ужас, а не программа (

0

Это что блин

Дан 1 ответ
0 голосов
Правильный ответ

Программа для случая, когда в строке только "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;

(194k баллов)
0

Delphi нет, так что проверяйте сами и если что - сигнализируйте. В паскале работает.

0

Спасибо, все отлично работает, ответил не вовремя, так как с нуля начинал писать)

0

Вот эту строчку только плохо понял, можно объяснить? while pos(' ',s)>0 do delete(s,pos(' ',s),1)

0

Строчка удаляет лишние пробелы, оставляя между группами нулей и единиц только один пробел. (Здесь в pos(' ',s) в апострофах два пробела).