Как избавиться от рандома

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Otclik
Сообщения: 5
Зарегистрирован: 21 дек 2015, 16:47

26 дек 2015, 17:57

Помогите избавиться от рандома при создании списка

Код: Выделить всё

begin
  // Создаём список из 20 элементов
  Randomize;
  var List := New tList(Random(-10,+10));
  var Last := List;
  for var N := 2 to 20 do
    begin
      Last.Next := New tList(Random(-1,+10));
      Last.Next.Pred := Last;
      Last := Last.Next;
    end;
  List.Pred := Last;
  Last.Next := List;
  WriteLn('Создан список');
  OutList(List);
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

26 дек 2015, 22:11

просто Randomize уберите
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

27 дек 2015, 01:34

Без Randomize может тоже результат отдавать, я такое наблюдал очень давно..
[syntax=Delphi] [/syntax]
Otclik
Сообщения: 5
Зарегистрирован: 21 дек 2015, 16:47

27 дек 2015, 06:24

Как убрать этот рандом??

Вот весь код

Код: Выделить всё

type
  tList = class
    Data : Integer;
    Pred, Next : tList;
    
    constructor (N : Integer);
    begin
      Data := N;
      Pred := nil; Next := nil;
    end;
  end;
 
procedure OutList(List : tList);
begin
  var Cur := List;
  repeat
    Print(Cur.Data);
    Cur := Cur.Next;
  until Cur = List;
  WriteLn;
end;
  
begin
  // Создаём список из 20 элементов
  Randomize;
  var List := New tList(Random(-10,+10));
  var Last := List;
  for var N := 2 to 20 do
    begin
      Last.Next := New tList(Random(-1,+10));
      Last.Next.Pred := Last;
      Last := Last.Next;
    end;
  List.Pred := Last;
  Last.Next := List;
  WriteLn('Создан список');
  OutList(List);
 
  // Удалить первый отрицательный (список не может быть пустым)
  var Cur := List;
  while (Cur.Data >= 0) and (Cur.Next <> List) do
    Cur := Cur.Next;
    
  if Cur.Data >= 0 then
    WriteLn('В списке нет отрицательных!')
  else
    begin
      Cur.Pred.Next := Cur.Next;
      Cur.Next.Pred := Cur.Pred;
      if Cur = List then
        List := List.Next;
      WriteLn('Удалён первый отрицательный');
      OutList(List);
    end;
    
  // Добавить новый в конец
  var Add := New tList(ReadLnInteger('Введите число:'));
  Add.Pred := List.Pred;
  List.Pred.Next := Add;
  List.Pred := Add;
  Add.Next := List;
  WriteLn('Добавлен новый в конец');
  OutList(List);
  
  // Обратный порядок
  WriteLn('Список в обратном порядке:');
  var Tmp := List.Pred;
  repeat
    Print(Tmp.Data);
    Tmp := Tmp.Pred;
  until Tmp = List.Pred;
  WriteLn;
end.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

27 дек 2015, 10:51

Ну значит функцию какую нибудь заместо Random
It's a long way to the top if you wanna rock'n'roll
Ответить