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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 20:27   #1
NewMen
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 40
По умолчанию

программа заполняет массив длины 100 случайными целыми числами от 0 до 100, так, чтобы каждое число использовалось не более одного раза.

P.S требуется ровно 100 вызовов функции random!

Код:
const val=100;
type vector = array[1..100] of Integer;
var  
        a:vector;
  j,i,n,k:Integer;
        f:Boolean;
 
begin
  Randomize;
  n:=1;
  for i:=1 to val do
    begin
      repeat
        f:=False;
        k:=Random(val+1);
        for j:=1 to n do
          if k=a[j] then
            begin
              f:=True;
              Break;
            end;
      until not f;
      a[i]:=k;
      n:=n+1;
      write(a[i]:3);
    end;
 readln;
end.
у меня получается что random вызывается около 400 раз(

Последний раз редактировалось Stilet; 16.04.2010 в 08:33.
NewMen вне форума Ответить с цитированием
Старый 15.04.2010, 21:15   #2
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

Посмотри когда ты сравниваешь
Код:
if k=a[j] then
у тя же в массиве ничего нет с чем ты сравниваешь к?
xakkkkker вне форума Ответить с цитированием
Старый 15.04.2010, 21:38   #3
NewMen
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 40
По умолчанию

а разве к не является числом....? Я же его заполняю
NewMen вне форума Ответить с цитированием
Старый 15.04.2010, 23:22   #4
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

к является числом. Но в начале же у тя массив пустой.... И ты обращаешься пустому элементу
xakkkkker вне форума Ответить с цитированием
Старый 16.04.2010, 00:17   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

подобные задачи (кстати, на форуме поиском легко найти примеры неповтояющегося случайного заполнения) можно решать и по другому алгоритму - перемешивая заполненный массив случайным образом.

особенно учитывая вот это идиотское ограничение задания:
Цитата:
P.S требуется ровно 100 вызовов функции random!
Код:
{алгоритм такой
   заполняем массив числами от 0 до 99}
for i:=1 to 100 do a[i] := i-1;
{потом 100 раз вызываем random и меняем местами i и k элементы:}
 for i:=1 to 100 do begin 
    k := random(100)+1;
    x := a[i]; a[i]:=a[k]; a[k]:=x;
 end; 
всё.
p.s. Внимание! Есть нюансик, который не отражён в моём коде!
а скажите, Вы уверены, что числа именно от 0 до 100 включительно?! это получается 101 число?
значит, в этом случае, в массиве от 1 до 100 одного числа всегда будет не хватать!! в моём пример это не так...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2010, 06:56   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от xakkkkker Посмотреть сообщение
Посмотри когда ты сравниваешь
Код:
if k=a[j] then
у тя же в массиве ничего нет с чем ты сравниваешь к?
И еще:
Цитата:
к является числом. Но в начале же у тя массив пустой.... И ты обращаешься пустому элементу
При запуске программы происходит инициализация всех переменных. В данном случае все элементы массива будут равны 0, так что массив не будет пустым и элемент тоже не будет "пустым"...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 16.04.2010, 16:11   #7
NewMen
Пользователь
 
Регистрация: 17.01.2010
Сообщений: 40
По умолчанию

Спасибо)
NewMen вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random в С++ Swool Общие вопросы C/C++ 21 18.02.2012 21:55
random Flippp Общие вопросы C/C++ 11 10.07.2009 21:10
Random W_P Паскаль, Turbo Pascal, PascalABC.NET 2 08.10.2008 00:05
Random Febreze Общие вопросы Delphi 2 28.04.2008 14:17