Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Complexitatea algoritmului: O(n^2), unde n este numarul de elevi
- #include <iostream>
- #include <fstream>
- void alocareMemorie(int**& matPrietenie, int nrElevi)
- {
- matPrietenie = new int* [nrElevi];
- for (int index = 0; index < nrElevi; ++index)
- matPrietenie[index] = new int[nrElevi];
- }
- void citire(int**& matPrietenie, int& nrElevi)
- {
- std::ifstream fin("matrice.in");
- fin >> nrElevi;
- alocareMemorie(matPrietenie, nrElevi);
- for (int i = 0; i < nrElevi; ++i)
- for (int j = 0; j < nrElevi; ++j)
- fin >> matPrietenie[i][j];
- }
- /*
- void prieteni(int** matPrietenie, int nrElevi, int elevCurent)
- {
- std::cout << "Prietenii elevului " << elevCurent + 1 << ": ";
- for (int elev = 0; elev < nrElevi; ++elev)
- if (elevCurent != elev && matPrietenie[elev][elevCurent] == 1 && matPrietenie[elevCurent][elev] == 1)
- std::cout << elev + 1 << ' ';
- std::cout << "\n";
- }
- */
- int numarPrieteni(int** matPrietenie, int nrElevi, int elevCurent)
- {
- int nrPrieteni = 0;
- for (int elev = 0; elev < nrElevi; ++elev)
- if (elevCurent != elev && matPrietenie[elev][elevCurent] == 1 && matPrietenie[elevCurent][elev] == 1)
- nrPrieteni++;
- return nrPrieteni;
- }
- int maximPrieteni(int** matPrietenie, int nrElevi)
- {
- int maxPrieteni = 0;
- for (int elev = 0; elev < nrElevi; ++elev)
- if (maxPrieteni < numarPrieteni(matPrietenie, nrElevi, elev))
- maxPrieteni = numarPrieteni(matPrietenie, nrElevi, elev);
- return maxPrieteni;
- }
- bool esteAgreat(int** matPrietenie, int nrElevi, int elevCurent)
- {
- for (int elev = 0; elev < nrElevi; ++elev)
- if (elevCurent != elev && matPrietenie[elev][elevCurent] == 1)
- return true;
- return false;
- }
- void eleviCuNrMaximDePrieteni(int** matPrietenie, int nrElevi)
- {
- int maxim = maximPrieteni(matPrietenie, nrElevi);
- std::cout << "a) Elevul (elevii) care are (au) cei mai multi prieteni si cati prieteni are (au): \n";
- for (int elev = 0; elev < nrElevi; ++elev)
- if (numarPrieteni(matPrietenie, nrElevi, elev) == maxim)
- std::cout << "Elevul " << elev + 1 << " are " << maxim << " prieteni. \n";
- std::cout << "\n";
- }
- void eleviCareNuAuPrieteni(int** matPrietenie, int nrElevi)
- {
- std::cout << "b) Elevul (elevii) care nu are (au) niciun prieten: \n";
- for (int elev = 0; elev < nrElevi; ++elev)
- if (numarPrieteni(matPrietenie, nrElevi, elev) == 0)
- std::cout << "Elevul " << elev + 1 << " nu are niciun prieten. \n";
- std::cout << "\n";
- }
- void eleviCareNuSuntAgreati(int** matPrietenie, int nrElevi)
- {
- std::cout << "c) Elevul (elevii) care nu este (sunt) agreat (agreati) de nimeni: \n";
- for (int elev = 0; elev < nrElevi; ++elev)
- if (!esteAgreat(matPrietenie, nrElevi, elev))
- std::cout << "Elevul " << elev + 1 << " nu este agreat de nimeni. \n";
- }
- int main()
- {
- int** matPrietenie, nrElevi;
- citire(matPrietenie, nrElevi);
- /*
- for (int elev = 0; elev < nrElevi; ++elev)
- prieteni(matPrietenie, nrElevi, elev);
- std::cout << "\n";
- */
- eleviCuNrMaximDePrieteni(matPrietenie, nrElevi);
- eleviCareNuAuPrieteni(matPrietenie, nrElevi);
- eleviCareNuSuntAgreati(matPrietenie, nrElevi);
- for (int index = 0; index < nrElevi; ++index)
- delete[]matPrietenie[index];
- delete[]matPrietenie;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement