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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2010, 10:22   #1
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию сравнение рандомного числа с массивом

Народ подскажите как сравнить рандомное число и элементы массива. я пишу тест.
Код:
var
...
a:array[0..1000] of integer;
pos:integer;
... // это всё глобальные переменные;

Код:
var
...
a:array[0..1000] of integer;
pos:integer;
... // это всё глобальные переменные;

procedure Tform1.uslovie(pos:integer);
var
x:integer;
begin
x:=0;
while x<1000 do
if a[x]=pos then
begin
 pos:=random(trunc(sl.Count/8));//значение меняется
 x:=0;
 showmessage ('');// ввёл для себя
 end
 else x:=x+1;
end;
pos заранее задается.
в массив элементы записываются ещё до этого следующим образом

pos:=random(trunc(sl.Count/8));
nomervoprosa:=nomervoprosa+1;
tform1.uslovie(pos);
a[nomervoprosa]:=pos;

при таком использовании всё равно вопросы повторяются(((( Подскажите как в этом случае сделать так чтобы не повторялись. Не предлагайте менять весь код уже времени нет.
Artempokrowski вне форума Ответить с цитированием
Старый 08.07.2010, 10:30   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
сравнить рандомное число и элементы массива
Код:
repeat
flag := false;
p = Random(99);
for i := 0 to N do begin
  if mas[i] = p then flag := true;
end;
until ( flag = false );
как то так примерно
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 08.07.2010, 10:43   #3
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Что-то непонятное у тебя творится с заполнением массива. Изначально, наверно nomervoprosa=0?

Цитата:
pos:=random(trunc(sl.Count/8));
ну вот задали какое-то значение pos

Цитата:
nomervoprosa:=nomervoprosa+1;
ну, пускай теперь nomervoprosa=1..
Цитата:
tform1.uslovie(pos);
вызываем функцию, которая анализирует 1000 элементов массива, а массив-то еще не заполнен! Нафига?
Цитата:
a[nomervoprosa]:=pos;
и только тут назначаем значение а[1]...

В этом есть какой-то особый смысл или так "само получилось"?
Snejnaya вне форума Ответить с цитированием
Старый 08.07.2010, 11:10   #4
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
Код:
repeat
flag := false;
p = Random(99);
for i := 0 to N do begin
  if mas[i] = p then flag := true;
end;
until ( flag = false );
как то так примерно
мне надо чтобы число рандомно изменялось в случае если оно совпадает с элементом массива.
Artempokrowski вне форума Ответить с цитированием
Старый 08.07.2010, 11:16   #5
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Snejnaya Посмотреть сообщение
Что-то непонятное у тебя творится с заполнением массива. Изначально, наверно nomervoprosa=0?


ну вот задали какое-то значение pos


ну, пускай теперь nomervoprosa=1..

вызываем функцию, которая анализирует 1000 элементов массива, а массив-то еще не заполнен! Нафига?

и только тут назначаем значение а[1]...

В этом есть какой-то особый смысл или так "само получилось"?
Смысл тут в том что массив заполняется в ходе работы теста. Туда записываются вызванные нами номера вопросов. мне нужно чтобы вопросы в тесте выбирались рандомно и не повторялись.
Artempokrowski вне форума Ответить с цитированием
Старый 08.07.2010, 11:33   #6
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

А! Так тебе надо, чтобы массив заполнился случайными НЕповторяющимися числами. Так?

Недавно кто-то из ребят предложил красивое решение - сначала заполнить массив, а потом рандомно "перемешать" его.

http://programmersforum.ru/showthread.php?t=106614
последний пост в теме - почитай, может тебе именно это и надо?
Snejnaya вне форума Ответить с цитированием
Старый 08.07.2010, 11:41   #7
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Snejnaya Посмотреть сообщение
А! Так тебе надо, чтобы массив заполнился случайными НЕповторяющимися числами. Так?

Недавно кто-то из ребят предложил красивое решение - сначала заполнить массив, а потом рандомно "перемешать" его.

http://programmersforum.ru/showthread.php?t=106614
последний пост в теме - почитай, может тебе именно это и надо?
Да мне именно это и надо. Но заполняться он должен в процесее выполнения теста при ответе на вопрос.
Artempokrowski вне форума Ответить с цитированием
Старый 08.07.2010, 11:54   #8
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

ну во-первых, предлагаю тебе в процедуру добавить параметр "номер вопроса", чтобы анализировать не все 0-1000 элементов массива, а только те элементы массива, которые уже заполнены.
Во-вторых, в процедуре нужно писать pcocedure tform1.uslovie(var pos), если ты собрался изменять значение pos в процедуре.

Это навскидку...
Snejnaya вне форума Ответить с цитированием
Старый 08.07.2010, 14:08   #9
Artempokrowski
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Snejnaya Посмотреть сообщение
ну во-первых, предлагаю тебе в процедуру добавить параметр "номер вопроса", чтобы анализировать не все 0-1000 элементов массива, а только те элементы массива, которые уже заполнены.
Во-вторых, в процедуре нужно писать pcocedure tform1.uslovie(var pos), если ты собрался изменять значение pos в процедуре.

Это навскидку...
Теперь понятно почему он не выбирал новое значение. pos изменялся внутри процедуры. Спасибо учёл.
Artempokrowski вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить:у=а*(в*в*в)*с,где а,в,с-двоичные числа.Для хранения числа использ.массив! Таняпервокурсница Помощь студентам 4 04.06.2010 12:08
Функция рандомного выставление чисел. PashaNastya Microsoft Office Excel 5 28.03.2010 20:03
Как числа в двоичном виде вывести в столбик по 4 числа? Equalizer Общие вопросы C/C++ 11 27.09.2009 14:15
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
Генерирование рандомного лабиринта Djaconda Паскаль, Turbo Pascal, PascalABC.NET 12 12.11.2007 19:00