Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: algo: Moze ktos madrzejszy mi pomoc ? :)
Forum PHP.pl > Forum > PHP
Nookie
Witam !
oto moj kolejny problem smile.gif

mamy tablice:
20,000 |71
5,000 |37
800 |74
60 |49
5 |14

Pytanie jak napisac algo, ktory rozbijaloby kwote na poszczegole kwoty czastkowe i wstawial dla nich wartosc z tabeli ?

Przkladowo
majac kwote 25,860
algo rozbijaloby to tak:
20,000 -> 71
5,000 -> 37
800 -> 74
60 -> 38

i potem sumowaloby wszystkie wartosci ktore uzyskalismy, czyli dodajemy i otrszymujemy $szuknawartosc = 71+37+74+38


za pomoc wielkie dzieki..
bo problem mnie "lekko" przerasta
a jedyne na co wymyslilem to sprawdzanie jakiej dlugosci jest string z kwota i potem po koleji przypisywanie 1 wartosci ze stringu, wartosc z tabeli... i dalej po koleji az sie nam skonczy string...
raczej brzydki i nie do konca umem zmusic zeby dzialalo poprawnie...
smile.gif
Grzesiek
Nie wiem czy o to ci chodzi ale możesz to zrobić tak:
[php:1:2686c9124d]<?php
$linie = file("twoj_plik_z_danymi.txt");
foreach($linie as $linia) {
list($klucz, $wartosc) = explode("|", $linia);
$tablica[$klucz] = $wartosc;
}

?>[/php:1:2686c9124d]
teraz masz wszystko w jednej tablicy może to ci troche pomoże?
Nookie
No nie do konca jest to to o co mi chodzi...

wiekszy problem mam z rozbiciem kwoty na poszczegolne skladowe i dla kazdej przypisanie odpowiedniej wartosci z tablicy...

ale dzieki za podpowiedz..
adwol
Cytat
Pytanie jak napisac algo, ktory rozbijaloby kwote na poszczegole kwoty czastkowe i wstawial dla nich wartosc z tabeli ?

[php:1:178f4c5627]<?php
$suma = 25860;

$w = array(20000 => 71,
5000 => 37,
800 => 74,
60 => 38,
5 => 14);

$szukanawartosc = 0;
foreach ($w as $k => $v)
for (; $suma >= $k; $suma -= $k, $szukanawartosc += $v);

print "$szukanawartoscn";
?>[/php:1:178f4c5627]
Nookie
hmy wiec cos jest nie tak dostaje komunikat:
Cytat
Warning: Invalid argument supplied for foreach() in test.php on line 7
Szukana wartosc: 0  


Wiec niestety funkcja nie dziaal sad.gif
Mam prosbe jak moglbys mi troszeczke objasnic
co dokladnie robi ten zapis:
[php:1:5dcb1a4d74]<?php
foreach ($w as $k => $v)
for (; $suma >= $k; $suma -= $k, $szukanawartosc += $v);

?>[/php:1:5dcb1a4d74]

bo troche przy nim wymiekam smile.gif
a nie chce tylko robic ctrl+c, ctrl+v tylko zrozumiec jak to powinno dzialac...
adwol
Cytat
Wiec niestety funkcja nie dziaal sad.gif

Działa, działa, a przynajmniej nie sypie takimi komunikatami. Pokaż dokładnie jaki masz kod.
Cytat
Mam prosbe jak moglbys mi troszeczke objasnic
co dokladnie robi ten zapis:
[php:1:640b542d70]<?php
foreach ($w as $k => $v)  
 for (; $suma >= $k; $suma -= $k, $szukanawartosc += $v);
?>[/php:1:640b542d70]

Dla każdego elementu tablicy $w próbuje odejmować od $suma wartość klucza tego elementu tak długo aż nowa wartość $suma będzie od niej mniejsza. Następnie przechodzi do następnego elementu i tak dalej aż wyczerpią się wszystkie elementy. Przy każdym kroku dodaje do $szukanawartosc wartość odpowiadającą poszczególnym składnikom sumy (wartości odpowiadające kluczom).
Nookie
sorka

masz racje funkcja dzial swietnie..

poprostu jak wklejalem funkcje to kliknalem cos na klawiaturze..
a ze jestem slepy jak kret... to nie zuwazylem smile.gif


Wielkie dzieki...
bo sam na to bym nie wpadl... smile.gif

a co do tluamczenia bede musail troszke poczytac manuala smile.gif ale chyba do tego dojde smile.gif

dzieki
pozdro
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.