pascal 程序提问1

来源:百度知道 编辑:UC知道 时间:2024/07/02 14:38:50
program program4;
var c: array[1..3] of string[200];
s: array[1..10] of integer;
m, n, i: integer;
procedure numara;
var cod: boolean;
i, j, nr: integer;
begin
for j := 1 to n do begin
nr := 0; cod := true;
for i := 1 to m do
if c[i, j] = '1' then begin
if not cod then begin
cod := true; inc(s[nr]); nr := 0;
end
end
else begin
if cod then begin
nr := 1; cod := false;
end
else inc(nr);
end;
if not cod then inc(s[nr]);
end;
end;
begin
readln(m, n);
for i := 1 to m do readln(c[i]);
numara;
for i := 1 to m do
if s[i] <> 0 then write(i, ' ', s[i], ' ');
end.
输入
3 10
1110000111
1100001111
1000000011
答案是 1 4 2 1 3 3
但是不知道怎么解答
s[i]的值是怎么来的
应该没问题的,我进入程序调试结果出来了
我也是看不懂c[i,j]

程序的功能每列有多少个连续0:
program program4 ;
var
c:array[1..2] of string[200];
s:array[1..10] of integer;
m,n,i:integer ;

procedure numara;
var
cod:boolean;
i,j,nr:integer;
begin
for j:=1 to n do{注意:外循环控制列110}
begin
nr:=0;cod:=true;
for i:=1 to m do{注意:内循环控制行13}
if c[i,j]='1' then
begin
if not cod then {前1个false}
begin
cod:=true;inc(s[nr]);nr:=0;
end
end
else begin{从第1到2列连续5个1,第6个0开始执行nr等于1;cod等于false;s[1]等于1}
if cod then
begin nr:=1;cod:=false ;end
else inc(nr);
end;
if not cod then inc(s[nr]);
end;
end;
begin
readln(m,n);
for i:=1 to m do readln(c[i]);
numara;
for i:=1 to m do
if s[i] <>0 then write(i,' ',s[i],' ');
read(i);
end.

水题~~~刷掉。。。<