Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Число [D7]


flock ©   (2006-11-19 22:28:00) 

Необходимо из данного числа составить два числа, сумма которых должна равняться данному числу. Т.е дано 10, найденные два числа это например 8 и 2; или 6 и 4 и т.п. Как такое грамотнее всего осуществить?

Самый тупой, мой способ -- это вот в лоб:

 need := 10;
 while true do
 begin
   t1 := Random(need - 1); t2 := Random(need - 1);
   if t1 + t2 = need then
   begin
     ShowMessage(Format('%d, %d', [t1, t2]));
     Break;
   end;
 end;

Я думаю, что это не самый оптимальный вариант.


RASkov   (2006-11-28 08:27:00) [1]

> [12] Думкин ©   (20.11.06 06:43)

var a,b,c,n: byte;
begin
 a:=50+Random(205);
 b:=Random(a);
 for n:=b downto 1 do begin
  if (a mod n)=0 then begin
   b:=a div n;
   c:=n;
   break;
  end;
 end;
 ShowMessage(IntToStr(a)+' - '+IntToStr(b)+' - '+IntToStr(c)+' - '+IntToStr(b*c));
end;

:)


ASoft   (2006-11-20 08:01:00) [2]


> flock   (19.11.06 22:28)

если не нужно приводить все варианты суммы, к примеру для 10:
1+9, 2+8 и т.п. то можно и так:
Var a,b,c: integer;
begin
a:=10;
b:=a div 2;
c:=a-b;
Label1.Caption:=Format('%d, %d', [b, c]);
end;
:)
у
> RASkov   (20.11.06 00:24) [3]

пример мне более понравился ;)


Думкин   (2006-11-20 06:43:00) [3]

Со сложением совсем просто. А с умножением нацело?


Германн   (2006-11-20 01:37:00) [4]


> KilkennyCat ©   (20.11.06 01:27) [10]
>
> > [4] RASkov   (20.11.06 00:26)
>
> я надеялся, что до этого догадается автор :)
>

Автор задал вопрос и замолчал. Теперь обсуждаем ответчиков и их "ляпы". :-)


KilkennyCat   (2006-11-20 01:27:00) [5]

> [4] RASkov   (20.11.06 00:26)

я надеялся, что до этого догадается автор :)


Германн   (2006-11-20 01:21:00) [6]


> Anatoly Podgoretsky ©   (20.11.06 01:06) [8]
>
> > RASkov  (20.11.2006 0:26:04)  [4]
>
> Данное число не входящее в заданое
>

RASkov опять поспешил :-) А потом "поспешил исправиться" :-)


Anatoly Podgoretsky   (2006-11-20 01:06:00) [7]

> RASkov  (20.11.2006 0:26:04)  [4]

Данное число не входящее в заданое


Орион   (2006-11-20 00:49:00) [8]

> [6] DrPass ©   (20.11.06 00:47)

я цитировал :)


DrPass   (2006-11-20 00:47:00) [9]


> Орион ©   (20.11.06 00:40) [5]

увы, он немного неправильный


Орион   (2006-11-20 00:40:00) [10]

хы-хы)) в тему [0] поста:

Программистский шедевр на индусском форуме на тему "как узнать завтрашнюю дату" остался непревзойденным:

void get_tomorrow_date( struct timeval date )
{
sleep( 86400 ); // 60 * 60 * 24

gettimeofday( date, 0 );
}


RASkov   (2006-11-20 00:26:00) [11]

b := Random(a+1); // случайное число входящее в заданное. это первое число.


RASkov   (2006-11-20 00:24:00) [12]

Все же наверное так лучше будет:)
var
a, b, c : byte;
begin
a := 10;          // данное число
b := Random(a+1); // меньше единицы только ноль, что пофиг. это первое число.
с := a - b;       //находим второе число.
енд.


KilkennyCat   (2006-11-19 22:37:00) [13]

var
 a, b, c : byte;
begin
 a := 10; // данное число
 b := 1;// меньше единицы только ноль, что пофиг. это первое число.
 с := a - b; //находим второе число.
енд.


Орион   (2006-11-19 22:31:00) [14]

> [0] flock   (19.11.06 22:28)
> Я думаю, что это не самый оптимальный вариант.

ты прав. это даже не вариант - это сам Деструктор не знает что.


Наверх

Титульная страница Поиск, карта сайта Написать письмо