-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1055_Seminarul12_Maria_Minoiu.cpp
156 lines (148 loc) · 4.1 KB
/
1055_Seminarul12_Maria_Minoiu.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//seminarul 12 - 20.12.2018
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Echipa {
string nume;
int nrJucatori;
int* varsteJucatori;
public:
Echipa() {
this->nume = "Necunoscut";
this->nrJucatori = 0;
this->varsteJucatori = NULL;
}
Echipa(string nume, int nrJucatori, int* varsteJucatori) {
this->nume = nume;
this->nrJucatori = nrJucatori;
this->varsteJucatori = new int[nrJucatori];
for (int i = 0; i < this->nrJucatori; i++) {
this->varsteJucatori[i] = varsteJucatori[i];
}
}
Echipa(Echipa& e) { //constr de copiere
this->nume = e.nume;
this->nrJucatori = e.nrJucatori;
this->varsteJucatori = new int[e.nrJucatori];
for (int i = 0; i < e.nrJucatori; i++) {
this->varsteJucatori[i] = e.varsteJucatori[i];
}
}
Echipa operator =(Echipa& ec) {
this->nume = ec.nume;
this->nrJucatori = ec.nrJucatori;
if(this->varsteJucatori!=NULL)
delete[]this->varsteJucatori;
this->varsteJucatori = new int[ec.nrJucatori];
for (int i = 0; i < ec.nrJucatori; i++) {
this->varsteJucatori[i] = ec.varsteJucatori[i];
}
return *this;
}
~Echipa() {
if (this->varsteJucatori != NULL)
delete[]this->varsteJucatori;
}
void setNume(string nume) {
this->nume = nume;
}
string getNume() {
return nume;
}
void setNrJucatori(int nrJucatori) {
this->nrJucatori = nrJucatori;
}
int getNrJucatori() {
return nrJucatori;
}
void setVarstaJucatori(int nrJucatori,int* varstaJucatori) {
if (varsteJucatori != NULL)
delete[]this->varsteJucatori;
this->varsteJucatori = new int[nrJucatori];
for (int i = 0; i < nrJucatori; i++) {
this->varsteJucatori[i] = varsteJucatori[i];
}
}
int* getVarsteJucatori() {
if (varsteJucatori != NULL)
return varsteJucatori;
else
throw "Nu avem jucatori";
}
friend ostream& operator <<(ostream& out, const Echipa &e) {
out <<"Numele echipei: "<< e.nume << endl;
out <<"Numarul jucatorilor: "<<e.nrJucatori << endl;
out <<"Varstele jucatorilor: ";
for (int i = 0; i < e.nrJucatori; i++) {
out << e.varsteJucatori[i] << " ";
}
return out;
}
friend istream& operator >>(istream& in, Echipa &e) {
cout << "Numele echipei: ";
in>>e.nume;
cout << "Numarul jucatorilor: ";
in >> e.nrJucatori;
if (e.varsteJucatori != NULL)
delete[]e.varsteJucatori;
e.varsteJucatori= new int[e.nrJucatori];
cout << "Varstele jucatorilor: " << endl;
for (int i = 0; i < e.nrJucatori; i++) {
cout << "Introduceti varsta jucatorului " << i<<": ";
in>>e.varsteJucatori[i];
cout << endl;
}
return in;
}
//este indicat ca operatorii pentru lucrul cu fisiere sa se faca separat
friend fstream& operator <<(fstream& out, Echipa e) {
out << e.nume << ",";
out << e.nrJucatori << ",";
for (int i = 0; i < e.nrJucatori; i++) {
out << e.varsteJucatori[i] << ",";
}
out << endl;
return out;
}
friend fstream& operator >>(fstream& in, Echipa &e) {
in >> e.nume;
in >> e.nrJucatori;
if (e.varsteJucatori != NULL)
delete[]e.varsteJucatori;
e.varsteJucatori = new int[e.nrJucatori];
for (int i = 0; i < e.nrJucatori; i++) {
in >> e.varsteJucatori[i];
}
return in;
}
};
void main() {
//Echipa e("NumeEchipa", 2, new int[2]{ 21,24 });
//fstream f("fisier.txt", ios::out); //construim un fisier
//f << e; //se apeleaza operatorul << , dar nu se afiseaza pe monitor, se afiseaza in fisier
//f.close();
//Echipa e;
//fstream g("fisier.txt", ios::in);
////ifstream g("fisier.txt");
//g>> e;
//g.close();
//cout << e;
/*fstream f("fisier.csv", ios::out);
Echipa e1("nume", 2, new int[2]{ 21,24 });
Echipa e2("numeech", 3, new int[3]{ 21,24,22});
f << e1;
f << e2;
f.close();*/
////fisier binar
//Echipa e("nume", 2, new int[2]{ 21,24 });
//fstream f("fisier.bin", ios::out | ios::binary);
//f.write((char*)&e, sizeof(Echipa));
//f.close();
Echipa e;
fstream f("fisier.bin", ios::in | ios::binary);
f.read((char*)&e, sizeof(Echipa));
cout << e;
}
// csv = comma separrated value
//TEMA: look up serializare si deserializare