Дан целочисленный массив размера N. Преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент. Паскаль
Дан целочисленный массив размера N. Преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент. Паскаль
Ответ(ы) на вопрос:
program Array129;
var
a: array [1..40] of integer;
B: array [1..20] of integer;
C: array [1..20] of integer;
temp,M,N,i,j:integer;
begin
writeln('Введите N (N<=20)');
readln(N);
writeln('Значения массива А');
for i:=1 to n do begin write('a[',i,']=');readln(A[i]); B[i]:=i; end;
// решение
temp:=0;
m:=0;
// формируем из исходного массива A[] два с длиной серий B[] и значением серий C[]
for i:=2 to n do
begin
inc(temp);
if a[i]<>a[i-1] then
begin
inc(M);
B[M]:=temp;
C[M]:=a[i-1];
temp:=0;
end;
end;
inc(temp);
inc(M);
b[M]:=temp;
C[M]:=a[i];
// складываем массив A[] согласно задания.
temp:=1;
for i:=1 to m do
begin
if b[i]>=b[temp] then
begin
temp:=i;
end;
end;
inc(b[temp]);
temp:=0;
for i:=1 to m do
begin
for j:=1 to b[i] do
begin
inc(temp);
a[temp]:=c[i];
end;
end;
Writeln;
Writeln('Ответ');
Write(' A[]: '); for i:=1 to temp do Write(A[i],' ');
end.
type
V = array of integer;
var
i, n, ic, nc, kc, imax, nmax, kmax: integer;
a: V;
begin
write('Введите количество чисел N ');
readln(n);
SetLength(a, n + 1);
writeln('Вводите числа');
for i := 0 to n - 1 do read(a[i]);
writeln;
nmax := -32768;
kmax := 0;
imax := 0;
nc := a[0];
kc := 1;
ic := 1;
for i := 1 to n - 1 do
begin
if a[i] = nc then kc := kc + 1
else begin
if kc < 3 then begin
kc := 1;
nc := a[i];
ic := i
end
else
if kmax <= kc then begin
kmax := kc;
nmax := nc;
imax := ic;
kc:=1;
nc:=a[i];
ic:=i
end
else begin
kc := 1;
nc := a[i];
ic := i
end
end
end;
if kmax <= kc then begin
kmax := kc;
nmax := nc;
imax := ic
end;
writeln('Самая длинная серия содержит ', kmax, ' чисел ', nmax);
for i:=n downto imax+kmax+1 do a[i]:=a[i-1];
a[imax+kmax]:=nmax;
writeln('Модифицированная строка');
for i:=0 to n do write(a[i]:2)
end.
Тестовое решение
Введите количество чисел N 30
Вводите числа
1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 3 3 3 3 1 2 3 3 3
Самая длинная серия содержит 6 чисел 8
Модифицированная строка
1 2 2 3 4 4 4 5 5 5 6 8 6 6 6 4 8 8 8 8 8 8 8 3 3 3 3 1 2 3 3
Не нашли ответ?
Похожие вопросы