Другие языки программирования и технологии
Помогите решить задачу по програмированию на С#, либо паскаль.
Дан целочисленный массив размера N. Вставить после каждой его серии элемент с нулевым значением. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1)
Ну, если вы упомянули C#, то динамическими массивами в Паскале вас не удивить и не напугать.
program N67360994;
procedure PrintArray(a:array of shortint);
var i:byte;
begin
for i := Low(a) to High(a) do
write(a[ i ]:5);
writeln;
end;
var
a:array of shortint;
N, i, j, k:byte;
begin
{Формирование массива}
randomize;
N := random(91) + 10;
writeln('Дан массив длиной ',N,':');
setlength(a, N);
i := Low(a);
while i < N do
begin
k := random(5) + 1;
k := k * ord(k <= N - i) + (N - i) * ord(k > N - i);
repeat
a[ i ] := random(201) - 100
until a[ i ] <> 0;
for j := 1 to k - 1 do
a[ i + j ] := a[ i ];
inc(i, k)
end;
PrintArray(a);
{Вставка нулевых элементов}
setlength(a, N shl 1); {расширение массива}
i := Low(a) + 1;
while i < N do
begin
if a[ i ] <> a[ i - 1 ] then
begin
inc(N);
for j := N - 1 downto i + 1 do
a[ j ] := a[ j - 1];
a[ i ] := 0;
inc(i)
end;
inc(i)
end;
inc(N);
setlength(a, N); {размер массива = кол-ву элементов после вставки}
writeln('Массив после преобразования, длиной ',N,':');
PrintArray(a);
readln;
finalize(a)
end.
program N67360994;
procedure PrintArray(a:array of shortint);
var i:byte;
begin
for i := Low(a) to High(a) do
write(a[ i ]:5);
writeln;
end;
var
a:array of shortint;
N, i, j, k:byte;
begin
{Формирование массива}
randomize;
N := random(91) + 10;
writeln('Дан массив длиной ',N,':');
setlength(a, N);
i := Low(a);
while i < N do
begin
k := random(5) + 1;
k := k * ord(k <= N - i) + (N - i) * ord(k > N - i);
repeat
a[ i ] := random(201) - 100
until a[ i ] <> 0;
for j := 1 to k - 1 do
a[ i + j ] := a[ i ];
inc(i, k)
end;
PrintArray(a);
{Вставка нулевых элементов}
setlength(a, N shl 1); {расширение массива}
i := Low(a) + 1;
while i < N do
begin
if a[ i ] <> a[ i - 1 ] then
begin
inc(N);
for j := N - 1 downto i + 1 do
a[ j ] := a[ j - 1];
a[ i ] := 0;
inc(i)
end;
inc(i)
end;
inc(N);
setlength(a, N); {размер массива = кол-ву элементов после вставки}
writeln('Массив после преобразования, длиной ',N,':');
PrintArray(a);
readln;
finalize(a)
end.
Похожие вопросы
- Помогите решить задачу по информатике. Массивы. Язык программирования Паскаль.
- Помогите решить задачу на Турбо паскале
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачу в паскале
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Помогите решить задачу на паскале
- Помогите решить) Задачи по программированию в Паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".