Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konsolidacja tablicy
Forum PHP.pl > Forum > PHP
tikky
Witam,

Załóżmy że chcę mieć dwie tablice jednakowej długości.
Jedna zawiera 127 elementów a druga np. 86.

Jak napisać taką funkcję, która potrafiła by przyciąć a właściwie może lepszym określeniem będzie skonsolidować tablicę do wartości mniejszej czyli 86 w tym akurat wypadku.


Chodzi o to, aby nie obcinać wartośc z końca lub początku natomiast wyciąć co którąś wartość.
W innym przypadku gdy mniejsza miała by 50 a większa 100 było by to proste - wystarczyło by wyciąć co drugą.
JoShiMa
oblicz sobie stosunek mniejszej do wiekszej i będziesz widział co którą wartość wyciąć. Jak wyjdzie 1/3 to wycinasz z dłuższej co trzecią, jak wyjdzie 1/5 to co piątą. Jak wyjdzie 2/5 to wycinasz dwie na pięć, ale jak to juz sam musisz zdecydować.
tikky
No tyle to ja też wiem, ale co dalej jak nie wyjdzie jakaś ogrągła wartość.
mike
Cytat(tikky @ 11.02.2009, 15:20:27 ) *
No tyle to ja też wiem, ale co dalej jak nie wyjdzie jakaś ogrągła wartość.
No to zaokrąglasz.
Kurcze, kilka podstawowych operacji matematycznych i problem.
tikky
Spokojnie. Ale jak zaokrągle to mi usunie za dużo.
phpion
Cytat(tikky @ 11.02.2009, 17:35:11 ) *
Spokojnie. Ale jak zaokrągle to mi usunie za dużo.

Masz przecież do wyboru zaokrąglenie w górę (ceil" title="Zobacz w manualu PHP" target="_manual) oraz w dół (floor" title="Zobacz w manualu PHP" target="_manual) więc wybierz to, które jest dla ciebie lepsze.
flashdev
Kod
<script>

function k(len0, len1){
lMin=Math.min(len0, len1)
lMax=Math.max(len0, len1)

sum=0
deleted=0
for(i=0;i<lMax;i++){
if(Math.round(sum)==i){
document.write("delete "+i+" <br />")
deleted++;
sum+=lMax/(lMax-lMin)
}
}
document.write("deleted: "+deleted+" == abs(size1 - size2) == "+(lMax-lMin))

}

k(127, 86)

</script>
tikky
Dokładnie o takie coś mi chodziło :-)

A w czym to napisane jest? javascript?
flashdev
Nie ma za co.
Jest to javascript bo tak mi było wygodniej.
Przy usówaniu elementów na bieżąco nie zapomnij o przesówaniu wskaźnika (zamiast: i wtedy będzie: i-deleted).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.