![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Число [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)
> Я думаю, что это не самый оптимальный вариант.
ты прав. это даже не вариант - это сам Деструктор не знает что.