Array128. Дан целочисленный массив размера $$N$$. Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
program Array128; var a,CountSeries,temp : array [1..10] of real; LengthSeries,BeginSeries : array [1..10] of integer; N,i,i2,i3,NumSeries,MaxLengthSeries: integer; begin Write('N: '); Readln(N); Writeln('A: '); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; NumSeries:=1; LengthSeries[NumSeries]:=1; BeginSeries[NumSeries]:=NumSeries; MaxLengthSeries:=NumSeries; CountSeries[NumSeries]:=a[1]; for i:=2 to N do begin if a[i-1]=a[i] then begin LengthSeries[NumSeries]:=LengthSeries[NumSeries]+1 end else begin if LengthSeries[NumSeries]>LengthSeries[MaxLengthSeries] then MaxLengthSeries:=NumSeries; inc(NumSeries); LengthSeries[NumSeries]:=1; BeginSeries[NumSeries]:=i; CountSeries[NumSeries]:=a[i]; end; end; if LengthSeries[NumSeries]>LengthSeries[MaxLengthSeries] then MaxLengthSeries:=NumSeries; BeginSeries[NumSeries+1]:=N+1; LengthSeries[MaxLengthSeries]:=LengthSeries[MaxLengthSeries]+1; i3:=0; for i:=1 to NumSeries do for i2:=1 to LengthSeries[i] do begin inc(i3); temp[i3]:=CountSeries[i]; end; a:=temp; for i:=1 to i3 do writeln(a[i] ); end. |
Задачи из раздела Array можно посмотреть здесь.
Комментарии: