Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************/
- /********************/
- /* Catalog.h */
- /********************/
- /********************/
- /********************/
- #pragma once
- #include <string>
- #include <map>
- #include <vector>
- using namespace std;
- //completati in acest punct cu ce definiti considerati ca sunt necesare pentru ca proiectul sa compileze
- class Catalog
- {
- map<string, Student> Studenti;
- map<string, int> Materii;
- public:
- // 3p - daca exista deja returneaza false
- // verificarea se face cu ignore case pentru numele studentului
- bool AddStudent(string name) {
- map<string, Student>::iterator it;
- it = this->Studenti.find(name);
- if (it == this->Studenti.end()) {
- return false;
- }
- }
- // 1p - adauga o materie si numarul de credite asociat
- // daca materia exista deja, returneaza false si nu updateaza creditele
- // returneaza false si daca numarul de credite e mai mic decat 1
- bool AddMaterie(string name, int credite) {
- if (credite < 1) return false;
- map<string, int>::iterator it;
- it = this->Materii.find(name);
- if (it == this->Materii.end()) {
- this->Materii[name] = credite;
- }
- else return false;
- }
- // 1p - seteaza creditele la o materie (materia trebuie sa existe)
- // returneaza false si daca numarul de credite e mai mic decat 1
- bool operator() (string materie, int credite) {
- if (credite < 1) return false;
- map<string, int>::iterator it;
- it = this->Materii.find(materie);
- if (it != this->Materii.end()) {
- this->Materii[materie] = credite;
- }
- else return false;
- }
- // 4p - returneaza -1 daca studentul nu exista
- // -2 daca materia nu exista
- // -3 daca nici studentul nici materia nu exista
- // 0 data studentul exista dar nu are nota la materie
- // sau nota studentului
- // verificarea numelui studentului si a materiei se face cu ignore case
- int GetNota(string student, string materie) {
- return 0;
- }
- // 1p - returneaza referinta catre un student
- //Student& operator[](string nume) {
- // return *0;
- //}
- // 4p - returneaza cel mai bun student dupa media ponderata la toate materiile
- // daca cineva nu are o nota la o materie, se considera ca are 0 credite acolo
- Student* GetBestStudent(int& credite) {
- /*map<string, int>::iterator it;
- for (auto i : Studenti) {
- int media[i.size()];
- for (auto j : Note) {
- media[i] += Note[j->second];
- }
- media[i] /= i.size();
- }
- int maxim = media[0];
- for (int i = 1; i < i.size(); i++)
- if (maxim < media[i])
- maxim = media[i];
- return i;*/
- }
- // 2p - returneaza lista de studenti
- // pair-ul contine obiectul student si media la materia in cauza
- vector<pair<Student, int>> GetStudentList(string materie) {
- }
- };
- /********************/
- /********************/
- /* Student.h */
- /********************/
- /********************/
- /********************/
- #pragma once
- #include <map>
- #include <string>
- using namespace std;
- //completati in acest punct cu ce definiti considerati ca sunt necesare pentru ca proiectul sa compileze
- class Student
- {
- // Numele studentului
- string Name;
- // map cu notele studentului (Cheia este numele materiei, iar valoarea este nota)
- // map<nume_materie,nota_la_materie>
- map<string, int> Note;
- public:
- // 2p - toti 3 constructorii
- Student() {
- };
- Student(const char *name) {
- this->Name = name;
- }
- Student(const Student &student) {
- }
- // 1p
- string GetName() {
- //return this->Name;
- return 0;
- }
- // 1p - returneaza true daca are nota la materia in cauza, false altfel
- bool operator() (string numeMaterie) {
- map<string, int>::iterator it;
- it = Note.find(numeMaterie);
- if (it == Note.end())
- return false;
- else
- {
- if (it->second == 0)
- return false;
- else return true;
- }
- }
- // 1p - returneaza nota de la materie (se prespune ca materia exista)
- int operator[] (string numeMaterie) {
- map<string, int>::iterator it;
- it = Note.find(numeMaterie);
- return it->second;
- }
- // 2p - seteaza nota pentru o materie
- // daca materie nu exista o adauga
- // returneaza false daca nota este invalida (<1 sau >10)
- bool SetNota(string materie, int nota) {
- if (nota < 1 || nota > 10) return false;
- map<string, int>::iterator it;
- it = Note.find(materie);
- if (it == Note.end()) {
- Note[materie] = nota;
- return true;
- }
- else {
- return false;
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement