Предмет: Информатика,
автор: andr9166696553
Дан целочисленный массив размера N. Преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент. Паскаль
Ответы
Автор ответа:
0
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.
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.
Автор ответа:
0
Я свою программку положил как иллюстрацию того, что массивы для хранения серий не нужны, поскольку серия содержит одни и те же числа, как объяснил автор вопроса.
Автор ответа:
0
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
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
Похожие вопросы
Предмет: Английский язык,
автор: Аноним
Предмет: Физика,
автор: bluebotelite
Предмет: Английский язык,
автор: 01novayaalina01
Предмет: Математика,
автор: Степаха
Предмет: Алгебра,
автор: Алина2015