Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JS, Równanie kwadratowe, switch zamiast if/else
Forum PHP.pl > Forum > Po stronie przeglądarki
tracerr
Potrzebowałbym przerobić ten kod równania kwadratowego, żeby zamiast instrukcji warunkowych (if,else) zastosować zmienną switch, pomoże ktoś?
  1. </HEAD>
  2.  
  3. <script language = "JavaScript">
  4. <!-- Ukrycie przed przegladarkami nie obsługujacymi Javascript
  5. document.write ("<H2>Rownanie kwadratowe</H2>");
  6. document.write ("<br>");
  7. var A = prompt ("Podaj A rownania Ax^2+Bx+C=0 ", "");
  8. var B = prompt ("Podaj B rownania Ax^2+Bx+C=0 ", "");
  9. var C = prompt ("Podaj C rownania Ax^2+Bx+C=0 ", "");
  10.  
  11. var delta = B*B-4*A*C;
  12.  
  13. if (delta < 0)
  14. {
  15. document.write ("Rownanie nie ma rozwiazan");
  16. }
  17. else
  18. {
  19. if (delta == 0)
  20. {
  21. document.write ("Rozwiazanie ma liczbe x= ", -B/(2*A) )
  22. }
  23. else
  24. {
  25.  
  26. document.write ("<H3> Rozwiazaniem sa liczby </H3> x1 = ", (( -B + Math.sqrt(delta))/(2*A)));
  27. document.write (" i <br> x2= ", ((-B - Math.sqrt(delta))/(2*A)));
  28. }
  29. }
  30.  
  31. // Koniec kodu JavaScipt -->
  32.  
Crozin
Switch do niczego Ci się tutaj nie przyda, ponieważ umożliwia on w zasadzie jedynie zastąpienie serii IF-ów, gdzie w warunku są porównania równości (==). Ty natomiast musisz wykonać porównanie nierówności (< bądź >) i równości (==). Na dobrą sprawę, ten kod powinien być zapisany w ten sposób:
  1. if (delta === 0) {
  2. // jedno rozwiązanie
  3. } else if (delta > 0) {
  4. // dwa rozwiązania
  5. } else {
  6. // brak rozwiązań
  7. }
Kolejność warunków nie ma znaczenia.

Trzeba tutaj jedynie zwrócić uwagę, na potencjalne przekłamania powyższego kodu. Ponieważ w JS wszystkie liczby są liczbami zmiennoprzecinkowymi możesz paść ofiarą braku precyzji w przypadku, gdy delta powinna być równa zeru. Patrz: https://www.google.com/search?q=floating+po...93&ie=UTF-8
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.