• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kalkulator przeliczający stopnie alfa na sinus alfa

0 głosów
108 wizyt
pytanie zadane 14 września w JavaScript przez Marta Długa Obywatel (1,590 p.)
Dzień dobry

Szukałam i nie znalazłam.

Chciałabym napisać program kalkulator w JavaScript, przeliczający stopnie alfa na sinus alfa według wzoru.

Jeśli jest taka możliwość to z jakiego wzoru musiałabym skorzystać?

3 odpowiedzi

+1 głos
odpowiedź 14 września przez ScriptyChris Mędrzec (165,680 p.)
wybrane 21 września przez Marta Długa
 
Najlepsza

Może metoda Math.sin?

komentarz 14 września przez Marta Długa Obywatel (1,590 p.)
edycja 14 września przez Marta Długa
Nie może być bo użytkownik wprowadza stopień.

To ma być kalkulator taki jak na stronie https://www.naukowiec.org/przelicznik-katow.html
1
komentarz 14 września przez ScriptyChris Mędrzec (165,680 p.)
1
komentarz 14 września przez Marta Długa Obywatel (1,590 p.)
Dzięki
+1 głos
odpowiedź 14 września przez J0ker Stary wyjadacz (11,930 p.)
Możesz zaimplementować przeliczenie kąta na jego sinus sam/sama

sinus(x) to w przyblizeniu x - x^3/3! + x^5/5! - x^7/7! + x^9/9! ... i tak w nieskończonośc. Im więcej składników uwzględnisz tym dokładniejsze przybliżenie. ! oznacza oczywiście silnię. Silnię zaimplementuj wzorem-przybliżeniem Stirlinga, bo rekurencja jest zbyt wolna.
komentarz 16 września przez J0ker Stary wyjadacz (11,930 p.)
A zdajesz sobie sprawę człowieku że te wbudowane metody nie biorą wartości funkcji sinus od krasnoludków tylko obliczają ją stosując dokładnie takie przybliżenie jakie napisałem?
komentarz 16 września przez ScriptyChris Mędrzec (165,680 p.)
Ja nie odniosłem się do sposobu liczenia, więc nie wiem skąd Twoje oburzenie.

Mój komentarz odniósł się do tego, że skoro są wbudowane metody, to po co męczyć się z samodzielnym liczeniem całości? Chyba, że liczenie samo w sobie jest częścią zadania lub metody wbudowane nie są wystarczające do rozwiązania problemu. Nie zauważyłem jednak, żeby autorka pytania o tym wspomniała. W pytaniu jest zapytanie o wzór do obliczeń, co niekoniecznie oznacza, że celem zadania jest samodzielne liczenie tego - autorka mogła po prostu nie wiedzieć, że nie trzeba wymyślać koła na nowo.
komentarz 19 września przez Marta Długa Obywatel (1,590 p.)

@J0ker, przepraszam ale jestem początkująca w programowaniu JavaScript i nie wiele jeszcze o tym wiem. Niestety na studiach też nie wiele nam o tym mówią.

komentarz 19 września przez Marta Długa Obywatel (1,590 p.)
Nie oburzam się. Jestem początkująca i nie za bardzo wiem jak to powinno wyglądać aby po wprowadzeniu przez użytkownika i kliknięciu oblicz pokazał się wynik 1.0000.

Chciałam to obliczyć tym sposobem co pokazał nam wykładowca na przykładzie pola koła, kuli, kwadratu, prostokąta, trójkąta.

Jak obliczałam ręcznie według Twojego wzoru to wynik mi się nie zgadzał i stąd to pytanie.
komentarz 19 września przez Marta Długa Obywatel (1,590 p.)

@J0ker, wzór będzie

x - math.pow(x,3) / 3! + math.pow(x,5) / 5!  - math.pow(x,7) / 7! + math.pow(x,9) / 9! ...

Tylko zamiast ! będzie 

* math.pow((x/2,7182),x) * math.sqrt(2 * 3,1415 * x)

Czy to jest dobrze? Jeśli nie to jak to prawidłowo powinno wyglądać? Chciałabym zastosować const i document.getElementById. Tylko w ten sposób uczono nas na studiach.

0 głosów
odpowiedź 20 września przez Marta Długa Obywatel (1,590 p.)

Jestem początkująca. Błagam o pomoc już kilka dni z tym się męczę i nie mam zielonego pojęcia jak to zrobić.

Nie wiem gdzie mam błąd Po wpisaniu przez użytkownika 90 wynik pokazuje NaN a powinien pokazać 1.0000 lub przynajmniej 1.

Ma to być kod bez @param.

<!DOCTYPE html>
<html lang="pl">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="stopien_sinus.js"></script>
</head>

<body>
    <form id="oblicz" action="" method="post" autocomplete="off">
        <div>
            <h3>Przelicznik Stopnia Alfa na Sinus Alfa</h3>
            Stopień Alfa <input type="number" id="SS"><br>
            <span id="SIN">= </span><br><br>
            <input type="button" value="Oblicz" onclick="oblicz()">
            <input type="reset" value="RESETUJ" onclick="resetuj()">
        </div>
    </form>

</body>

</html>
function oblicz () {
    const SS = document.getElementById('SS').value;
    const SIN = parseInt(SS) * (180 / Math.PI) ;
    document.getElementById('SIN').innerHTML = SS * '(180 / Math.PI) = ';
    return false;
}

function resetuj () {

    document.getElementById('SIN').innerHTML = '';

}

 

komentarz 20 września przez ScriptyChris Mędrzec (165,680 p.)
const SS = document.getElementById('SS').value;
const SIN = parseInt(SS) * (180 / Math.PI) ;
document.getElementById('SIN').innerHTML = SS * '(180 / Math.PI) = ';

W trzeciej linijce powyższego fragmentu próbujesz mnożyć string przez string. Poza tym chyba robisz błąd w obliczeniach, bo dzielisz 180 przez PI zamiast odwrotnie. I nie wiem, czy prawidłowo liczysz SIN.

Taki kod działa:

  const SS = parseInt(document.getElementById("SS").value);
  const SIN = Math.sin(SS * Math.PI / 180);
  document.getElementById("SIN").innerHTML = SIN;

 

komentarz 20 września przez Marta Długa Obywatel (1,590 p.)
edycja 20 września przez Marta Długa

Niestety nie działa. Po kliknięciu oblicz nie pokazuje wyniku.

Ja np. na pole kuli zastosowałam kod i na wzór tego kodu chciałam zrobić kalkulator przeliczający stopnie na sinus tylko wzór bym zmieniła.

Korzystałam z kodu

function oblicz() {
    const R = document.getElementById('R').value;
    const pkl = 4 * 3.14 * parseInt(R) * parseInt(R);
    document.getElementById('pkl').innerHTML = '4 * 3,14 * ' + R + ' * ' + R + ' = ' + pkl.toFixed(2);
    return false;
}
function resetuj () {

    document.getElementById('pkl').innerHTML = '';

}

 

komentarz 20 września przez Marta Długa Obywatel (1,590 p.)
edycja 20 września przez Marta Długa

@ScriptyChris, działa zrobiłam

function oblicz () {
const SS = parseInt(document.getElementById("SS").value);
const SIN = Math.sin(parseInt(SS) * Math.PI / 180);
 document.getElementById("SIN").innerHTML = Math.sin(SS * Math.PI / 180) + ' = ' + SIN.toFixed(4);
return false;
}

 

komentarz 20 września przez Marta Długa Obywatel (1,590 p.)
edycja 20 września przez Marta Długa

Po wpisaniu przez użytkownika 90 stopni wynik sinusa 1 = 1.0000 wychodzi poprawny.

Niestety wynik cosinusa 6.123233995736766e-17 = 0.0000 już nie do końca jest poprawny. Zamiast  6.123233995736766e-17 powinno być 0. Natomiast 0.0000 jest poprawne.

Co zrobić aby zamiast 6.123233995736766e-17 pokazał się wynik 0?

function oblicz () {
const SS = parseInt(document.getElementById("SS").value);
const KOS = Math.cos(parseInt(SS) * Math.PI / 180);
 document.getElementById("COS").innerHTML = Math.cos(SS * Math.PI / 180) + ' = ' + COS.toFixed(4);
return false;
}

Zastosowałam parseInt, ale to pokazał się wynik 6 zamiast 0.

Już wiem

function oblicz () {
const SS = parseInt(document.getElementById("SS").value);
const KOS = Math.round(Math.cos(parseInt(SA) * Math.PI / 180));
 document.getElementById("COS").innerHTML = Math.round(Math.cos(SA * Math.PI / 180)) + ' = ' + KOS.toFixed(4);
return false;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 556 wizyt
pytanie zadane 23 października 2016 w C i C++ przez MadMax Początkujący (260 p.)
+1 głos
2 odpowiedzi 678 wizyt
pytanie zadane 26 lipca 2016 w C i C++ przez dziubi21 Początkujący (310 p.)
+2 głosów
2 odpowiedzi 7,880 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

85,082 zapytań

133,883 odpowiedzi

296,819 komentarzy

56,216 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...