How to modify code to output result using a different method?

I'm working on a project, and I've finally gotten it to the point where it does everything I want and produces the output I want. The problem however is that my method of output is not done by the method that is required for the project. Currently I'm just using a function within my one of my classes to print the histogram of die roll occurrences, but for the project we are supposed to use a function where we overload the << operator with the following header :
"This stand-alone function should have the signature:

ostream& operator<<(ostream& os, const aHistogram& hist)

This function will allow you to perform the following:

cout << hist << endl; // Where hist is a histogram"

I've included my code below ( I've omitted the .cpp and .h file for the part where it rolls two die instead of one to keep it brief). Not really sure how I can simply modify the code I already have to meet this requirement. Any help will be greatly appreciated.

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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
aDie.


#include <stdlib.h>
#include <time.h>
#include <vector>
#include <algorithm>
# include <iostream>

using namespace std;

class aDie

{

public:

	int roll(); //return an integer between 1 and 6 to represent what face appears when the die is rolled.

	aDie(); //Default constructor

	~aDie(); //Destructor

private:
int faces = 6;
};


aDie.cpp---------------------------------------------------------------------



#include "aDie.h"
using namespace std;

int aDie::roll(){
  return ((rand() % faces) + 1); //returns a number 1-6 randomly

}

aDie::aDie(){
    
	cout << "Dice Roll....." << endl;
    return;

}

aDie::~aDie(){
   
	return;
}


aHistogram.h---------------------------------------------------------------

#define AHISTOGRAM_H_INCLUDED
#include <algorithm>
#include <stdlib.h>
#include <vector>
# include <iostream>
using namespace std;

class aHistogram{

public:

	void update(int face);

	void display(int maxLengthOfLine);

	int Count(int face);

	void reset();

	aHistogram(); //Constructor

	~aHistogram(); //Destructor

	vector<int> histogram;



private:

	const int Faces = 6;

	int totalRolls;

	double bigVal = 0.0;

	double xScaler;

	int face = 0;

	 int maxLengthOfLine = 0;
};


aHistogram.cpp-----------------------------------------------------------------

//Adds a count to each face every time the die lands on said face.
#include "aHistogram.h"

void aHistogram::update(int face){

	histogram.at(face)++;
    return;

}

//Displays the histogram with x's representing occurences, with the largest value of occurences displaying 60 x's

//maxLengthOfLine represents the maximum number of x’s to be printed for the largest count.

void aHistogram::display(int maxLengthOfLine)

{

	xScaler = bigVal / maxLengthOfLine;

	for (int i = 1; i <= 6; i++)

	{
		
		cout << i << ":" << Count(i) << " occurences: ";

		int numXs =  histogram.at(i) / xScaler;
		
		for (int j = 0; j < numXs; j++)

		{

			cout << "x";

		}
		cout << endl;
	}

}

//To be called AFTER aHistogram::update

//Returns a count of how many times for each face of the die

int aHistogram::Count(int face)

{

	//For Loop determines the largest count

	for (int i = 1; i <= Faces; i++)

	{

		while (histogram.at(i) > bigVal)

		{

			bigVal = histogram.at(i);

		}

	}

	//

	return histogram.at(face);

}

void aHistogram::reset()

{

	histogram.clear();

	return;

}

//Defines the DEFAULT CONSTRUCTOR. Sets all elements of the histogram to zero.

aHistogram::aHistogram() : histogram(7), Faces(6), maxLengthOfLine(60)
{
}
//Defines the DESTRUCTOR. Clears vector after use.

aHistogram::~aHistogram()

{

	histogram.clear(); //Clears vector

	return;

}


main.cpp----------------------------------------------------------

#include <algorithm>]
#include "aDie.h"
#include "aHistogram.h"
#include "aHistogramTwo.h"
using namespace std;




int main()

{
	int seedNum;
	cout << "enter a seed number" << endl;
	cin >> seedNum; 
	srand(seedNum);
	int numRolls;

	const int maxLengthOfLine = 60;

	cout << "How many rolls? " << endl;

	cin >> numRolls;

	aDie oneDie;

	aHistogram oneHistogram;

	aHistogramTwo twoHistogram;

	//For Loop rolls the die and updates the histogram vector Histogram.

	for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		oneHistogram.update(face);

		oneHistogram.Count(face);

		twoHistogram.update(face, faceTwo);

			twoHistogram.Count(face);


	}

    cout << "Histogram: " << endl;


	oneHistogram.display(maxLengthOfLine);
	 
	cout << " " << endl; 
	cout << "Two Die Histogram :  " << endl;

	twoHistogram.display(maxLengthOfLine);

	system ("pause"); 
}
You have a function:
void aHistogram::display( int maxLengthOfLine )
That outputs to stream std::cout.

You want a function:
ostream& operator<<( ostream& os, const aHistogram& hist )
That outputs to stream os.

What members of aHistogram does display() use?
The operator has to access that same data of the 'hist' object.
Can it do that via the public interface of aHistogram?
Do you have to resort to declaring the operator a friend of the class?
Well display() is using the private members xScaler, and bigVal, so it will be necessary to declare the operator a friend of the class. Was just messing around with it a little to see if I could get it to output something basic and its giving me the error: " Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'oStream' (or there is no acceptable conversion) "

I'm completely new to using this type of function so please bear with me if I'm missing something obvious. What am I doing wrong here? Still not really sure how to get this to do what I need it to.


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

main.cp
# include <iostream>
# include <cstdlib>
# include <ctime>
# include <vector>
#include <algorithm>]
#include "aDie.h"
#include "aHistogram.h"
#include "aHistogramTwo.h"
using namespace std;


class oStream {
	friend ostream& operator<<(ostream& outputStream, const aHistogram& h)
	{
		int hSize = h.histogram.size();
		for (int i = 0; i < hSize; ++i)
		{
			outputStream << h.histogram.at(i);
		}

		// return the output stream that was passed in the first argument
		return outputStream;
	}
};



int main()

{
	int seedNum;
	cout << "enter a seed number" << endl;
	cin >> seedNum; 
	srand(seedNum);
	int numRolls;

	const int maxLengthOfLine = 60;

	cout << "How many rolls? " << endl;

	cin >> numRolls;

	aDie oneDie;

	aHistogram oneHistogram;

	aHistogramTwo twoHistogram;

	//For Loop rolls the die and updates the histogram vector Histogram.

	for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		oneHistogram.update(face);

		oneHistogram.Count(face);

		twoHistogram.update(face, faceTwo);

			twoHistogram.Count(face);


	}

   /* cout << "Histogram: " << endl;

	oneHistogram.display(maxLengthOfLine);
	 
	cout << " " << endl; 
	cout << "Two Die Histogram :  " << endl;

	twoHistogram.display(maxLengthOfLine);
	*/
	oStream h;
	cout << h;
	system ("pause"); 

}



aHistogram.h------------------------------------------------------------------------------------------

#define AHISTOGRAM_H_INCLUDED
#include <algorithm>
#include <stdlib.h>
#include <vector>
# include <iostream>
using namespace std;

class aHistogram{

public:

	void update(int face);

	void display(int maxLengthOfLine);

	int Count(int face);

	void reset();

	aHistogram(); //Constructor

	~aHistogram(); //Destructor

	vector<int> histogram;

	friend ostream& operator<<(ostream& outputStream, const aHistogram& h);

private:

	const int Faces = 6;

	int totalRolls;

	double bigVal = 0.0;

	double xScaler;

	int face = 0;

	 int maxLengthOfLine = 0;
};

Last edited on
Is this along the lines of what I should be doing in the end? Still getting that same error.

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


class oStream{
	friend ostream& operator<<(ostream& outputStream, const aHistogram& hist)
	{
		
{
int maxLengthOfLine = 60;
	hist.xScaler = hist.bigVal / maxLengthOfLine;

	for (int i = 1; i <= 6; i++)

	{
		
		outputStream << i << ":" << hist.Count(i) << " occurences: ";

		int numXs =  hist.histogram.at(i) / hist.xScaler;
		
		for (int j = 0; j < numXs; j++)

		{

			outputStream << "x";

		}
		outputStream << endl;
	}

}
		{
			outputStream << hist.histogram.at(i);
		}

		
		return outputStream;
	}
};



int main()

{
	int seedNum;
	cout << "enter a seed number" << endl;
	cin >> seedNum; 
	srand(seedNum);
	int numRolls;

	const int maxLengthOfLine = 60;

	cout << "How many rolls? " << endl;

	cin >> numRolls;

	aDie oneDie;

	aHistogram oneHistogram;

	aHistogramTwo twoHistogram;

	//For Loop rolls the die and updates the histogram vector Histogram.

	for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		oneHistogram.update(face);

		oneHistogram.Count(face);

		twoHistogram.update(face, faceTwo);

			twoHistogram.Count(face);


	}
	/*
   cout << "Histogram: " << endl;

	oneHistogram.display(maxLengthOfLine);
	 
	cout << " " << endl; 
	cout << "Two Die Histogram :  " << endl;

	twoHistogram.display(maxLengthOfLine);
	*/
	

	oStream hist;
	cout << hist << endl;
	
	system ("pause"); 
	
	

}



Last edited on
See the example at the end of: http://en.cppreference.com/w/cpp/language/friend
Ok I think I've gotten how to write out the code in general, but now it's just printing that there are 0 occurrences of each face. What dumb mistake am I making here?



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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
//aHistogram.h
#define AHISTOGRAM_H_INCLUDED
#include <algorithm>
#include <stdlib.h>
#include <vector>
# include <iostream>
using namespace std;

class aHistogram{

public:

	void update(int face);

	void display(int maxLengthOfLine);

	int Count(int face);

	void reset();

	aHistogram(); //Constructor

	~aHistogram(); //Destructor

	vector<int> histogram;

	friend ostream& operator<<(ostream& os, aHistogram& hist);

private:

	const int Faces = 6;

	int totalRolls;

	double bigVal = 0.0;

	double xScaler;

	int face = 0;

	 int maxLengthOfLine = 0;
};

  

//aHistogram.cpp 
//increments a count for each face every time the die lands on that face
#include "aHistogram.h"

void aHistogram::update(int face){

	histogram.at(face)++;
    return;

}

ostream& operator<<(ostream& os, aHistogram& hist)
{
	hist.xScaler = hist.bigVal / hist.maxLengthOfLine; 
	for (int i = 1; i <= 6; i++)
	{
		os << i << ":" << hist.Count(i) << " occurences: ";
		int numXs = hist.histogram.at(i) / hist.xScaler;         
		for (int j = 0; j < numXs; j++)
		{
			os << "x";
		}
		os << endl;
	}
	return os;
}


//prints an x for numXs occurences of each face.

//maxLengthOfLine represents the maximum number of x’s to be printed for the largest count.

void aHistogram::display(int maxLengthOfLine)

{

	xScaler = bigVal / maxLengthOfLine;

	for (int i = 1; i <= 6; i++)

	{
		
		cout << i << ":" << Count(i) << " occurences: ";

		int numXs =  histogram.at(i) / xScaler;
		
		for (int j = 0; j < numXs; j++)

		{

			cout << "x";

		}
		cout << endl;
	}

}

//called after update()

//returns a count for how many times each face occurs 

int aHistogram::Count(int face)

{

	//For Loop determines the largest amount of occurences of a face

	for (int i = 1; i <= Faces; i++)

	{

		while (histogram.at(i) > bigVal)

		{

			bigVal = histogram.at(i);

		}

	}

	//

	return histogram.at(face);

}

void aHistogram::reset()

{

	histogram.clear();

	return;

}

//Defines the default constructor

aHistogram::aHistogram() : histogram(7), Faces(6), maxLengthOfLine(60)
{
}
//Defines the destructor, which clears the vector after being used
aHistogram::~aHistogram()

{

	histogram.clear(); //Clears vector

	return;

}



//main.cpp

int main()

{
	int seedNum;
	cout << "enter a seed number" << endl;
	cin >> seedNum; 
	srand(seedNum);
	int numRolls;

	const int maxLengthOfLine = 60;

	cout << "How many rolls? " << endl;

	cin >> numRolls;

	aDie oneDie;

	aHistogram oneHistogram;

	aHistogramTwo twoHistogram;

	// Loop rolls the die and updates the vector Histogram for each roll.

	for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		oneHistogram.update(face);

		oneHistogram.Count(face);

		twoHistogram.update(face, faceTwo);

			twoHistogram.Count(face);


	}
	


   cout << "Histogram: " << endl;
   /*
	oneHistogram.display(maxLengthOfLine);
	 
	cout << " " << endl; 
	cout << "Two Die Histogram :  " << endl;

	twoHistogram.display(maxLengthOfLine);
	*/
	
	
	
	aHistogram hist;
	aHistogramTwo histTwo;
	cout << hist << endl;
	cout << "Two Die Histogram: " << endl;
	cout << histTwo << endl;
	system ("pause"); 
	
	

}

Last edited on
Nevermind, figured it out. Solution was to change the loop in main.cpp from,

This:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		oneHistogram.update(face);

		oneHistogram.Count(face);

		twoHistogram.update(face, faceTwo);

			twoHistogram.Count(face);


	}
	



To:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

	for (int i = 0; i < numRolls; i++)

	{

		int face = oneDie.roll();
		int faceTwo = oneDie.roll();
		hist.update(face);

		hist.Count(face);

		histTwo.update(face, faceTwo);

		histTwo.Count(face);


	}

Why does line 118 begin a while loop?

How many rolls are you doing? Line 51 and the integer division therein may result in a 0 value of bigVal is less than maxLengthOfLine which will happen for smaller sample numbers.


And, since you're nearing the end, here's something to compare to:
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
#include <iomanip>
#include <iostream>
#include <random>
#include <vector>

#ifdef CODEPAGE_437
char hist_char = '\xF0';
#else
char hist_char = '*';
#endif

namespace rng {
    std::mt19937 engine(std::random_device{}());
}

struct Die 
{
    explicit Die(unsigned faces) : _faces(faces) {}
    unsigned roll() const 
    { 
        return std::uniform_int_distribution<unsigned>{1, _faces}(rng::engine);
    }

private:
    unsigned _faces;
};

struct Histogram 
{
    Histogram(unsigned max) : _base{ 0u }, _counts{ max + 1 } {}
    Histogram(unsigned min, unsigned max) : _base{ min }, _counts( max - min + 1 ) {}

    void addDatapoint(unsigned value) { ++_counts[value - _base]; }
    void maxLen(unsigned len) { _maxLen = len; }

    unsigned min() const {return _base;}
    unsigned max() const { return _base + unsigned(_counts.size())-1; }
    std::size_t range() const {return _counts.size();}
    unsigned maxLen() const { return _maxLen; }

    std::size_t largestCount() const {
        auto maxCount = std::size_t{ 0 };

        for (auto count : _counts)
            if (count > maxCount) maxCount = count;

        return maxCount;
    }

    std::size_t operator[](unsigned val) const { return _counts[val - _base]; }

private:
    unsigned _maxLen = 70;
    unsigned _base;
    std::vector<std::size_t> _counts;
};

std::ostream& operator<<(std::ostream& os, const Histogram& h)
{
    auto ratio = h.maxLen() / double(h.largestCount());

    os << std::left;
    for (auto i = h.min() ; i <= h.max(); ++i)
    {
        os << std::setfill(' ') << std::setw(5) << i;
        os << std::setfill(hist_char) << std::setw(unsigned(ratio*h[i])) << "" << '\n';
    }

    return os;
}


int main()

{
    unsigned numRolls;
    std::cout << "How many rolls?\n> ";
    std::cin >> numRolls;

    auto die = Die{ 6 };

    auto hist = std::vector<Histogram>{ Histogram{1,6}, Histogram{1,6}, Histogram{2, 12} };

    for (auto& h : hist)
        h.maxLen(60);

    for (auto i = 0u; i < numRolls; ++i)
    {
        auto d1 = die.roll(), d2 = die.roll();

        hist[0].addDatapoint(d1);
        hist[1].addDatapoint(d2);
        hist[2].addDatapoint(d1 + d2);
    }

    for (auto& h : hist)
    {
        std::cout << "\n---------------\n";
        std::cout << h << '\n';
    }
}

How many rolls?
> 2000

---------------
1    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
2    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
3    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
4    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
5    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
6    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡


---------------
1    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
2    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
3    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
4    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
5    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
6    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡


---------------
2    ≡≡≡≡≡≡≡≡≡
3    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
4    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
5    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
6    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
7    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
8    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9    ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
10   ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
11   ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
12   ≡≡≡≡≡≡
Last edited on
Topic archived. No new replies allowed.