Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Как организовать цикл?   Найти похожие ветки 

 
MVP   (2006-05-15 21:52) [0]

Цикл такой
 for i := 1 to 24 do
  for j := 2 to 23 do
   for k := 3 to 22 do


Надо чтоб он перебирал все не повторяющиеся значения. К примеру (4 4 3) и (4 3 4 ) - повтор, надо исключить повторы, которые могут получится путем переставления цифр


 
palva ©   (2006-05-15 23:45) [1]

for i := 1 to 24 do
 for j := max(2,i) to 23 do
  for k := max(3,j) to 22 do


 
Leonid Troyanovsky ©   (2006-05-15 23:50) [2]


> MVP   (15.05.06 21:52)  


 for i := 1 to 24 do
   for j := 1 to i-1 do
     for k := j+1 to i-1 do

--
Regards, LVT.


 
MVP   (2006-05-16 01:09) [3]

Вот мой вариант, вроде работает.

function Pro (i, j, k : integer):real;
 begin
  Result := sin(i)*sin(j)*sin(k);
 end;

var
 i, j , k : integer;
 count, nus, schet: integer;
 A : array of real;
 s : string;
begin
 count :=  0;

 schet := -1;

 for i := 1 to 24 do begin
  for j := 2 to 23 do begin
   for k := 3 to 22 do begin
    if (i=j) or (i=k) or (j=k) then continue;
  SetLength(A, count + 1);

       for nus := 0 to High(A) do
       if (A[nus] <> Pro (i, j, k)) then Inc(schet);

       if Schet = High(A) then
       begin
         A[count] := Pro (i, j, k);
         s := IntToStr(i) + " " + IntToStr(j) + " " +
              IntToStr(k) + " " + FloatToStr(A[count]);
         Memo1.Lines.Add(s);
         Inc(Count);
         schet := -1;

       end;
         schet := -1;

                       end;
                      end;
                     end;
end;


Может его как-то оптимизировать можно?


 
Desdechado ©   (2006-05-16 11:33) [4]

может, стоит прислушаться к советам?


 
tesseract ©   (2006-05-16 11:40) [5]


> Может его как-то оптимизировать можно?



>   SetLength(A, count + 1);

Убери это. Выделение памяти процесс небыстрый. Лучше хапни срзау побольше.


 
MVP   (2006-05-16 13:10) [6]

Я извиняюсь, я немного неправильно поставил вопрос: вообще не должно быть одинаковых чисел в одной комбинации, тоесть (3 2 3) - не подходит (4 4 4) - не подходит, (3 2 4) и (2 4 3) - из таких перестановок должна быть только одна комбинация, все остальные откидываться.
вот что должно быть для такого цикла

for i := 1 to 6 do
 for j := 2 to 5 do
   for k := 3 to 4 do


Должны браться только такие комбинации
(123), (124), (134), (153), (154), (234), (253), (254), (354), (623), (624), (634), (653), (654)


 
MVP   (2006-05-16 20:34) [7]

сорри, но может кто-то помочь? )


 
Loginov Dmitry ©   (2006-05-16 20:50) [8]

MVP   (16.05.06 13:10) [6]
А если так:
procedure TForm1.Button1Click(Sender: TObject);
var
 i,j,k: integer;
begin
for i := 1 to 6 do
for j := i + 1 to 6 do
  for k := j + 1 to 6 do
    Memo1.Lines.Add(Format("%d %d %d", [i, j, k]));
end;


 
Leonid Troyanovsky ©   (2006-05-16 21:04) [9]


> MVP   (16.05.06 20:34) [7]
> сорри, но может кто-то помочь? )


Объясни, почему отвергнуты

1,2,5
1,2,6
1,3,6
1,4,6
1,5,6
2,5,6

и, возможно, что тебя поймут.

--
Regards, LVT.


 
palva ©   (2006-05-16 21:25) [10]

> Объясни, почему отвергнуты
Третье число по новому условию в диапазоне 3..4


 
Leonid Troyanovsky ©   (2006-05-16 21:39) [11]


> palva ©   (16.05.06 21:25) [10]

Третье число по новому условию в диапазоне 3..4


Скорее, это не новое условие, а интерполяция из [0],
т.е., не совсем удачная попытка исключить повторения
за счет сужения границ. IMHO.

--
Regards, LVT.


 
MVP   (2006-05-16 23:57) [12]

Должны быть такие комбинации
123
124
134
153
154
234
253
254
354
623
624
634
653
654

Для того варианта который я написал, это номера ячеек массивов, в которых лежат числа, которые подставляются в такую формулу

Over[Ind]:=ArcTan2((Ts[i]-Ts[k])*(Xs[j]-Xs[i])-(Ts[i]-Ts[j])*(Xs[k]-Xs[i]),
(Ts[i]-Ts[j])*(Ys[k]-Ys[i])-(Ts[i]-Ts[k])*(Ys[j]-Ys[i]));


 
MVP   (2006-05-18 13:44) [13]

Может кто поможет ))


 
Сергей М. ©   (2006-05-18 13:48) [14]

Насколько критично время выполнения алгоритма формирования этих "троек" ?


 
MBo ©   (2006-05-18 13:49) [15]

>Может кто поможет ))
Вот я, к примеру, до сих пор не понял принципа, по которому формируются комбинации, так что помочь не  в силах...


 
Сергей М. ©   (2006-05-18 15:12) [16]


> MBo ©   (18.05.06 13:49) [15]


У Автора синдром Тузика: "Все понимаю, а сказать не могу")


 
MVP   (2006-05-19 09:12) [17]

Вот такой цикл
for i := 1 to 6 do
 for j := 2 to 5 do
  for k := 3 to 4 do


Для него должны быть комбинации
123
124
134
153
154
234
253
254
354
623
624
634
653
654

То есть, нельзя чтоб i=j, j=k, i=k и не допускаются во второй раз комбинации, которые можно образовать перестановкой чисел 334 и 343 не подходят, из них должна быть только одна комбинация не важно какая, лишь бы не было повтора...


 
Сергей М. ©   (2006-05-19 10:06) [18]

procedure TTestForm.Button3Click(Sender: TObject);
var
 i,j,k: Integer;
 sl, sl1: TStringList;
begin
sl := TStringList.Create;
sl.Sorted := True;
sl.Delimiter := " ";
sl1 := TStringList.Create;
sl1.Sorted := True;
sl1.Duplicates := dupError;
for i := 1 to 6 do
for j := 2 to 5 do
 for k := 3 to 4 do
   if (i = j) or (j = k) or (i = k) then
     Continue
   else begin
     sl.Clear;
     sl.add(format("%d", [i]));
     sl.add(format("%d", [j]));
     sl.add(format("%d", [k]));
     try
       sl1.Add(sl.DelimitedText);
       Memo1.Lines.Add(Format("%d %d %d", [i,j,k]));
     except
     end;
   end;
sl.Free;
sl1.Free;
end;


 
MBo ©   (2006-05-19 10:14) [19]

for i := 1 to 6 do
for j := i + 1 to 5 do
 for k := j + 1 to 4 do



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
15-1146851737
Gero
2006-05-05 21:55
2006.06.04
Adobe Photoshop SDK


2-1147947986
KyRo
2006-05-18 14:26
2006.06.04
Как Можно удалить файл ?


3-1144959988
Krants
2006-04-14 00:26
2006.06.04
Развернуть БД


15-1147346800
REA
2006-05-11 15:26
2006.06.04
Все продано


1-1145391209
Error27
2006-04-19 00:13
2006.06.04
При минимизации окна визуально пропадают некоторые элементы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский