Mam problem i chciałem stworzyć algorytm, aby go rozwiązać. Ale zastanawiam się, czy moje obliczenia są prawidłowe, czy powinienem je poprawić. To jest problem algo:
Utwórz algorytm, który będzie obliczany dla oceny ucznia. Ocena jest równa jednej trzeciej egzaminu pomaturalnego i dwóch trzecich egzaminu głównego. Wydrukuj ocenę ucznia.
Algorytm, który utworzyłem:
- Czytaj oceny.
- Oblicz średnią i średnią ocenę, używając następującej formuły:
grade = 1/3 * minor exam + 2/3 * major exam
. - wydrukuj ocenę
Nie wiem, czy moja formuła jest poprawna.
Odpowiedzi:
1 dla odpowiedzi № 1Nie wiem, czy moja formuła jest poprawna.
Matematyczne - to jest rzeczywiście formuła opisywanego problemu. Należy jednak pamiętać, że w wielu językach 1/3 * minor exam + 2/3 * midterm exam
będą przetwarzane jako operacje arytmetyczne w liczbach całkowitych, a to prowadzi do błędnej odpowiedzi (zawsze 0).
Powodem jest przy obliczaniu wartość arytmetyczna całkowita a/b
, zwrócona odpowiedź brzmi floor(a/b)
(gdzie floor(.)
jest najbliższą nie większą liczbą całkowitą).
Aby się upewnić, że tak się nie stanie - koniecznieKonwertuj swoją liczbę na zmiennoprzecinkowe i używaj arytmetyki zmiennoprzecinkowej - podczas gdy mają również problemy z niedokładnością, rzadko jest to problem, gdy mamy do czynienia z tak małą formułą i stosunkowo niskimi liczbami (w wartości bezwzględnej).