Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.08.2008, 00:00
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию ф-ция случайного выбора

народ, кто нибудь пробовал эту процедуру:
Код:
var
  int   : Integer;
  i     : Integer;
begin
  ShowMessage('Первые 5 фиксированных чисел');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);  
    ShowMessage('int = '+IntToStr(int));
  end;
  Randomize;
  ShowMessage('');
  ShowMessage('Следующие 5 случайных чисел');
  for i := 1 to 5 do
  begin
    int := 1 + Random(100);   
    ShowMessage('int = '+IntToStr(int));
  end;
end;
переделать в функцию? объектная она работает замечательно, а в виде функции ну никак! 4 дня бьюсь, так изменю, этак изменю... ни в какую...
Ответить с цитированием
  #2  
Старый 21.08.2008, 00:10
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

А что у тебя не получается? Или что тебе нужно чтобы получилось? Уточни плиз
Ответить с цитированием
  #3  
Старый 21.08.2008, 02:31
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

этот код - объектная процедура. я хочу переделать ее в ф-цию NumFunc(j:integer):integer где j допустим можно использовать как random(j). мне все равно где j там будет лишь бы заработало...
а в самой процедуре будет так
Код:
if NumFunc(10) = 5 then begin
примерно так
Ответить с цитированием
  #4  
Старый 21.08.2008, 02:37
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Чесно, либо я перепил пенного, либо хочу спать, но тебя я реально не понимаю))) Толком с расстановкой можешь объяснить?
Куда ты хочешь передавать функцию
Код:
NumFunc(j:integer):integer
???
И в какой процедуре должно быть так:
Код:
if NumFunc(10) = 5 then begin
???
Ответить с цитированием
  #5  
Старый 21.08.2008, 06:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
Randomize;
......
function CommonNumeric(var OutBuff:Array Of Byte):Byte;
var I:Byte;
begin
  For I:=1 To 5 Do
    OutBuff[I-1]:=1+Random(100);
  Result:=I;
end;
Usage this function
Код:
var Common:Array[0..4]Of Byte;
      Count,Index:Byte;
begin
  Count:=CommonNumeric(Common);
  For Index:=0 To Count-1 Do
    ShowMessage(IntToStr(Common[Index]));
end;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 21.08.2008, 22:02
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

M.A.D.M.A.N., я твой код пытался подогнать, но все аналогично не работает... вот как я хочу:
Код:
function randomall(i1:integer):integer;
var
  int: Integer;
begin
  randomize;
  begin
    int := 1 + Random(i1);
    result:= int;
  end;
end;

procedure privet(P:pchar);stdcall;

var
  s:string;
  int:integer;
begin
  s:= strpas(P);
  int:= randomall(strtoint(s));
  showmessage(inttostr(int));

end;
как мне переделать ф-цию?

Последний раз редактировалось drkane, 22.08.2008 в 00:16.
Ответить с цитированием
  #7  
Старый 21.08.2008, 23:32
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

То есть ты хочешь чтобы функция randomall(i1:integer):integer возвращала пять раз случайное число из деапазона 1..i1+1? А в другой процедуре это выводилось?

Если так как я понял, то вот так ))

Код:
type
 TMyArray = array [0..4] of Integer;

function Randomall(const Numbler: Integer): TMyArray;
var
 i: Integer;
begin
  for i := 0 to 4 do
   Result[i] := Random(Numbler) + 1;
end;

procedure privet(P: PChar); stdcall;
var
 ResArray: TMyArray; 
 s: String;
 int, i: Integer;
begin
 Randomize;
 s := Strpas(P);
 ResArray := Randomall(StrToInt(s));

  for i := 0 to 4 do
   ShowMessage(IntToStr(ResArray[i]));
end;

Последний раз редактировалось Drozh, 21.08.2008 в 23:47.
Ответить с цитированием
  #8  
Старый 21.08.2008, 23:47
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

Цитата:
Сообщение от Drozh
Тоесть ты хочешь чтобы функция randomall(i1:integer):integer возвращала пять раз случайное число из деапазона 1..i1+1? А в другой процедуре это выводилось?
мне достаточно и одного возврата)) в процедуре же описано, что возвращенное случайное число равно int. соответственно выводим int, чтобы посмотреть какое число вернулось
Ответить с цитированием
  #9  
Старый 21.08.2008, 23:49
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

А зечем тогда в цикле 5 раз прогонять?
Ответить с цитированием
  #10  
Старый 22.08.2008, 00:18
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

ошибся. просто сначала на 5 пробовал, потом на 1. но все равно не работает
ща твою попробую
твоя тоже не работает
я уже шизеть начинаю с этих "случайностей". самое интересное что в ФАКе описано на примере обьектной процедуры, а стоит поробовать переделать в ф-цию или внести в новую длл, как ноль полный

Последний раз редактировалось drkane, 22.08.2008 в 00:26.
Ответить с цитированием
  #11  
Старый 22.08.2008, 00:34
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

А что ты сделать хочешь? ФАК чего? Делфи? И что именно у тебя не получается?
Ответить с цитированием
  #12  
Старый 22.08.2008, 00:50
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

сцуко... долбаная чувствительность к регистру!!! столько бился, оказывается в адресах длл, в одной Pchar, во второй pchar
Ответить с цитированием
  #13  
Старый 22.08.2008, 00:51
drkane drkane вне форума
Прохожий
 
Регистрация: 02.05.2008
Сообщения: 31
Репутация: 10
По умолчанию

тупые смайлики))) конечно ты не понял, потому что я сам ступил в своих ф-циях, причем такая глупая ошибка)))

Последний раз редактировалось drkane, 22.08.2008 в 16:31.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025