Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ random процедур

Автор: SkyBoy 1.07.2007 19:34

как сделать random процедур??

Автор: klem4 1.07.2007 21:57

Ты о чем ? О паскалевской функции Random ? Посмотри в хелпе или поищи по форуму, конкретно по этому же разделу ...

Автор: Чужак 2.07.2007 1:40

Цитата(SkyBoy @ 1.07.2007 15:34) *

как сделать random процедур??

Что есть "random процедур"?
Если можно в Паскале написать программу, которая допустим, решает три
варианта задачи, по одной процедуре для каждого варианта,
а в основном теле программы задается вопрос "выберите номер варианта",
вводишь номер, и в зависимости от значения введенной переменной
идет выбор одной процедуры, (соответственно решается один вариант),
то можно сделать и так: номер не вводится пользователем с клавиатуры,
а задается рандомом.
Если речь о чем-то другом - уточни вопрос...


Автор: SkyBoy 2.07.2007 13:43

...
procedure one;
..
..
end;
procedure second;
..
..
end;
procedure third;
..
..
end;

{end}

writeln (random (one,second,third));
----------
не правильно, но мысль поняли? как её воплотить?

Автор: klem4 2.07.2007 15:28

Хм, в жизни ничего подобного не делал, но вышло занятно.

uses crt;
type
TProcType = Procedure();

procedure A(); begin writeln('A') end;
procedure B(); begin writeln('B') end;

var
procs: Array [0..1] of Pointer = (@A, @B);
i: Integer;
begin
Randomize;
for i := 1 to 10 do TProcType(procs[Random(2)])();
end.


Автор: volvo 2.07.2007 16:16

Можно не заморачиваться с указателями:

uses crt;
type
TProcType = Procedure;

procedure A; far;
begin writeln('A') end;
procedure B; far;
begin writeln('B') end;

const
procs: Array [0..1] of TProcType = (A, B);
var
i: Integer;
begin
Randomize;
for i := 1 to 10 do
procs[Random(2)];
end.


Автор: klem4 2.07.2007 16:24

Я пробовал так... У тебя FPC это нормально компилирует ?

Автор: volvo 2.07.2007 16:53

Я не компилирую ЗДЕСЬ в FPC - это не раздел про 32-битные компиляторы... А как ты думаешь, твою программу TP вообще откомпилирует?

Добавлено через 2 мин.
Кстати, да... Во всех режимах, кроме ObjFPC все прекрасно работает...

Автор: klem4 2.07.2007 19:44

Да, мой косяк ... надо было проверить в TP. А в FPC код без указателей не компилится ... вот лог ошибок:

Цитата
test.pas(11,39) Error: Incompatible types: got "A" expected "<procedure variable type of procedure;Register>"
test.pas(11,42) Error: Incompatible types: got "B" expected "<procedure variable type of procedure;Register>"


Но вот это помогает

Цитата
const
procs: Array [0..1] of TProcType = (TProcType(A), TProcType(B));