Mam taki mały problem: muszę napisać program który będzie liczył średnią z ocen, to znaczy średnią normalną i średnią ważoną (ważoną tzn.waga oceny np.sprawdzian waga 3,odpowiedź-2, a praca domowa 1)
I niestety nie mam zielonego pojęcia jak się za to zabrać.
Program ma działać na systemie Windows (chociaż nie wiem czy to ma jakieś znaczenie)
Średnia może być powyżej 6 Przyjmując, że otrzymujesz same oceny celujące i do tego punkty dodatkowe to jest taka możliwość. Tylko tutaj chyba nie było mowy o tych punktach. Ale jeśli chce komuś się bawić to można jeszcze to zmienić:)
public class Ocena {
final private int ocena;
final private float waga;
public Ocena(final int ocena) throws Exception{
this(ocena, 1);
}
public Ocena(final int ocena, final float waga) throws Exception{
if (waga > 0)
this.waga = waga;
else
throw new Exception("Waga musi być większa od 0");
if(ocena >=1 && ocena <= 6)
this.ocena = ocena;
else
throw new Exception("Ocena może mieć wartości od 1 do 6");
}
public static float srednia(final Ocena[] oceny){
float suma = 0f;
float wagi = 0f;
for(Ocena ocena:oceny){
suma += ocena.waga*ocena.ocena;
wagi += ocena.waga;
}
return suma/wagi;
}
}
a bez kombinowania do jednej zmiennej dodajesz kolejne wartości ocena*waga, do drugiej same wagi, na koniec je dzielisz i masz średnią (zresztą wzory masz już podane)
dla średniej arytmetycznej wagi ustawiasz zawsze na 1
Walidację parametrów ładniej jest robić na początku metody/konstruktora. Wtedy wyjątki związane z ich niepoprawnymi wartościami są oddzielone od właściwego kodu metody, jest to czytelniejsze niż takie pomieszanie.
Skoro to ma być podejście obiektowe, to czemu metoda obliczająca średnią znajduje się w klasie Ocena? Ponadto metody powinno nazywać się wyrażeniami czasownikowymi, a nie rzeczownikami.
matzu , podał ci gotowca, którego wystarczy ściągnąć wpisać dane i sam ci policzy
Natomiast cayman3_11 , podał ci kod w javie który musisz odpalić za pomocą kompilatora np jdk. Sam ci nie doradzę które są najlepsze bowiem z tego języka jestem zielony ;]
Co do ostatniej wypowiedzi to nie była ona skierowana do ciebie, ja sam ledwo rozumiem zdania pisane takim językiem ;]
Jeśli chcesz kod w danym języku programowania raczej powinieneś podaj jaki to język ;p
Ja polecam c++ i visual c++ jako kompilator, albo excela który przecież do takich zadań służy ;]
I wtedy jak to skompiluje to dostanę program czy za każdym razem będę musiał to uruchamiać tym programem,bo będę to potrzebował uruchomić w szkole, a tam nie będę miał tego oprogramowania?