7. Napisz program, w którym zdefiniowane początkowo dwie zmienne oznaczają kolejno maksymalną
liczbę punktów możliwych do uzyskania na sprawdzianie oraz liczbę punktów, które otrzymał jakiś
uczeń. Program ma wyświetlić na ekranie ocenę, jaką otrzymał ten uczeń. Zależność otrzymanej
oceny od procentowego wyniku uzyskanego przez ucznia jest następująca (uzyskany przez ucznia
wynik w procentach należy każdorazowo zaokrąglać w dół do pełnych procentów):
0 - 29%: ocena niedostateczna,
30 - 49%: ocena dopuszczająca,
50 - 69%: ocena dostateczna,
70 - 89%: ocena dobra,
90 - 98%: ocena bardzo dobra,
99 - 100%: ocena celująca.
Przetestuj działanie programu dla kilku różnych wartości.
Przykładowy wynik działania programu:
Maksymalna liczba punktów do uzyskania: 47
Liczba punktów uzyskana przez ucznia: 31
Uczeń otrzymał ocenę dostateczną.
Mój kod:
int max=47, ucz=14;
System.out.println("Maksymalna liczba punktow do uzyskania: "+max);
System.out.println("Liczba punktow uzyskana przez ucznia: "+ucz);
if((double)ucz/max >= 0.99)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene celujaca.");
}
if((double)ucz/max < 0.99 && (double)ucz/max >= 0.9)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene bardzo dobra.");
}
if((double)ucz/max < 0.9 && (double)ucz/max >= 0.7)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene dobra.");
}
if((double)ucz/max < 0.7 && (double)ucz/max >= 0.5)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene dostateczna.");
}
if((double)ucz/max < 0.5 && (double)ucz/max >= 0.3)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene dopuszczajaca.");
}
if((double)ucz/max < 0.3 && (double)ucz/max >= 0)
{
System.out.println("Tyle procent otrzymal uczen: "+(double)ucz/max*100);
System.out.println("Uczen otrzymal ocene niedostateczna.");
}
Kod z kryteriów:
int max = 47;
int punkty = 31;
double proc; // zmienna, w której przechowywany będzie wynik procentowy
System.out.println("Maksymalna liczba punktów do uzyskania: " + max);
System.out.println("Liczba punktów uzyskana przez ucznia: " + punkty);
proc = 100*(double)punkty/max;
if (proc >= 99) {
System.out.println("Uczeń otrzymał ocenę celującą.");
}
else if (proc >= 90) {
System.out.println("Uczeń otrzymał ocenę bardzo dobrą.");
}
else if (proc >= 70) {
System.out.println("Uczeń otrzymał ocenę dobrą.");
}
else if (proc >= 50) {
System.out.println("Uczeń otrzymał ocenę dostateczną.");
}
else if (proc >= 30) {
System.out.println("Uczeń otrzymał ocenę dopuszczającą.");
}
else {
System.out.println("Uczeń otrzymał ocenę niedostateczną.");
}
W jaki sposób kod z kryteriów zaokrągla wynik procentowy do jedności w dół?
I czy mój kod też spełnia wymagania tego zadania?
Nie ma tam stricte zaokrąglania, ale warunki w else ifach są tak zapisane, że wszystko się zgadza, tzn. np. jeśli wynik ucznia to było 69,8%, to uczeń i tak dostaje wtedy ocenę dostateczną, bo jego wynik nie łapie się jeszcze do oceny dobrej (to 69,8 nie jest zaokrąglane do 70).
Wygląda na to, że Twój kod też jest w porządku :)