uses crt;
var
a,b:array [1..100] of integer;
i,n,k,j,j1:integer;
flag:integer;
begin
clrscr;
flag:=0;
write('введите размер массива ');
readln(n);
writeln('введите последовательность');
for i:=1 to n do
readln(a);
write('введите число к ');
readln(k);
for i:=1 to n do
begin
if ((a>k) and (a[i-1]<k) and (flag<>1)) then
begin
for j:=1 to i-1 do
b[j]:=a[j];
b:=k;
for j1:=i to n+1 do
b[j1+1]:=a[j1];
flag:=1;
end;
end;
for i:=1 to n+1 do
write(b,' ,');
end.
Помогите пожалуйста! Задача на линейные массивы
Написать программу, которая вставляет число k в заданную возрастающую последовательность таким образом, что в результате полученная последовательность также остается полностью возрастающей.
2) Расширяете А на один элемент
3) Начиная с конца и до index (включительно) сдвигаете все элементы массива ближе к концу (тот, который был последний должен упасть во вновь добавленный элемент)
4) В A[index] вставляете k
Разумеется, так как в паскале нет нормальных дин.массивов (насколько я помню) попробуйте резервировать под массив заранее побольше места, чтобы не приходилось 2 шаг делать.
Как то так.
Не оговорено же,что должен быть массив.Вполне возможно сделать односвязным списком,и даже удобнее–не придётся всё после вставленного элемента перемещать
Конечно, списком и лучше и удобнее (да и грамотнее). Но я описал массив, потому что в заголовке темы написано "Задача на линейные массивы". Вот я и подумал что надо массивом. ТС, поясните, мы вас не до конца понимаем!
Да, по условию должен быть именно массив