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

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

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

Восстановить пароль

Купить рекламу на форуме - 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