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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.03.2009, 00:36
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию Random

Возможно ли с помощи этого оператора получить любое число кроме тех которые указанные в мемо1 например. К примеру диапазон от 1 до 20 и нужно любое число кроме 3, 5, 10 (они указаны в мемо поле). Заранее благодарен.
Ответить с цитированием
  #2  
Старый 10.03.2009, 00:55
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Например, при генерации числа проверить - есть ли это число в Мемо иль нет ... если есть - пропустить, а если нет - обрабатывать дальше
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #3  
Старый 10.03.2009, 01:46
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

А программно как это выглядит?
Ответить с цитированием
  #4  
Старый 10.03.2009, 02:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Программно где-то так:

Код:
var
  R : Integer;
begin
  R := Random(N) + 1; random 1..N
  While AlredyExist(R) Do R := Random(N)+1;

Где функия AlredyExist - проверяет допустимость сгенерированного числа. Писать надо самому.
Ответить с цитированием
  #5  
Старый 10.03.2009, 11:31
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

А что за переменная n, и где он связан с мемо?
Ответить с цитированием
  #6  
Старый 10.03.2009, 13:42
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Про N:
С мэмо оно никак не связано.
Твое Случайное Число будет в диапазоне от 0 до N
Почитай хэлп про RANDOM...
С мэмо тебе надо связать еще не написанную тобой процедуру AlredyExist(R), в которой тебе надо сравнивать число R c числами из MEMO
Ответить с цитированием
  #7  
Старый 10.03.2009, 14:27
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

Теперь понятнее. А теперь подскажите как написать и связать эту процедуру с мемо
Ответить с цитированием
  #8  
Старый 10.03.2009, 16:59
Аватар для 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
Репутация: выкл
По умолчанию

Еще можно использовать RandomRange из модуля Math.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 10.03.2009, 17:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А вот это думай сам.
По сути, вещь довольно простая. Тебе нужен цикл по линиям мемо (Memo1.Lines), преобразование строки в число (StrToInt) и сранение с переданным числом (if).
Ответить с цитированием
  #10  
Старый 12.03.2009, 22:26
Аватар для Casper-Hacker
Casper-Hacker Casper-Hacker вне форума
Начинающий
 
Регистрация: 19.05.2008
Сообщения: 147
Версия Delphi: x
Репутация: 15
Счастье

Цитата:
Сообщение от elfer
Возможно ли с помощи этого оператора получить любое число кроме тех которые указанные в мемо1 например. К примеру диапазон от 1 до 20 и нужно любое число кроме 3, 5, 10 (они указаны в мемо поле). Заранее благодарен.

Код:
var
x:integer;
begin
randomize;
x:=random(20);
if (x<>3) and (x<>5) and (x<>10) then
...
else x:=random(20);
Цифры воспринимаешь из мемо отрезкой pos(',',Переменная), и еще применяй для проверки цикл while...
Ответить с цитированием
  #11  
Старый 12.03.2009, 22:31
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

2 Casper-Hacker: тут необходим цикл или goto, например так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x: Integer;
begin
  Randomize;
  repeat
    x:= Random(20);
  until ((x<>3) and (x<>5) and (x<>10));
  ShowMessage(IntToStr(x));
end;
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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