Sari la conținut
Zece la Info
Probleme

Sistemul CatalogScolar (Nota + Elev + Profesor + Clasa + CatalogScolar)

Facultate 2000 ms 64 MB#oop#clasa#sistem#compunere

Scrieti CINCI clase care modeleaza catalogul unei scoli, organizate ierarhic (fiecare clasa 'contine' obiecte din clasa anterioara):

  1. Nota - o nota la o materie: materie (fara spatii), valoare (intreg 1-10).
  • constructor(materie, valoare); getMaterie(); getValoare()
  1. Profesor - nume (fara spatii), materie predata.
  • constructor(nume, materie); getNume(); getMaterie()
  1. Elev - nume, id intregintreg, si o colectie interna de obiecte Nota.
  • constructor(nume, id)
  • getNume(), getId()
  • adaugaNota(materie, valoare) - adauga o Nota DOAR daca 1<=valoare<=10; returneaza adevarat/fals
  • mediaGenerala() - media tuturor notelor (0 daca elevul nu are nicio nota)
  • mediaLaMaterie(materie) - media notelor doar la materia data (-1 daca elevul nu are nicio nota la acea materie)
  1. Clasa - nume (ex. 9A), si o colectie interna de obiecte Elev (NU doar id-uri - obiectele Elev efective).
  • constructor(nume)
  • getNume()
  • adaugaElev(Elev e) - adauga elevul in colectia interna
  • gasesteElev(id) - returneaza elevul cu acel id (presupus ca exista)
  • mediaClasei() - media generala a TUTUROR elevilor din clasa (0 daca nu are elevi)
  • elevulCuMediaMaxima() - returneaza numele elevului cu cea mai mare mediaGenerala() (in caz de egalitate, primul adaugat); "-" daca nu are elevi
  • numarElevi()
  1. CatalogScolar - orchestreaza mai multe obiecte Clasa si Profesor.
  • constructor fara parametri
  • adaugaClasa(nume) - creeaza o Clasa noua si returneaza id-ul ei (0,1,2,...)
  • adaugaProfesor(nume, materie) - adauga un Profesor in colectia interna
  • numarProfesoriLaMaterie(materie) - cati profesori predau acea materie
  • adaugaElevInClasa(idClasa, nume, idElev) - creeaza un Elev si il adauga in Clasa cu id-ul idClasa (delegare catre Clasa.adaugaElev)
  • adaugaNotaElev(idClasa, idElev, materie, valoare) - gaseste elevul (prin Clasa.gasesteElev) si ii adauga o nota (delegare catre Elev.adaugaNota); returneaza rezultatul lui adaugaNota
  • mediaElev(idClasa, idElev) - media generala a elevului cu id-ul idElev din clasa idClasa (delegare prin Clasa.gasesteElev catre Elev.mediaGenerala)
  • mediaElevLaMaterie(idClasa, idElev, materie) - media elevului la o materie data (delegare similara catre Elev.mediaLaMaterie)
  • mediaClasa(idClasa) - delegare catre Clasa.mediaClasei
  • topElevClasa(idClasa) - delegare catre Clasa.elevulCuMediaMaxima
  • clasaCuMediaMaxima() - returneaza numele clasei (dintre toate clasele adaugate) cu cea mai mare mediaClasei(); "-" daca nu exista nicio clasa
Date de intrare
Codul vostru este integrat intr-un program de test care citeste comenzi si apeleaza metodele voastre.
Date de iesire
Fiecare comanda produce o linie de output.
Restrictii
Cel mult 20 de clase, 50 de elevi per clasa, 50 de note per elev intr-un test.

Exemple

Exemplul 1

Intrare

8
ADDCLASA 9A
ADDELEV 0 Popescu 1
ADDELEV 0 Ionescu 2
NOTA 0 1 Matematica 8
NOTA 0 1 Matematica 10
NOTA 0 2 Romana 6
MEDIAELEV 0 1
MEDIAELEV 0 2

Iesire

0
OK
OK
1
1
1
9.00
6.00

Vrei să rezolvi problema?

Creează-ți un cont gratuit ca să scrii cod în editor, să trimiți soluții la evaluator și să vezi indicațiile.