Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизКак реализовать кратность в цикле? Найти похожие ветки
← →
Галинка © (2006-12-05 16:28) [0]Имеется массив, количество эдементов которого кратно 3. Надо в цикле вытаскивать по три элемента за один проход цикла. Подскажите формулу/ы пожайлуста
← →
Котик Б (2006-12-05 16:31) [1]
i+0, i+1, i+2
:)
← →
Eraser © (2006-12-05 16:31) [2]> [0] Галинка © (05.12.06 16:28)
примерно так
i := 0;
while i < iCount do
begin
...
matrix[i] := 777;
matrix[i + 1] := 666;
matrix[i + 2] := 13;
inc(i, 3);
end;
← →
Sha © (2006-12-05 16:32) [3]как-то так :)
f
or i:=0 to length(a) div 3 - 1 do begin
a[3*i]:=
a[3*i+1]:=
a[3*i+2]:=
end;
← →
clickmaker © (2006-12-05 16:48) [4]i := 0;
while i <= High(arr)-2 do begin
v1 := arr[i];
Inc(i);
v2 := arr[i];
Inc(i);
v3 := arr[i];
Inc(i);
end;
who more?
← →
Котик Б (2006-12-05 16:49) [5]... я первый успел :))))
← →
Галинка © (2006-12-05 16:52) [6]Sha совершенно прав... "Тихо шифером шурша"...
← →
Sha © (2006-12-05 18:29) [7]> Котик Б (05.12.06 16:49) [5]
> ... я первый успел :))))
зато я больше понравился )))
← →
k2 © (2006-12-05 18:32) [8]Sha © (05.12.06 18:29) [7]
это задел на будущее :)
← →
ProgRAMmer Dimonych © (2006-12-05 18:35) [9]А вот, кстати говоря, в Бейсике в своё время (ещё под ДОСом) это очень классно записывалось и компилировалось:
FOR I=1 TO 16 STEP 3
..........
Ля-ля, тополя
..........
NEXT I
С тех пор Гейтс очень серьёзно сдал позиции :(
← →
Sha © (2006-12-05 18:58) [10]> clickmaker © (05.12.06 16:48) [4]
> who more?
I am
i := Length(arr);
while i >0 do begin
v1 := arr[i-1];
v2 := arr[i-2];
v3 := arr[i-3];
dec(i,3);
end;
чуть быстрее будет, т.к.:
- High реализована через Length
- Length вызывается 1 раз
- индекс, участвующий в адресе, изменяется 1 раз за проход
← →
Sha © (2006-12-05 19:10) [11]> Галинка
Кстати, если речь идет об обработке bmp,
то для ускорения можно еще использовать то,
что строки имеют одинаковую длину и
лежат на одинаковом расстоянии друг от друга.
← →
default © (2006-12-05 21:16) [12]пипец вопрос, я бы постеснялся такой задавать
Галинка, Вы же вроде на C# пишите?
так циклом for такое сделать на раз два.... вместо шаблонного i++ у индекса цикла написать i+=3 и внутри цикла array[i], array[i+1],array[i+2] использовать
← →
Gero © (2006-12-06 00:24) [13]> [10] Sha © (05.12.06 18:58)
> i := Length(arr);
> while i >0 do begin
> v1 := arr[i-1];
> v2 := arr[i-2];
> v3 := arr[i-3];
> dec(i,3);
> end;
А если Length(arr) = 4?
← →
Думкин © (2006-12-06 05:51) [14]> Gero © (06.12.06 00:24) [13]
> Галинка © (05.12.06 16:28)
> Имеется массив, количество эдементов которого кратно 3.
← →
0x07BBh (2006-12-06 06:23) [15]Думкин © (06.12.06 05:51) [14]
проверки никто не отменял...
var
arr:array of integer;
...
if (Length(arr) mod 3) = 0 then
begin
for i:=0 to length(a) div 3 - 1 do
begin
a[3*i]:= 1;
a[3*i+1]:=2;
a[3*i+2]:=3;
end;
end;
← →
0x07BBh (2006-12-06 06:30) [16]Может так?
var
count,len,kratnost:integer;
arr:array of integer;
begin
len := Length(arr);
kratnost := 3;
count := len - 1;
while(count < len)do
begin
for kratnost := 0 to kratnost -1 do
if(count < len)then
begin
arr[count] := 1;
inc(count);
end;
end;
end;
← →
MBo © (2006-12-06 06:50) [17]>Sha © (05.12.06 18:58) [10]
а не будет ли при прямом обходе некоторого выигрыша за счет упреждающего кэширования?
← →
Думкин © (2006-12-06 06:51) [18]> 0x07BBh (06.12.06 06:23) [15]
деЦкий сад - штаны на лямках. В ТЗ четко описано что кратно.
← →
0x07BBh (2006-12-06 06:59) [19]Думкин © (06.12.06 06:51) [18]
а какнибудь аргументировать нормально кроме "хыыы дэбил", к сожелению программы используют в повседневной жизни совсем не ТЗ, а пользователи эти точно ТЗ и ТРП не читают им надо "чтобы работало"
← →
Думкин © (2006-12-06 07:03) [20]
> 0x07BBh (06.12.06 06:59) [19]
1. Данная программа - задание для двоечников в ВУЗе.
2. Может и используются, но давай таки придерживаьться того, что написано. А иначе - паранойя и к врачу.
3. Про дебила - это ваши домыслы. Впрочем вам виднее.
4. Будут вопросы - спрашивай не стесняйся.
← →
0x07BBh (2006-12-06 07:06) [21]Думкин © (06.12.06 07:03) [20]
1. это не причина для того чтобы писать как попало и без проверок на ошибки
2. ну тебе повезло, на грамотных пользователей
3. Деццкий сад выглядет не много лучше
4. Я уж лучше мастеров спрошу
← →
Думкин © (2006-12-06 07:10) [22]
> 0x07BBh (06.12.06 07:06) [21]
Писал я как раз на массового пользователя и со всевозможными проверками, при этом проводилось разнообразное тестирование.
Речь не об этом. Если хочется тупо попридираться - то пока. Паранойя - это соседний кабинет.
← →
Anatoly Podgoretsky © (2006-12-06 09:37) [23]> Думкин (06.12.2006 05:51:14) [14]
Так и проверка должна быть, не только I > 0, но м I mod 3 = 0
← →
Думкин © (2006-12-06 10:29) [24]> Anatoly Podgoretsky © (06.12.06 09:37) [23]
ну тогда и такую возможность курить можно и нужно:var
a : array[talaha] of integer;
гдеtype
talpha = 5..62;
илиtype
talpha = "a".."z";
Чего же на полпути останавливаться? Причем про кратность 3 описано в ТЗ, а вот описание о другом - отсутствует.
← →
clickmaker © (2006-12-06 10:30) [25]
type
T3IntArray = array[0..2] of integer;
TThreeIntegers = packed record
v1: integer;
v2: integer;
v3: integer;
end;
var
arr: array[0..5] of integer;
p, pEnd: ^T3IntArray;
v: TThreeIntegers;
begin
p := @arr[0];
pEnd := @arr[High(arr)];
while integer(p) < integer(pEnd) do begin
CopyMemory(@v, p, sizeof(v));
Inc(p);
end;
я жгу ))
← →
Sha © (2006-12-06 10:49) [26]> MBo © (06.12.06 06:50) [17]
> а не будет ли при прямом обходе некоторого выигрыша за счет упреждающего кэширования?
Точно не знаю, может где-то и будет.
В свое время проверял это на пентиуме-4 и амд-к6.
На них скорость от направления обхода не зависит.
← →
SpellCaster (2006-12-06 10:55) [27]> [25] clickmaker © (06.12.06 10:30)
type
T3IntArray = class(TStream)
private
fArr: array of Integer;
public
function Read(var Int1,Int2,Int3: Integer): Longint; override;
...
end;
=))
← →
Sha © (2006-12-06 10:56) [28]> MBo © (06.12.06 06:50) [17]
Имеется ввиду конечно не специальный случай "быстрого копирования"
← →
Anatoly Podgoretsky © (2006-12-06 12:13) [29]> Думкин (06.12.2006 10:29:24) [24]
talpha не кратно трем
← →
Думкин © (2006-12-06 12:15) [30]
> Anatoly Podgoretsky © (06.12.06 12:13) [29]
Сделаем кратно - добавиви или убрав. Количество элементов в легкую делается кратным трем.
← →
Галинка © (2006-12-06 12:47) [31]Да пишу на шарпе. default, я честно не знала, что можно как ы бэйсике шаг задавать... это классно. Спасибо, просветили.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.048 c