– Учитель, двигать камни это одно, а тут… совсем другое дело.
– Нет, не другое. Другое в голове лишь. Разучиться должен ты, чему учился.
– Хорошо, я попробую.
– Нет, не пробуй. Делай! Или нет. Никаких попыток.
Разговор Йоды и Люка Скайокера во время его тренировок на планете Дагоба





Сколько глобус ни крути, там Fess-Style не найти...
Сайт Fess'a » Поиск числа в массиве случайных чисел - Форум
[ Новые сообщения · Участники · Правила форума · Поиск ]
  • Страница 1 из 1
  • 1
Форум » Программирование » Паскаль » Поиск числа в массиве случайных чисел
Поиск числа в массиве случайных чисел
FessДата: Понедельник, 11.03.2013, 17:15 | Сообщение # 1

Добрый админ
Сообщений: 2338
Статус:
Программа создает массив и забивает его 20 случайными значениями от 0 до 50, выводя каждое на экран.
Далее просит ввести число и проверяет, есть ли такое в массиве. Хороший учебный пример работы с массивами.

Вот, собственно, и код :

Код
program massiv;  
var     
R: array [1..20] of integer;  
i,x,Nx: integer;     

begin  
writeln('Ìàññèâ ñëó÷àéíûõ ÷èñåë');  
        
    for I:= 1 to 20 do  
      begin     
       R[i]:=random(50);  
       writeln(R[i]);  
      end;  

writeln('-------------');  
readln(x);
writeln('-------------');  

Nx:=0;  
          
FOR I:=1 to 20 do  
    begin  
      if R[i]=x then Nx:=Nx + 1;  
    end;  

if Nx=0 then     
      writeln('Òàêèõ ÷èñåë íåò')  
     else  
      writeln('Íàéäåíî ',Nx,' ñîâïàäåíèé');  
           
end.

Программа: Алго, интерпретатор Pascal.
 
DrumYumДата: Вторник, 12.03.2013, 01:28 | Сообщение # 2

Авы нет

Группа: Удаленные





Фесс, ты программу то тестил? Она генерирует одинаковые числа каждый раз. Подумай хорошенько над кодом. ;)
 
FessДата: Вторник, 12.03.2013, 14:32 | Сообщение # 3

Добрый админ
Сообщений: 2338
Статус:
Цитата (DrumYum)
Фесс, ты программу то тестил? Она генерирует одинаковые числа каждый раз. Подумай хорошенько над кодом.

Конечно, тестил. У меня каждый раз выводится абсолютно разная последовательность чисел. Проверялось на Linux, Windows.
 
DrumYumДата: Вторник, 12.03.2013, 14:42 | Сообщение # 4

Авы нет

Группа: Удаленные





Уважаемый Fess, у меня и у друга одни и те же числа.
 
Артур4ик™Дата: Вторник, 02.04.2013, 22:37 | Сообщение # 5

Сообщений: 243
Статус:
Уважаемый DrumYum, насколько я помню, в Делфи надо было разрешить генерацию рандомных чисел. Не помню точно названия функции, кажется
Код
randomize;
И кстати, функция генерации случайного числа не такая уж и случайная. Она основана на каких-то настройках и уникальных характеристиках компьютера. В зависимости от них генерируется число. Так что в теории, можно вычислить, какое число сгенерируется.
 
FessДата: Среда, 03.04.2013, 00:01 | Сообщение # 6

Добрый админ
Сообщений: 2338
Статус:
Уважаемый Артур4ик™, число генерируется на основе времени, по которому идет компьютер. При следующем запуске генерации время уже будет другое (больше чем при предыдущем запуске) и последовательность тоже сгенерируется другая. Если как-нибудь заморозить время на компьютере, может быть, рандом при каждом запуске будет выдавать одну и ту же последовательность чисел)
 
Артур4ик™Дата: Среда, 03.04.2013, 03:17 | Сообщение # 7

Сообщений: 243
Статус:
Уважаемый Fess, а что, вполне может быть. Надо будет провести эксперимент. comp
 
DarthVaderДата: Воскресенье, 02.06.2013, 19:25 | Сообщение # 8

Авы нет

Группа: Удаленные





Вообще-то, оператор randomize и запускает тот самый таймер, по которому и высчитывается случайное значение. По моему, оно не зависит от времени, по которому идёт компьютер. А если не написать сначала randomize; , то, действительно, будут генерироваться одни и те же числа.
 
FessДата: Воскресенье, 02.06.2013, 19:32 | Сообщение # 9

Добрый админ
Сообщений: 2338
Статус:
Цитата (DarthVader)
Вообще-то, оператор randomize и запускает тот самый таймер, по которому и высчитывается случайное значение. По моему, оно не зависит от времени, по которому идёт компьютер. А если не написать сначала randomize; , то, действительно, будут генерироваться одни и те же числа.

Уважаемый DarthVader, я проверял на нескольких компьютерах под ОС Lunix и Windows, без команды randomize числа всегда генерировались всё равно разные. Хотя я неоднократно слышал, что они должны быть одинаковыми. В чём же подвох?)
 
DarthVaderДата: Воскресенье, 02.06.2013, 19:55 | Сообщение # 10

Авы нет

Группа: Удаленные





А на этих компьютерах стоит Delphi или именно Pascal (Turbo Pascal). Может быть, на Delphi этот оператор запускается автоматически, или подключен какой-нибудь модуль, запускающий таймер. (Хотя, модуль может быть подключен и в Pascal'е).

P.S. Кстати, в коде лучше заменить иероглифы, которые когда-то были кириллицей на собственно кириллицу.

Добавлено (02.06.2013, 19:55)
---------------------------------------------
Ага, это написано на интерпретаторе Алго! Вот в чём загвоздка, видимо.

 
FessДата: Воскресенье, 02.06.2013, 20:07 | Сообщение # 11

Добрый админ
Сообщений: 2338
Статус:
Цитата (DarthVader)
Ага, это написано на интерпретаторе Алго! Вот в чём загвоздка, видимо.

Да, я вставил и не заметил, что он текст на иероглифы подменил=)
 
DarthVaderДата: Воскресенье, 02.06.2013, 20:20 | Сообщение # 12

Авы нет

Группа: Удаленные





Только что написал такую же программу на старом добром Turbo Pascal 7.0. Без randomize выдаёт одинаковые числа.
Цитата (Fess)
В чём же подвох?)
Видимо, подвох всё-таки в интерпретаторе.
 
Форум » Программирование » Паскаль » Поиск числа в массиве случайных чисел
  • Страница 1 из 1
  • 1
Поиск: