Поиск числа в массиве случайных чисел
|
|
Fess | Дата: Понедельник, 11.03.2013, 17:15 | Сообщение # 1 |
Добрый админ
Сообщений: 2339
Статус:
| Программа создает массив и забивает его 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 |
Добрый админ
Сообщений: 2339
Статус:
| Цитата (DrumYum) Фесс, ты программу то тестил? Она генерирует одинаковые числа каждый раз. Подумай хорошенько над кодом. Конечно, тестил. У меня каждый раз выводится абсолютно разная последовательность чисел. Проверялось на Linux, Windows.
|
|
| |
DrumYum | Дата: Вторник, 12.03.2013, 14:42 | Сообщение # 4 |
Группа: Удаленные
| Уважаемый Fess, у меня и у друга одни и те же числа.
|
|
| |
Артур4ик™ | Дата: Вторник, 02.04.2013, 22:37 | Сообщение # 5 |
Сообщений: 243
Статус:
| Уважаемый DrumYum, насколько я помню, в Делфи надо было разрешить генерацию рандомных чисел. Не помню точно названия функции, кажется И кстати, функция генерации случайного числа не такая уж и случайная. Она основана на каких-то настройках и уникальных характеристиках компьютера. В зависимости от них генерируется число. Так что в теории, можно вычислить, какое число сгенерируется.
|
|
| |
Fess | Дата: Среда, 03.04.2013, 00:01 | Сообщение # 6 |
Добрый админ
Сообщений: 2339
Статус:
| Уважаемый Артур4ик™, число генерируется на основе времени, по которому идет компьютер. При следующем запуске генерации время уже будет другое (больше чем при предыдущем запуске) и последовательность тоже сгенерируется другая. Если как-нибудь заморозить время на компьютере, может быть, рандом при каждом запуске будет выдавать одну и ту же последовательность чисел)
|
|
| |
Артур4ик™ | Дата: Среда, 03.04.2013, 03:17 | Сообщение # 7 |
Сообщений: 243
Статус:
| Уважаемый Fess, а что, вполне может быть. Надо будет провести эксперимент.
|
|
| |
DarthVader | Дата: Воскресенье, 02.06.2013, 19:25 | Сообщение # 8 |
Группа: Удаленные
| Вообще-то, оператор randomize и запускает тот самый таймер, по которому и высчитывается случайное значение. По моему, оно не зависит от времени, по которому идёт компьютер. А если не написать сначала randomize; , то, действительно, будут генерироваться одни и те же числа.
|
|
| |
Fess | Дата: Воскресенье, 02.06.2013, 19:32 | Сообщение # 9 |
Добрый админ
Сообщений: 2339
Статус:
| Цитата (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 |
Добрый админ
Сообщений: 2339
Статус:
| Цитата (DarthVader) Ага, это написано на интерпретаторе Алго! Вот в чём загвоздка, видимо. Да, я вставил и не заметил, что он текст на иероглифы подменил=)
|
|
| |
DarthVader | Дата: Воскресенье, 02.06.2013, 20:20 | Сообщение # 12 |
Группа: Удаленные
| Только что написал такую же программу на старом добром Turbo Pascal 7.0. Без randomize выдаёт одинаковые числа. Цитата (Fess) В чём же подвох?) Видимо, подвох всё-таки в интерпретаторе.
|
|
| |