Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста! Задача на линейные массивы

66K
07 января 2011 года
Al'bina
2 / / 07.01.2011
Написать программу, которая вставляет число k в заданную возрастающую последовательность таким образом, что в результате полученная последовательность также остается полностью возрастающей.
416
08 января 2011 года
MaitreDesir
380 / / 02.01.2008
1) Проходите по массиву (например А), в котором хранится последовательность и находите index первого элемента, такой, что A[index]>=k
2) Расширяете А на один элемент
3) Начиная с конца и до index (включительно) сдвигаете все элементы массива ближе к концу (тот, который был последний должен упасть во вновь добавленный элемент)
4) В A[index] вставляете k

Разумеется, так как в паскале нет нормальных дин.массивов (насколько я помню) попробуйте резервировать под массив заранее побольше места, чтобы не приходилось 2 шаг делать.
Как то так.
7
08 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Не оговорено же,что должен быть массив.Вполне возможно сделать односвязным списком,и даже удобнее–не придётся всё после вставленного элемента перемещать
416
09 января 2011 года
MaitreDesir
380 / / 02.01.2008
Конечно, списком и лучше и удобнее (да и грамотнее). Но я описал массив, потому что в заголовке темы написано "Задача на линейные массивы". Вот я и подумал что надо массивом. ТС, поясните, мы вас не до конца понимаем!
66K
09 января 2011 года
Al'bina
2 / / 07.01.2011
Да, по условию должен быть именно массив
64K
16 января 2011 года
сван
8 / / 08.01.2011
Код:
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.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог