Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2014, 11:56   #21
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
По другому я не знаю, как заполнить массив упорядоченно,кроме последнего элемента.
мой пост #9 Вы пропустили?
Там я дал пример кода, которым можно заполнить массив случайными числами, упорядоченными по возрастанию, кроме последнего элемента (в последний элемент будет записано просто случайное число)!

Цитата:
Мне видится что нужно взять последний элемент и сделать вставку со смещением. Ну или не делать в зависимости от значения последнего элемента массива.
так об этом уже неоднократно говорилось в данной теме.
вот тут даже пример кода (правда на С) - пост #15

перебором ищем нужный элемент, все после него сдвигаем на 1 ближе к концу, а в найденное место записываем последний элемент.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2014, 12:29   #22
niwssg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так об этом уже неоднократно говорилось в данной теме.
вот тут даже пример кода (правда на С) - пост #15

перебором ищем нужный элемент, все после него сдвигаем на 1 ближе к концу, а в найденное место записываем последний элемент.
Да это мой код. Мне кажется что человек все еще не понимает что от него требуется , я попробовал перифразировать.
niwssg вне форума Ответить с цитированием
Старый 25.03.2014, 12:43   #23
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
  for i:=Low(a) to High(a)-1 do
    if a[i]>a[High(a)] then begin
      b:=a[High(a)];
      Move(a[i],a[i+1],SizeOf(Integer)*(High(a)-i));
      a[i]:=b;
      Break;
    end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.03.2014, 18:16   #24
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
var
N,t,j,i:integer;
a:TArray;
begin
randomize;
  N:=StrToInt(Edit1.Text);
  if N < 1 then Exit;
  a[1] := random(10);
  for i:=2 to n-1 do
      a[i] := a[i+1] + 1 + random(10);
  a[n] := Random(n+10);
RichEdit1.Lines.Clear;
RichEdit1.Lines.Append(ArrayToString(a,n));
end;end.
Заполняет большими числами, притом не по возрастанию.
nadyaH вне форума Ответить с цитированием
Старый 25.03.2014, 18:27   #25
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Заполняет большими числами, притом не по возрастанию
что написали, то и делает
Код:
a[i] := a[i+1] + ...
догадайтесь с трех раз что это сделает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.03.2014, 18:32   #26
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
Вопрос

и всё таки , как будет правильней ?
Писали писали мне части программы , до меня так и не дошло что? где? и как? нужно исправить.
nadyaH вне форума Ответить с цитированием
Старый 26.03.2014, 08:47   #27
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
for i:=2 to n-1 do
      a[i] := a[i+1] + 1 + random(10);
это я косякнул, разумеется нужно, чтобы следующий был больше ПРЕДЫДУЩЕГО!!!

попробуйте заменить цикл на такой:
Код:
for i:=2 to n-1 do
      a[i] := a[i-1] + 1 + random(10);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2014, 08:57   #28
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Мда.. Почти 30 постов.. Красота..
Код:
var
    n, i, p, l, r, s, t : Integer;
    a : array [1..100] of Integer;

begin
    Randomize;
    ReadLn(n);
    a[1] := Random(10);
    for i := 2 to n-1 do 
        a[i] := a[i-1] + 1 + Random(10); // 10x to Serge

    t := a[Random(n-1)+1];
    WriteLn(t);

    a[n] := t-1;

    for i := 1 to n do
        Write(a[i], ' ');
    WriteLn;

    l := 1; r := n-1;
    while l < r do begin
        s := (l+r) div 2;
        if a[s] < a[n] then
            l := s+1
        else
            r := s
    end;

    p := a[n];
    Move(a[l], a[l+1], (n-l)*SizeOf(Integer));
    a[l] := p;

    for i := 1 to n do
        Write(a[i], ' ')
end.
Poma][a вне форума Ответить с цитированием
Старый 26.03.2014, 10:23   #29
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
type
TArray = array[1..100] of Integer;
 function ArrayToString(a: TArray; N: integer): string;
var
  i: integer;
begin
  result := '';
  for i:=1 to N-1 do
    result := result  + IntToStr(a[i])+',';
  result := result  + IntToStr(a[N]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
n, i, p, l, r, s, t : Integer;
a: Tarray;
begin
N:=StrToInt(Edit1.Text);
Randomize;
a[1] := Random(10);
 for i := 2 to n-1 do
  a[i] := a[i-1] + 1 + Random(10);
  t := Random(n-1)+1;
a[n]:= t;
RichEdit1.Lines.Clear;
RichEdit1.Lines.Append(ArrayToString(a,n));
RichEdit2.Lines.Clear;
a[n] := t-1;
for i := 1 to n do
   l := 1;
   r := n-1;
    while l < r do begin
        s := (l+r) div 2;
        if a[s] < a[n] then
            l := s+1
        else
            r := s
    end;

p := a[n];
Move(a[l], a[l+1], (n-l)*SizeOf(Integer));
a[l] := p;
RichEdit2.Lines.Append(ArrayToString(a,i));
end;end.
Заполнение массива правильное! НО ответ не верный! Что то не так...
nadyaH вне форума Ответить с цитированием
Старый 26.03.2014, 10:54   #30
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ужасть.. Вы записали алгоритм Аватара и мой в одну программку.. мдя..
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив X(N,M).Найти номера столбцов массива,все элементы которых четны. Из полученных значений сформировать одномерный массив. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 3 16.03.2014 13:31
подкорректировать: Дан массив, все элементы которого упорядочены. Найти количество различных элементов в данном массиве ( Delphi ) schibeki Помощь студентам 9 20.02.2014 09:39
Дан массив из 18 вещественных чисел, все элементы которого различны. Не могу сделать вывод результатов. ( на С ) Максим28 Помощь студентам 4 22.11.2013 02:38
Соединить два массива а и b в массив с так, чтобы его элементы были упорядочены по возрастанию. Поправить код. dmitriy20104 Паскаль, Turbo Pascal, PascalABC.NET 10 08.08.2012 11:21