-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbruktting.cpp
171 lines (145 loc) · 3.54 KB
/
bruktting.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/**
* Fil for innmaten i public funksjoner i klassen BruktTing
*
* @file bruktting.cpp
* @author Mathilde, Oliver og Ulrik, NTNU
*/
#include "bruktting.h"
#include "nyting.h"
#include "const.h"
#include "LesData3.h"
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector <string> kvaliteter ={"Som ny", "Pent brukt", "Brukt", "Godt brukt", "Sliten"};
/**
* Constructor for classen BruktTing ved opprettelse av et objekt ved lesing fra fil
*
* @see BruktTing::hentKvalitet(...)
*/
BruktTing::BruktTing(ifstream & inn) : NyTing(inn) {
int alderen;
char k;
inn >> alderen; inn.ignore(1);
inn >> k; inn.ignore();
alder = alderen;
kvaliteten = BruktTing::hentKvalitet(k);
}
/**
* Constructor for opprettelse av et objekt av klassen BruktTing
*
* @see NyTing::NyTing(...)
*/
BruktTing::BruktTing(int tingNr, int selgerensNr) : NyTing(tingNr, selgerensNr){
};
/**
* Leser inn ekstra data for subklassen BruktTing
*
* @see NyTing::lesData()
* @see BruktTing::hentKvalitet(...)
*/
void BruktTing::lesData(){
char kvalitet;
//Leser inn data for baseklassen
NyTing::lesData();
//Les inn int alder og enum Kvalitet
alder = lesInt("\nAlder p\x8F gjenstand (\x8fr)", 0, MAKSALDERTING);
//Henter gyldig input fra bruker
while(kvalitet != 'S' && kvalitet != 'P' && kvalitet != 'B' && kvalitet != 'G' && kvalitet != 'L'){
kvalitet = lesChar("Kvalitet p\x8F gjenstand- (S)om ny, (P)ent brukt, (B)rukt, (G)odt brukt, s(L)iten");
}
kvaliteten = BruktTing::hentKvalitet(kvalitet);
}
/**
* Skriver ut data om objekt av classen BruktTing
*
* @see NyTing::skrivData()
*/
void BruktTing::skrivData() const{
//Skriver all data for baseklassen før de resterende dataene
NyTing::skrivData();
cout << "\tAlder: " << alder
<< "\tKvalitet: " << kvaliteter[kvaliteten] << endl;
}
/**
* Skriver at tingen er brukt
*/
void BruktTing::skrivTilstand() const{
cout << "BRUKT ";
};
/**
* Henter kvaliteten på en gjenstand ut ifra char
*
* @param k - Char som indikerer kvaliteten for en brukt gjenstand
* @return enum Kvalitet
*/
enum Kvalitet BruktTing::hentKvalitet(char k){
switch (k)
{
case 'S':
return SomNy;
break;
case 'P':
return PentBrukt;
break;
case 'B':
return Brukt;
break;
case 'G':
return GodtBrukt;
break;
case 'L':
return Sliten;
break;
default:
break;
}
}
/**
* Henter en char ut ifra en gitt kvalitet i form av enum Kvalitet
*
* @param k - kvaliteten som skal omgjøres til en char
* @return char - char som representerer kvaliteten til en brukt ting
*/
char BruktTing::hentChar(enum Kvalitet k){
switch(k){
case SomNy:
return 'S';
break;
case PentBrukt:
return 'P';
break;
case Brukt:
return 'B';
break;
case GodtBrukt:
return 'G';
break;
case Sliten:
return 'S';
break;
default:
break;
}
}
/**
* Skriver data til fil for objekter av classen BruktTing
*
* @param ut - Filstrøm som data skrives til
* @see NyTing::skrivTilFil(...)
* @see BruktTing::hentChar(...)
*/
void BruktTing::skrivTilFil(ofstream & ut){
NyTing::skrivTilFil(ut);
ut << alder << " " << BruktTing::hentChar(kvaliteten) << "\n";
}
/**
* Skriver tallet 0 til fil fordi gjenstanden er brukt
*
* @return int - tallet 0 som representerer at gjenstanden er brukt for filposten
*/
int BruktTing::skrivNyEllerBrukt() const {
return 0;
}