Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Algorytm zachłanny - wyświetlanie wyników jako obrazki, Algorytm zachłanny, kwestia wydawania reszty.
2blaze
post 15.05.2013, 13:11:53
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 15.05.2013

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


Witam, mam problem z algorytmem zachłannym. Mój kod wygląda następująco:

CODE
<script type="text/javascript">

function wydaj()
{
// przypisanie obiektu pola tekstowego do zmiennej
var pole_liczba = document.forms['reszta'].liczba;
// pobranie liczby
var R = pole_liczba.value;
//tablica dostepnych nominalow
var N = [200, 100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01];
if (!isNaN®){

var wynik = "Reszta to:\r\n";
var i = 0;

//dopoki nie wydano calej reszty
while (R>0 && i<=N.length) {
//sprawdz czy mozna wydac danym nominalem
if (R >= N[i]) {
P=Math.floor(R/N[i]); //ile razy wydac dany nominal
R=Math.round(100*(R-(N[i]*P)))/100; //zmniejsz reszte o wydany nominal

wynik += N[i] + " PLN x " + P + "\r\n"; //wypisz wynik
}
//rozpatrz kolejny nominal
i++;
}
alert(wynik);
}
else {
alert('Podano nieprawidłową wartość!');
pole_liczba.focus();
}
return false;
}
</script>

<form id="reszta" action=""><div>
Podaj kwotę:
<input type="text" name="liczba"/> <button onclick="return wydaj()">Wydaj resztę</button>
</div>


Pytanie brzmi natomiast jak zmodyfikować kod, żeby zamiast wyskakującego okienka z wynikami wydawania reszty, na dole pod polem do wpisania kwoty pojawiały się kolejno wydane nominały banknotów zaciągnięte z obrazków w folderze strony?

Z góry dziękuję za wszelkie sugestie.

Pozdrawiam
Piotrek
Go to the top of the page
+Quote Post
PaFaT
post 3.06.2013, 22:07:27
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 3
Dołączył: 27.03.2012

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


Drogi(a) 2blaze,

Nie można wyświetlić obrazków w oknie typu alert, należy użyć pewnego elementu strony, np. div'a.

Przykład:

  1. <div id="reszta-div"></div>


Następnie należy trochę zmodyfikować kod:

  1. <script type="text/javascript">
  2.  
  3. function wydaj()
  4. {
  5. // przypisanie obiektu pola tekstowego do zmiennej
  6. var pole_liczba = document.forms['reszta'].liczba;
  7. // pobranie liczby
  8. var R = pole_liczba.value;
  9. //tablica dostepnych nominalow
  10. var N = [200, 100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01];
  11. var obrazki_nominalow = ["obrazki/nominaly/200.png", ...] // ścieżkę wpisujesz jaką chcesz.
  12. if (!isNaN(R)){
  13.  
  14. var wynik = "Reszta to:<br />";
  15. var i = 0;
  16. var j = 0;
  17.  
  18. //dopoki nie wydano calej reszty
  19. while (R>0 && i<=N.length) {
  20. //sprawdz czy mozna wydac danym nominalem
  21. if (R >= N[i]) {
  22. P=Math.floor(R/N[i]); //ile razy wydac dany nominal
  23. R=Math.round(100*(R-(N[i]*P)))/100; //zmniejsz reszte o wydany nominal
  24.  
  25. for(j = 0; j < P; j++){
  26. wynik += '<img src="' + obrazki_nominalow[i] + '" />&nbsp;';
  27. }
  28. if(P) wynik += '<br />';
  29. }
  30. //rozpatrz kolejny nominal
  31. i++;
  32. }
  33.  
  34. var el = document.getElementById("reszta-div");
  35. if(!el) return false;
  36. el.innerHTML = wynik;
  37. }
  38. else {
  39. alert('Podano nieprawidłową wartość!');
  40. pole_liczba.focus();
  41. }
  42. return false;
  43. }


Powinno zadziałać smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 03:16