Witam, mam do napisania program za pomocą funkcji sprawdzający czy z podanych 3 boków da się zbudować trójkąt jeśli tak to jaki? Równoramienny, równoboczny, prostokątny czy różnoboczny. Zacząłem ale działa on poprawnie tylko dla boków trójkąta równobocznego. Czy dostanę jakąś radę co muszę poprawić?
trojkat.txt (959 bajtów)
Błąd jest gdzieś w zagnieżdżeniu na sprawdzanie w kolejności:
równoboczny równoramienny prostokątny różnoboczny
Niby zagnieżdżasz za mocno warunki a powinny być na tym samym poziomie, bo tak to się widać przerywa w trakcie i wyświetla “nie da się”.
var A=5; var B=6; var C=7;
if (((A + B) > C) && ((A + C > B)) && ((C + B) > A)) {
if ((A == B) && (A == C)) {
console.log("Trójkąt jest równoboczny.")
} else if ((A == B) || (A == C) || (B == C)) {
console.log("Trójkąt jest równoramienny.")
} else if ((A * A + B * B == C * C) || (B * B + C * C == A * A) || (A * A + C * C == B * B)) {
console.log("Trójkąt jest prostokątny.")
} else
console.log("Trójkąt jest różnoboczny.")
} else {
console.log("Z podanych boków nie można stworzyć trójkąta")
}
Czyli użyj else if
zamiast kolejnych if
zagnieżdżonych w if
.
https://www.w3schools.com/js/js_if_else.asp
W sumie to drugim problemem jest prompt, robi z zmiennych tekst:
var a=prompt("Podaj długość boku A" , "")
var b=prompt("Podaj długość boku B" , "")
var c=prompt("Podaj długość boku C" , "")
var A = parseFloat(a);
var B = parseFloat(b);
var C = parseFloat(c);
Chyba, że to typowe tylko dla Firefox, a Chrome / IE / Edge / Safari mają jakąś wsteczną kompatybilność.
No chyba, że program ma rozpoznać trójkąt równoboczny również jako równoramienny wtedy po prostu dla tych warunków potrzebne są dwa niezagnieżdżone testy if
.
Dzięki za podpowiedź. Plik ostatecznie wygląda tak i działa każdy przypadek. Trojkat.txt (988 bajtów)
To jeszcze zostaje nauka wcięć w kodzie JS (i każdym innym na etapie pisania).
Chyba, że po tym niby wykładowca wykrywa gotowca…