Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Konsolidacja tablicy
tikky
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 2.10.2007

Ostrzeżenie: (0%)
-----


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ą.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
tikky
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 2.10.2007

Ostrzeżenie: (0%)
-----


No tyle to ja też wiem, ale co dalej jak nie wyjdzie jakaś ogrągła wartość.
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mike 11.02.2009, 15:30:29
Go to the top of the page
+Quote Post
tikky
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 2.10.2007

Ostrzeżenie: (0%)
-----


Spokojnie. Ale jak zaokrągle to mi usunie za dużo.
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.

Ten post edytował phpion 11.02.2009, 15:37:09
Go to the top of the page
+Quote Post
flashdev
post
Post #7





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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>
Go to the top of the page
+Quote Post
tikky
post
Post #8





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 2.10.2007

Ostrzeżenie: (0%)
-----


Dokładnie o takie coś mi chodziło :-)

A w czym to napisane jest? javascript?
Go to the top of the page
+Quote Post
flashdev
post
Post #9





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


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).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 14:48