-
Notifications
You must be signed in to change notification settings - Fork 0
/
rank.cpp
89 lines (77 loc) · 1.38 KB
/
rank.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "head.h"
#include <fstream>
#include <algorithm>
#include "Rank.h"
void Rank::loadRankFromFile()
{
//load data in format "scrore name"
std::fstream in;
in.open(_src, std::ios::in);
if (!in.is_open()) //create file if doesn't exist
{
in.clear();
in.open(_src, std::ios::out);
in.close();
}
else
{
int val = 0;
std::string get = "", name = "";
while (std::getline(in, get))
{
val = atoi(get.c_str());
name = get.substr(get.find(" ") + 1);
Data temp;
temp._name = name;
temp._val = val;
_data.push_back(temp);
}
}
return;
}
void Rank::saveRankToFile()
{
std::fstream in;
in.open(_src, std::ios::out);
for (int unsigned i = 0;i < _data.size();i++)
{
Data temp = _data.at(i);
in << temp._val << " " << temp._name << std::endl;
}
return;
}
void Rank::addToRank(int val, std::string name)
{
if (val > _data.at(_data.size() - 1)._val)
{
Data temp;
temp._name = name;
temp._val = val;
_data.push_back(temp);
sortRank();
}
return;
}
void Rank::sortRank()
{
std::sort(_data.begin(), _data.end(), Data::compData);
while (_data.size() > 10) // przechowuje tylko 10 najlepszych wyników!!!!
_data.pop_back();
return;
}
int Rank::getSizeRank()
{
return _data.size();
}
std::vector<Rank::Data>& Rank::getRank()
{
return _data;
}
Rank::Rank(std::string src) : _src(src)
{
loadRankFromFile();
sortRank();
}
Rank::~Rank()
{
}