Błędny wynik tangensa

Błędny wynik tangensa
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
2

Dzień dobry jestem początkująca.

Zrobiłam kalkulator, który przelicza stopnie alfa na sinus alfa, cosinus alfa, tangens alfa. Przy wprowadzeniu liczbę 90 stopni przez użytkownika wynik tangensa powinien pokazać ∞ lub infity lub w miejsce wyniku nic nie powinno być (wynik nie istnieje). Natomiast mi I sposobie wynik pokazuje błędny 16331239353195370 = 16331239353195370.0000 tangens alfa, a w drugim sposobie -1.995200412208242 = -1.9952. Jeśli użytkownik wprowadzi liczbę 45 stopni to wynik pokazuje poprawny 1 = 1.0000 .

Co zrobić aby po wprowadzeniu liczby 90 stopni pokazał się wynik infinity?
Proszę o pomoc i wskazanie gdzie jest błąd.

HTML

Kopiuj
<!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="SA"><br>
            Sinus: <span id="SIN">= </span><br><br>
            Cosinus: <span id="KOS">= </span><br><br>
            Tangens: <span id="TAN">= </span><br><br>
            <input type="button" value="Oblicz" onclick="myFunction()">
            <input type="reset" value="RESETUJ" onclick="resetuj()">
        </div>
    </form>
 
</body>
 
</html>

I sposób

Kopiuj
function myFunction() {
const SA = parseInt(document.getElementById("SA").value);
const SIN = Math.sin(parseInt(SA) * Math.PI / 180);
const KOS = Math.round(Math.cos(parseInt(SA) * Math.PI / 180));
const TAN = Math.round(Math.tan(parseInt(SA) * Math.PI / 180));
    document.getElementById("SIN").innerHTML = Math.sin(SA * Math.PI / 180) + ' = ' + SIN.toFixed(4);
    document.getElementById("KOS").innerHTML = Math.round(Math.cos(SA * Math.PI / 180)) + ' = ' + KOS.toFixed(4);
    document.getElementById("TAN").innerHTML = Math.round(Math.tan(SA * Math.PI / 180)) + ' = ' + TAN.toFixed(4);
    
return false;
}
 
function resetuj () {
 
    document.getElementById("SIN").innerHTML = '';
    document.getElementById("KOS").innerHTML = '';
    document.getElementById("TAN").innerHTML = '';
    
}

II sposób

Kopiuj
function myFunction() {
const SA = parseInt(document.getElementById("SA").value);
const SIN = Math.sin(parseInt(SA) * Math.PI / 180);
const KOS = Math.cos(parseInt(SA) * Math.PI / 180);
const TAN = Math.sin(parseInt(SA)) / Math.cos(parseInt(SA));
    document.getElementById("SIN").innerHTML = Math.sin(SA * Math.PI / 180) + ' = ' + SIN.toFixed(4);
    document.getElementById("KOS").innerHTML = Math.cos(SA * Math.PI / 180) + ' = ' + KOS.toFixed(4);
    document.getElementById("TAN").innerHTML = Math.sin(SA ) / Math.cos(SA ) + ' = ' + TAN.toFixed(4);
   
return false;
}

function resetuj () {

    document.getElementById("SIN").innerHTML = '';
    document.getElementById("KOS").innerHTML = '';
    document.getElementById("TAN").innerHTML = '';
   
}
masterc
nie uzywaj polskich nazw, albo sie zdecyduj raz piszesz myFunction a raz resetuj
RA
@masterc: no i windowsa, to lepiej niech pisze po ang to pomożesz
SH
SH
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:69
0

Wygląda na to, że round i/lub parse nie zachowuje NAN/infinity, co tu gdybać.

99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
6

Witaj w świecie liczb zmiennoprzecinkowych. Pamiętaj że Math.PI to nie liczba PI tylko jest 64 bitowe przybliżenie, a więc już samo wyrażenie Math.PI obarczone jest błędem. Błąd ten po wyliczeniu tangensa ujawnia się potem w wyniku.

Dzielenie / 180 również wprowadzi błąd ze względu na ograniczoną precyzję.

Można to poprawić w głupi sposób czyli mając pewne wartości liczone na sztywno, lub bardziej inteligentnie np. wykrywając asymptoty.

Tangens(90 stopni) w wydaniu kalkulatora apple:
screenshot-20210922092246.png


Holy sh*t, with every month serenityos.org gets better & better...
MD
To więc co mam zrobić żeby wynik był prawidłowy np. infinity lub pokazał napis nie istnieje? Jestem początkująca i dopiero się uczę. Proszę o pomoc.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
2

Poguglaj numer 16331239353195370 - ten problem dotyczy wielu środowisk, w tym nawet kalkulatorów.

MD
Nic nie znalazłam.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Na stronie http://jsfiddle.net/DanVicBez/j7LER/ wynikiem jest infinity.Jaki kod jest tam odpowiedzialny za to że wynikiem jest infinity?

SH
SH
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:69
0

@Marta Długa:

Ten kod, którego nie ma, prawdodpobnie parse.

ps. już Ci to pisałem co analizuję z kodu, ale sprawdzać nie będę

edytowany 1x, ostatnio: Stój Halina
MD
Czytałam ale nadal nie wiem jak am zrobić aby w wyniku było inifinity.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Po wprowadzeniu liczby 90 stopni pokazuje wynik Nie istneje ale po wprowadzeniu 45 wynik też pokazuje Nie istnieje zamiast 1.0000.

Nie wiem gdzie mam błąd. Proszę o wskazanie błędu i poprawienie. Niestety dopiero się uczę i jeszcze nie wszystko wiem.

Kopiuj
function myFunction() {
const SA = parseInt(document.getElementById("SA").value);
const TAN = Math.abs(parseInt(SA) - (parseInt(SA)  / 180) * 180);
  document.getElementById("TAN").innerHTML = Math.abs(SA - (SA / 180) * 180) + '=' + ' <b>Nie istnieje! - &#8734</b> ';
    if (TAN === SA) return;
}
  
function resetuj () {
    document.getElementById("TAN").innerHTML = '';
}

MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@Marta Długa: Błagam pomóżcie.

M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
1

Tangens jest funkcją okresową, czyli masz do ogarnięcia tylko parę przypadków.

  • Dla 90 stopni +- 180 w okresie, tangens jest nieznaczony (dzielenie przez zero)
  • Dla 0 stopni +- 180 w okresie, tangens wynosi 0. Nie wiem czy zauważyłaś, ale twój kod przy zerze też pokazuje złe wartości.
  • Dla pozostałych, po prostu liczysz

Więc napisz swoją własną funkcję, na przykład tak:

Kopiuj
function tan(deg) {
    if (deg % 90 == 0) {
        if ((deg / 90) % 2 == 0) {
      	    return 0;
        } else {
      	    return undefined;
        }
   }
   return Math.tan(Math.PI / 180 * deg)
}

Co to robi:

  • Sprawdza czy liczba jest podzielna przez 90
  • Jeśli jest, sprawdza czy wynik dzielenia tej liczby przez 90 jest parzysty
    • Jeśli jest, zwraca 0
    • Jeśli nie, zwraca undefined, ale możesz sobie tu wpisać cokolwiek, na przykład nieskończoność, chociaż nie jest to końca poprawne. Bo to jest coś co dąży do nieskończoności, lub minus nieskończoności
  • W przeciwnym wypadku po prostu liczy tego tangensa
Marta Długa napisał(a):

Na stronie http://jsfiddle.net/DanVicBez/j7LER/ wynikiem jest infinity.Jaki kod jest tam odpowiedzialny za to że wynikiem jest infinity?

Tam jest całkiem inny sposób liczenia, w ogóle nie używają wbudowanych funkcji trygonometrycznych.

edytowany 4x, ostatnio: m31
MD
Kod musi mieć document.getElementById i const. Czy da się to zrobić tak aby kod zawierał document.getElementById i const?
M3
Dodaj to po prostu do swojego sposobu, tam gdzie masz u siebie Math.tan, zastąp tę funkcją. Tylko nie zamieniaj stopni na radiany, bo ta funkcja już to robi.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: Coś źle zrobiłam i nie wiem co bo wynik pokazuje function TAN(SA) {
if (SA % 90 == 0) {
if ((SA / 90) % 2 == 0) {
return 0;
} else {
return undefined;
}
}
return Math.tan(Math.PI / 2 * SA);
}.

Kopiuj
function oblicz() {
const SA = parseInt(document.getElementById("SA").value);
const TAN = Math.tan(Math.PI / 2 * SA);
     document.getElementById("TAN").innerHTML = function TAN(SA) {
    if (SA % 90 == 0) {
        if ((SA / 90) % 2 == 0) {
            return 0;
        } else {
            return undefined;
        }
   }
   return Math.tan(Math.PI / 2 * SA);
}
}

edytowany 2x, ostatnio: Marta Długa
MD
Nie wiem jak łączyć const z document.getElementById i z if. Jestem początkująca.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: Błagam o pomoc. Nie wiem co mam źle. Błagam powiedźcie mi gdzie mam błąd.

Kopiuj
function oblicz() {
const SA = parseInt(document.getElementById("SA").value);
const SIN = Math.sin(parseInt(SA) * Math.PI / 180);


    document.getElementById("SIN").innerHTML = Math.sin(SA * Math.PI / 180) + ' = ' + SIN.toFixed(4);
   
  function tan(TAN){ 
 if (TAN % SA == 0){
        if ((TAN / SA) % 2 == 0){
        document.getElementById("TAN").innerHTML =  0;
      }
      else{
          document.getElementById("TAN").innerHTML = ' <b>Nie istnieje! - &#8734</b> ';;
      }
    }
    document.getElementById("TAN").innerHTML = Math.tan(Math.PI / 2 * TAN);
 }
}

99xmarcin
Teraz to już trolujesz...
MD
Nie troluje. Naprawdę nie wiem jak to zrobić. błagam pomóż. Nie wiem jak się łączy const, if, else z document.getElementById
M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
0

Olaboga, tutaj masz jak to można zrobić Twoim cudacznym sposobem:

Kopiuj
function oblicz() {
const SA = parseInt(document.getElementById("SA").value);
const SIN = Math.sin(parseInt(SA) * Math.PI / 180);
const COS = Math.cos(parseInt(SA) * Math.PI / 180);

		document.getElementById("KOS").innerHTML = Math.cos(SA * Math.PI / 180) + ' = ' + COS.toFixed(4);
    document.getElementById("SIN").innerHTML = Math.sin(SA * Math.PI / 180) + ' = ' + SIN.toFixed(4);
    document.getElementById("TAN").innerHTML = typeof tan() === 'number' ? tan() + ' = ' + tan().toFixed(4) : tan();

function tan(){ 
	if (SA % 90 == 0){
        if ((SA / 90) % 2 == 0) {
        return  0;
 }
      else{
          return ' <b>Nie istnieje! - &#8734</b> ';
      }
    }
    return Math.tan(Math.PI / 180 * SA);
 }
}

https://jsfiddle.net/26kLd3pj/1/

A tutaj masz w miarę po ludzku, chociaż jeszcze parę poprawek wymaga (na przykład sprawdzenie czy input jest liczbą), ale mi się nie chce.
https://jsfiddle.net/68pug547/1/

MD
Jakich jeszcze poprawek wymaga oprócz sprawdzenia czy input jest liczbą?
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: Właśnie analizuje kod mam pytanie.
Zamiast

Kopiuj
function roundTo(num, decimalPlaces = 4) {
		return Math.round((num + Number.EPSILON) * (10 ** decimalPlaces)) / (10 ** decimalPlaces);

Nie lepiej jest używać

Kopiuj
toFixed(4)

Jest krótszy i bardziej zrozumiały a w dodatku ten sam wynik wychodzi. Mnie uczą na studiach że kod powinien być jak najkrótszy.
Co można użyć zamiast Number.EPSILON?

edytowany 1x, ostatnio: Marta Długa
ŁF
"kod powinien być jak najkrótszy" - źle Cię uczą na studiach. Kod ma być 1) czytelny 2) wydajny 3) tani w utrzymaniu (patrz 1. i 2.) i tworzeniu. Priorytety w tej kolejności. Krótki częściowo zawiera się w punkcie pierwszym, ale jedynie częściowo: wolisz M.s() czy Math.sin()? Wolisz jednoliterowe nazwy zmiennych, czy opisowe (poza ogólnie przyjętymi typu i, e, x), które tłumaczą jakie jest ich przeznaczenie? Ogólnie SOLID (zwłaszcza SRP w temacie czytelnego kodu), KISS i DRY. Wykładowca uczy was złych praktyk, mówi Ci to senior z prawie 20-letnim doświadczeniem.
M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
0
Marta Długa napisał(a):

@m31: Właśnie analizuje kod mam pytanie.

Zamiast

Kopiuj
function roundTo(num, decimalPlaces = 4) {
		return Math.round((num + Number.EPSILON) * (10 ** decimalPlaces)) / (10 ** decimalPlaces);

Nie lepiej jest używać

Kopiuj
toFixed(4)

Jest krótszy i bardziej zrozumiały a w dodatku ten sam wynik wychodzi. Mnie uczą na studiach że kod powinien być jak najkrótszy.
Co można użyć zamiast Number.EPSILON?

Możesz użyć, toFixed.
Tylko tworzy to potworki w stylu 1.0000, zamiast 1.

A to Number.EPSILION to akurat najmniej istotne w całym tym kodzie. Zapobiega to pewnym rzadkim błędom.
Na przykład Math.round(1.005 * 100) / 100 zwraca błędnie 1, gdy powinno 1.01.
Natomiast taka konstrukcja Math.round((1.005 + Number.EPSILON) * 100) / 100 zwraca już poprawnie 1.01

MD
Teraz rozumiem. Mi właśnie o to chodzi żeby wynik był np 1.0000.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: javascript const deg = parseInt(input.value) DEG to liczba wprowadzana przez użytkownika jak SA?

MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: Ja zrobiłam to trochę inaczej co o tym sądzisz? Czy mogę jeszcze tam gdzieś umieścić javascript Number.EPSILON ale bez obliczeń tak jak to robię tofixed?

Kopiuj
<!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 &#186;  &#593; na Sinus &#593;</h3>
            Stopień &#186; &#593; <input type="number" id="SA"><br>
            Sinus &#593;: <span id="SIN">= </span><br><br>
            Cosinus &#593;: <span id="KOS">= </span><br><br>
            Tangens &#593;: <span id="TAN">= </span><br><br>
            <input type="button" value="Oblicz" style="cursor: pointer;" onclick="oblicz()">
            <input type="reset" value="RESETUJ" style="cursor: pointer;" onclick="resetuj()">
        </div>
    </form>

</body>

</html>
Kopiuj
function tan(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return 0;

    } else {
      return ' <b>Nie istnieje! ';
    }

  }
  return Math.tan(Math.PI / 180 * SA).toFixed(4);
}


function oblicz() {
const SA = parseInt(document.getElementById("SA").value);

const TAN = document.getElementById('TAN').value;
document.getElementById('TAN').innerHTML = tan(SA);

const RAD = SA * Math.PI / 180;
const SIN = document.getElementById('SIN').value;
const KOS = document.getElementById('KOS').value;

document.getElementById('SIN').innerHTML = Math.sin(RAD) .toFixed(4);
document.getElementById('KOS').innerHTML = Math.cos(RAD).toFixed(4);

}


function resetuj () {

    document.getElementById('SIN').innerHTML = '';
    document.getElementById('KOS').innerHTML = '';
    document.getElementById('TAN').innerHTML = '';
}

MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Dołączam przelicznik COTANGENS. Pokazuje mi błędny wynik COTANGENSA stopni alfa od 1 do 44 i 90, 270. Co mam źle?

Kopiuj
function tan(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return 0;

    } else {
      return ' <b>Nie istnieje! ';
    }

  }
  return Math.tan(Math.PI / 180 * SA).toFixed(4);
}

function ctg(SA) { 
    return (1 / tan(SA)).toFixed(4); 
}

function oblicz() {
const SA = parseInt(document.getElementById("SA").value);


const TAN = document.getElementById('TAN').value;
document.getElementById('TAN').innerHTML = tan(SA);

const CTAN = document.getElementById('CTAN').value;
document.getElementById('CTAN').innerHTML = ctg(SA);

}

M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
0
Marta Długa napisał(a):

Dołączam przelicznik COTANGENS. Pokazuje mi błędny wynik COTANGENSA stopni alfa od 1 do 44 i 90, 270. Co mam źle?

Od 1 do 44 nie widzę błędu.
Natomiast dla reszty musisz przewidzieć dwa przypadki.
Tam gdzie tangens zwracał 0, tam cotanges będzie zwracał nie istnieje, czy tam nieskończoność. Dzielisz coś przez zero.
A tam gdzie tangens zwracał Nie istnieje, cotangens będzie 0. Dzielisz przez coś, co dąży do nieskończoności.

A tak w ogóle, sama piszesz to tak dla siebie? Czy kampania wrześniowa na uczelni?

edytowany 1x, ostatnio: m31
Zobacz pozostałe 3 komentarze
MD
Po prostu chce się nauczyć JavaScript.
S9
@Marta Długa: mi po prostu chodzi o to że jeśli jest kampania wrześniowa to raczej nie w ostatnim tygodniu wrzesnia.
MD
Zdałam w czerwcu. Sama się uczę.
S9
@Marta Długa: ech, nie rozumiesz o co m chodzi. Chodzi mi nie o Ciebie konkretnie, tylko o to jak wygląda na uczelniach.
MD
aha u mnie na uczelni już poprawki (kampania) wrześniowa skończyły się.
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@m31: Do 44 daje złe wyniki. Co jest źle?

Kopiuj
function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

  }
  return 1 / tan(SA);
}
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Postów:3457
4

Pierwsze co to czy rozumiesz co tu się dzieje?

Kopiuj
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

Ctg ma gdzie indziej asymptoty. Zerknij na wykresy ctg i tg.
Wiesz co to operator modulo - %? Spróbuj to opisać sobie po kolei na kartce i podstaw sobie liczby. W programowaniu jest taka metoda "na kaczuszkę" czy tam "na misia", bierzesz misia i tłumaczysz mu jak działa Twój program linijka po linijce. Pewnie wtedy zobaczysz gdzie jest błąd.

MD
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Byłam i jestem słaba z matematyki.
SA % 90 == 0 - Reszta z dzielenia SA przez 90 jest porównywane do 0.
SA / 90 - SA dzielone przez 90
SA / 90 % 2 == 0 - Reszta z dzielenia wyniku przez 2 jest porównywane do 0
Czy dobrze opisałam?

MD
Tylko nie wie wiem jaka jest różnica pomiędzy = a == a ===
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

ctg = 1 / tg
Zgadza się?
Nie wiem gdzie umieścić to 1.

MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Już mi prawie wyszło tylko że jak użytkownik podaje liczbę 1 to wynik pokazuje 0.0175 zamiast -0.0175.

Kopiuj
function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

  }
  return Math.tan(Math.PI / 180 * SA).toFixed(4);
}

function oblicz() {
const SA = parseInt(document.getElementById("SA").value);

const CTAN = document.getElementById('CTAN').value;
document.getElementById('CTAN').innerHTML = ctg(SA);

}

II sposób jak użytkownik podaje liczbę 1 to wynik pokazuje 57.2900 zamiast -0.0175.

Kopiuj
function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

  }
  return 1 / (Math.tan(Math.PI / 180 * SA));
}

function oblicz() {
const SA = parseInt(document.getElementById("SA").value);

const CTAN = document.getElementById('CTAN').value;
document.getElementById('CTAN').innerHTML = ctg(SA).toFixed(4);

}
edytowany 3x, ostatnio: Marta Długa
MD
MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

@Marta Długa: Pomóżcie błagam nie mam zielonego pojęcia jak to zrobić.

MD
  • Rejestracja:ponad 7 lat
  • Ostatnio:10 miesięcy
  • Postów:158
0

Błagam powiedźcie co mam źle.

M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
1

No ale przecież cotangens jednego stopnia to jest w przybliżeniu 57, a nie 0.0175 ani tym bardziej -0.0175.

Skąd ty bierzesz te wartości?

Nawet ctg od jednego radiana to nie jest 0.0175, tylko 0.64.

W tej funkcji

Kopiuj
function ctg(SA) {
  if (SA % 90 == 0) {
    if ((SA / 90) % 2 == 0) {
      return ' <b>Nie istnieje! ';

    } else {
      return 0;
    }

  }
  return 1 / (Math.tan(Math.PI / 180 * SA));
}

Nie masz błędu.

edytowany 1x, ostatnio: m31
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:9 dni
1

Marta, jeśli chcesz, żebyśmy to napisali za Ciebie, to pomyliłaś fora. Jeśli zaś chcesz to napisać sama, to mam wrażenie, że brakuje Ci zarówno podstawowych umiejętności programowania (tak bardzo podstawowych, że mylisz przypisanie funkcji z przypisaniem wyniku wywołania funkcji), jak i podstaw trygonometrii. Dokształć się (opanowanie absolutnych podstaw jednego i drugiego dla dorosłego człowieka to kilka dni), wróć, na pewno pomożemy.


ŁF
No dobra, lubię być czasem niekonsekwentny: https://jsfiddle.net/bh2u49xm/
MD
Chce się nauczyć programowania w JavaScript, ale nie umiem połączyć wiedzy teoretycznej z praktyczną.
LI
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:2
0

Wiesz jak zamienić kąt na radiany?

MD
kąt (stopeń) * pi /180 dobrze?
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)