В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
darya4ern1
darya4ern1
26.04.2023 12:23 •  Информатика

Дан целочисленный массив размера n. преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент. паскаль

Показать ответ
Ответ:
mukhibamuz14
mukhibamuz14
08.07.2020 01:33
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
0,0(0 оценок)
Ответ:
Стаилз2002
Стаилз2002
08.07.2020 01:33
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота