Другие языки программирования и технологии
В упорядоченный по возрастанию числовой массив из 20 элементов вставить числа –4 и 7, не нарушая упорядоченности. pascal
помогите, пожалуйста
program N67363750;
type
TVector = array[ 1 .. 22 ] of integer;
procedure MyInsert(var a:TVector; var n:byte; x:integer);
var i, j:byte;
begin
i := 1;
while (i <= n) and (x > a[ i ]) do
inc(i); {или i := i + 1;}
inc(n); {или n := n + 1;}
for j := n downto i + 1 do
a[ j ] := a[ j - 1 ];
a[ i ] := x
end;
procedure PrintArray(const a:TVector; const n:byte);
var i:byte;
begin
for i := 1 to n do
write(a[ i ]:4);
writeln
end;
var
a:TVector;
n, i:byte;
begin
randomize;
n := 20;
a[ 1 ] := random(8) - 10;
for i := 2 to n do
a[ i ] := a[ i - 1 ] + random(4) + 1;
writeln('Исходный массив: ');
PrintArray(a, n);
MyInsert(a, n, -4);
writeln('Вставлено число -4:');
PrintArray(a, n);
MyInsert(a, n, 7);
writeln('Вставлено число 7:');
PrintArray(a, n);
readln
end.
P.S. Можно, конечно, передавать процедуре MyInsert указатель на массив, тогда внутри неё стало бы возможно перераспределять под массив динамическую память.
Или передавать, как открытый массив - было бы ещё проще, но вы даже словом не обмолвились, какую реализацию Паскаля используете: Turbo, Free, TMT, Delphi, GNU, ABC, а может даже P или виртовский стандартный xD)). Где-то это нельзя сделать, где-то можно, но по-разному.
type
TVector = array[ 1 .. 22 ] of integer;
procedure MyInsert(var a:TVector; var n:byte; x:integer);
var i, j:byte;
begin
i := 1;
while (i <= n) and (x > a[ i ]) do
inc(i); {или i := i + 1;}
inc(n); {или n := n + 1;}
for j := n downto i + 1 do
a[ j ] := a[ j - 1 ];
a[ i ] := x
end;
procedure PrintArray(const a:TVector; const n:byte);
var i:byte;
begin
for i := 1 to n do
write(a[ i ]:4);
writeln
end;
var
a:TVector;
n, i:byte;
begin
randomize;
n := 20;
a[ 1 ] := random(8) - 10;
for i := 2 to n do
a[ i ] := a[ i - 1 ] + random(4) + 1;
writeln('Исходный массив: ');
PrintArray(a, n);
MyInsert(a, n, -4);
writeln('Вставлено число -4:');
PrintArray(a, n);
MyInsert(a, n, 7);
writeln('Вставлено число 7:');
PrintArray(a, n);
readln
end.
P.S. Можно, конечно, передавать процедуре MyInsert указатель на массив, тогда внутри неё стало бы возможно перераспределять под массив динамическую память.
Или передавать, как открытый массив - было бы ещё проще, но вы даже словом не обмолвились, какую реализацию Паскаля используете: Turbo, Free, TMT, Delphi, GNU, ABC, а может даже P или виртовский стандартный xD)). Где-то это нельзя сделать, где-то можно, но по-разному.
Похожие вопросы
- линейный массив из 20 элементов заполнить случайными числами в диапазоне от 0 до 1000 и отсортировать по возрастанию
- Дан массив из 20 элементов. Найти номер минимального элемента. (Pascal ABC)
- Задан массив размером 30 элементов. Подсчитать число и сумму положительных элементов в нем. В Паскале. через рандом чисел !
- 16. Дан массив из 20 элементов. Найти пять «соседних» элементов, сумма значений которых максимальна. ??
- Дан массив из 20 элементов. Найти три «соседних» элементов, сумма значений которых максимальна. как это на СИ сделать?
- 1. Написать программу, которая заполняет массив целых чисел размеров 20 элементов значениями роста учащихся (случайные ч
- Дан массив N<100 целых чисел. Упорядочить элементы по убыванию и вывести те элементы, которые остались на своих места
- вставить число Х песле последнего положительного элемента в массиве В из 10 чисел ?на паскале... на паскале...
- С++.Дан одномерный числовой массив. Написать функции.
- Отобразить элементы двумерного числового массива относительно горизонтальной оси.