0x61cf3000.

I'm not sure what I'm doing wrong with my program but it was running fine then right as the program should of finished i got this: Access violation reading location 0x61cf3000.

Help would be 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

#include "stdafx.h"
#include <fstream>
#include <string>
#include <iostream>
using namespace std;

class Salesperson
{
public:
	string name, conslname;
	double sales, conslsales, bonus, conslbonus, conslincome, conslbonusrate;
};

int main()
{
	int consl = 0, x;
	double bonusrate, conslbonusrate, totalsales, totalconslsales = 0;
	char length;
	string month[12] = {"Janurary", "Feburary", "March", "April", "May", "June", "July", "August", "September", "October", "Novemeber", "December"};
	ofstream outFile;

	Salesperson employee;

	outFile.open("salesInfo.txt", ios::app);

	cout << "Before we start a few questions." << endl;
	cout << "What percent of commision do you make on sales (decimal format): \n";
	cin >> bonusrate;
	cout << "Do you have consultants below you of which you make a commission based on their sales?\nIf so enter the percent you make on their sales (decimal format) otherwise press 0: ";
	cin >> conslbonusrate;
	cout << "Would you like to input for the (M)onth or (A)nnualy?: ";
	cin >> length;

		if (toupper(length) == 'M')
		{
			if (outFile.is_open())
			{
				outFile << "Name # Sales # Income" << endl;
				cout << "Enter your name: ";
				cin.ignore(100, '\n');
				getline(cin, employee.name);
				cout << "Sales amount: ";
				cin >> employee.sales;
				cin.ignore(100, '\n');
					while (conslbonusrate > 0)
					{
						cout << "Salesperson's name (X to exit): ";
						getline(cin, employee.conslname);

							while (employee.conslname != "X" && employee.conslname != "x")
							{
								
								
								cout << "Sales amount: ";
								cin >> employee.conslsales;
								cin.ignore(100, '\n');
								
								employee.conslincome = (employee.conslsales*bonusrate);

								outFile << employee.conslname << " # " << employee.conslsales << " # " << employee.conslincome<< endl;

								cout << "Salesperson's name (X to exit): ";
								getline(cin, employee.conslname);
								
								consl = consl++;

								totalconslsales = employee.conslsales+totalconslsales;

							}
						employee.conslbonusrate = conslbonusrate;
						conslbonusrate = 0;
					}

				totalsales = ((bonusrate*employee.sales) + (totalconslsales*employee.conslbonusrate));
				outFile << employee.name << " # " << employee.sales << " # " << totalsales << endl;
			}
			
			else
			{
				cout << "The file could not be opened." << endl;
			}
		}

		if (toupper(length) == 'A')
		{
			if (outFile.is_open())
			{
				outFile << "Name # Sales # Income" << endl;

					while (conslbonusrate > 0)
					{
						for (x = 0; x < 12; x++)
						{
							x = 0;
							while ( x < 1)
							{
								cout << month[x] << ": " << endl;
								outFile << month[x] << ":" << endl;
								cout << "Enter your name: ";
								cin.ignore(100, '\n');
								getline(cin, employee.name, '\n');
								cout << "Sales amount: ";
								cin >> employee.sales;
								cin.ignore(100, '\n');
								cout << "Salesperson's name (N to next month): ";
								getline(cin, employee.conslname);
								x++;
								while (employee.conslname != "N" && employee.conslname != "n")
								{
									employee.conslbonusrate = conslbonusrate;
									cout << "Sales amount: ";
									cin >> employee.conslsales;
									cin.ignore(100, '\n');
									
									employee.conslincome = (employee.conslsales*bonusrate);

									outFile << employee.conslname << " # " << employee.conslsales << " # " << employee.conslincome<< endl;

									cout << "Salesperson's name (N to next month): ";
									getline(cin, employee.conslname);
									
									consl = consl++;

									totalconslsales = employee.conslsales+totalconslsales;

									totalsales = ((bonusrate*employee.sales) + (totalconslsales*employee.conslbonusrate));
								}
								
								outFile << employee.name << " # " << employee.sales << " # " << totalsales << endl;	
							}
							while (x >= 1)
							{
								cout << month[x] << ": " << endl;
								outFile << month[x] << ":" << endl;
								cout << "Enter your name: ";
								getline(cin, employee.name, '\n');
								cout << "Sales amount: ";
								cin >> employee.sales;
								cin.ignore(100, '\n');
								cout << "Salesperson's name (N to next month): ";
								getline(cin, employee.conslname);
								x++;
								while (employee.conslname != "N" && employee.conslname != "n")
								{
									employee.conslbonusrate = conslbonusrate;
									cout << "Sales amount: ";
									cin >> employee.conslsales;
									cin.ignore(100, '\n');
									
									employee.conslincome = (employee.conslsales*bonusrate);

									outFile << employee.conslname << " # " << employee.conslsales << " # " << employee.conslincome<< endl;

									cout << "Salesperson's name (N to next month): ";
									getline(cin, employee.conslname);
									
									consl = consl++;

									totalconslsales = employee.conslsales+totalconslsales;

									totalsales = ((bonusrate*employee.sales) + (totalconslsales*employee.conslbonusrate));
								}
								
								outFile << employee.name << " # " << employee.sales << " # " << totalsales << endl;	
							}
						}
						conslbonusrate = 0;
					}

					conslbonusrate = employee.conslbonusrate;

					while (conslbonusrate == 0)
					{
						x = 0;
							while (x < 1)
							{
								cout << month[x] << ": " << endl;
								outFile << month[x] << ":" << endl;
								cout << "Enter your name: ";
								cin.ignore(100, '\n');
								getline(cin, employee.name, '\n');
								cout << "Sales amount: ";
								cin >> employee.sales;
								cin.ignore(100, '\n');
								totalsales = (bonusrate*employee.sales);	
								outFile << employee.name << " # " << employee.sales << " # " << totalsales << endl;
								x++;
							}
							while ((x >= 1)&&(x < 12))
							{
								cout << month[x] << ": " << endl;
								outFile << month[x] << ":" << endl;
								cout << "Enter your name: ";
								getline(cin, employee.name, '\n');
								cout << "Sales amount: ";
								cin >> employee.sales;
								cin.ignore(100, '\n');
								totalsales = (bonusrate*employee.sales);	
								outFile << employee.name << " # " << employee.sales << " # " << totalsales << endl;
								x++;
							}
						conslbonusrate = 1;
					}
			}

			else
			{
				cout << "The file could not be opened." << endl;
			}
		}

	return 0;
}

On which line are you getting the exception?
Not sure...heres the whole error message.

1
2
3
4
5
6
7
8
'EmployeeSales.exe': Loaded 'C:\Users\Owner\Documents\Visual Studio 2008\Projects\date\Debug\EmployeeSales.exe', Symbols loaded.
'EmployeeSales.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'EmployeeSales.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'EmployeeSales.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcp90d.dll'
'EmployeeSales.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_none_bb1f6aa1308c35eb\msvcr90d.dll'
First-chance exception at 0x61d68dcb in EmployeeSales.exe: 0xC0000005: Access violation reading location 0x61cf3000.
Unhandled exception at 0x61d68dcb in EmployeeSales.exe: 0xC0000005: Access violation reading location 0x61cf3000.
The program '[6904] EmployeeSales.exe: Native' has exited with code -1073741819 (0xc0000005).
There is certainly a problem here:
Here is the output from your program and my responses - notices that when you come to December - you can press N to go to the next month! and the program crashes...


Before we start a few questions.
What percent of commision do you make on sales (decimal format):
10
Do you have consultants below you of which you make a commission based on their
sales?
If so enter the percent you make on their sales (decimal format) otherwise press
 0: 5
Would you like to input for the (M)onth or (A)nnualy?: a
Janurary:
Enter your name: andy
Sales amount: 200.00
Salesperson's name (N to next month): vvv
Sales amount: 1000
Salesperson's name (N to next month): aaa
Sales amount: 3000
Salesperson's name (N to next month): n
Feburary:
Enter your name: june
Sales amount: 9000
Salesperson's name (N to next month): n
March:
Enter your name: gggg
Sales amount: 900
Salesperson's name (N to next month): n
April:
Enter your name: fff
Sales amount: 800
Salesperson's name (N to next month): n
May:
Enter your name: ss
Sales amount: 3567
Salesperson's name (N to next month): n
June:
Enter your name: fgff
Sales amount: 800
Salesperson's name (N to next month): n
July:
Enter your name: jjj
Sales amount: 5678
Salesperson's name (N to next month): n
August:
Enter your name: opup
Sales amount: 9876
Salesperson's name (N to next month): n
September:
Enter your name: uiui
Sales amount: 5456
Salesperson's name (N to next month): n
October:
Enter your name: bvc
Sales amount: 23456
Salesperson's name (N to next month): n
Novemeber:
Enter your name: zxcxz
Sales amount: 67567
Salesperson's name (N to next month): n
December:
Enter your name: qwerty
Sales amount: 8765
Salesperson's name (N to next month): n
Well previously in my program when you came to December and you pushed 'n' the program would just close without any errors and would have all the information written to the file just like it should be.
On line 132 you're not checking to see if x is greater then the bounds of your month array. That's what is causing the crash.

Maybe you should rethink the structure of your program, there are a lot of while loops in there which you don't necessarily need. Try breaking up your code into different methods, that should make it much more readable.

Also your SalesPerson class isn't that effective. The purpose of a class is to hide data from other parts of your program. It's good practice to use getters and setters to work with your data rather than making it public.

Good luck.
Topic archived. No new replies allowed.