不是VIP会员,不能显示答案

题目解答

题目:
1.某数据压缩方法描述如下:
1) 原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;
2) 原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个位0 ,第2个为0;
3) 原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个位0,第2个为重复数的个数,第3个为该数本身;
根据上述压缩方法,对应的解压缩方法示例如图3所示。

小明编写了一个解压缩程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a[1]、a[2]、a[3]……中,压缩数据的个数存储在变量n中,解压缩后的数据依次存储在数组元素b[1]、b[2]、b[3]……中。
输入格式:
输入数据两行,第一行一个数n,代表压缩数据个数;第二行n个数字,代表压缩数据。
输出格式:
输出文件仅有一行,为解压缩后的数据。
输入样例:
6
25 0 0 0 7 78
输出样例:
25 0 78 78 78 78 78 78 78
实现上述功能程序如下,请在划线处填入合适代码。
var
  a:array[1.. 1000] of integer;
  b:array[L . 1000] of integer;
  pa, pb, n, firstdata, count, i: integer; 
begin
  readln(n); 
  for i:=1 to n do
  read(a[i]); 
  pa:=1;
   pb:=1 ;
  while pa<=n do
    begin
	  firstdata:=a[pa];
	  if firstdata<>0 then
	  begin
	    b[pb]:= firstdata;
		pa:=pa+1;
		pb:=pb+1;
	  end
	  else
	    begin
		  count:=a[pa+1]; 
		  if count=0 then
		  begin
		    b[pb]:=0;
			pa:= pa+2 ;
    		pb:=pb+1
		  end
		  else
		    begin
			 for i:=1 to count do
			  begin
			    b[pb]:=a[pa+2];
				pb:= pb+1 ;
			  end;
			  pa:=pa+;
			end;
	     end;
	end;
	for i:=1 to  pb-1 do write (b[i],' ');
end.
考点:
分析:
解答:
评论:
老师: