Pagini recente » Cod sursa (job #2964557) | Cod sursa (job #3165592) | Cod sursa (job #126554) | Cod sursa (job #2064852) | Cod sursa (job #1547390)
#include <algorithm>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <utility>
#include <string>
#include <vector>
using namespace std;
struct Elev {
Elev(string _nume = "", string _liceu = "", int _medie = 0): nume(_nume), liceu(_liceu), medie(_medie) {}
void setNume(string newNume) { nume = newNume; }
string getNume() const { return nume; }
void setLiceu(string newLiceu) { liceu = newLiceu; }
string getLiceu() const { return liceu; }
void setMedie(int newMedie) { medie = newMedie; }
int getMedie() const { return medie; }
bool operator<(const Elev &arg) { return medie < arg.getMedie(); }
private:
string nume;
string liceu;
int medie;
};
istream& operator>>(istream& f, Elev &arg) {
string nume;
string liceu;
int medie;
f >> nume >> liceu >> medie;
arg.setNume(nume);
arg.setLiceu(liceu);
arg.setMedie(medie);
return f;
}
ostream& operator<<(ostream& g, const Elev &arg) {
g << arg.getNume();
return g;
}
class Problem2Solver {
vector <Elev> elevs;
void Read(istream& f = cin) {
int n = 0;
f >> n;
elevs.resize(n);
for (int i = 0; i < n; ++ i)
f >> elevs[i];
}
void ComputeAndPrint(ostream& g = cout) {
int maximum = 0;
double average = 0;
for (int i = 0; i < static_cast <int>(elevs.size()); ++ i) {
if (elevs[i].getMedie() > maximum)
maximum = elevs[i].getMedie();
average += elevs[i].getMedie();
}
average /= static_cast <int>(elevs.size());
g << "Media tuturor elevilor este " << average << ".\n";
g << "Elevii cu cea mai mare nota sunt:\n" << fixed << setprecision(2);
for (int i = 0; i < static_cast <int>(elevs.size()); ++ i)
if (elevs[i].getMedie() == maximum)
g << elevs[i].getNume() << '\n';
}
public:
Problem2Solver() {}
void Solve(istream& f = cin, ostream& g = cout) {
Read(f);
ComputeAndPrint(g);
}
};
class Factorizer {
int n;
vector <pair <int, int> > factors;
void Read(istream& f = cin) {
f >> n;
}
void ComputeAndPrint(ostream& g = cout) {
for (int i = 2; i <= n; ++ i)
if (n % i == 0) {
factors.push_back(make_pair(i, 0));
while (n % i == 0) {
++ factors.back().second;
n /= i;
}
}
g << "Descompunerea lui " << n << " este:\n";
for (vector <pair <int, int> > :: iterator it = factors.begin(); it != factors.end(); ++ it)
g << it->first << ' ' << it->second << '\n';
}
public:
Factorizer() {}
void Solve(istream& f = cin, ostream& g = cout) {
Read(f);
ComputeAndPrint(g);
}
};
class Problem8Solver {
};
int main()
{
Factorizer fact;
//ifstream cin("input.txt");
//ofstream cout("output.txt");
fact.Solve();
//cin.close();
//cout.close();
return 0;
}