Pairing User Input to a 2-D Array

I'm having trouble finding information on this specific issue. I have a function that takes an input of User name and another function that takes the length of the password. I'm trying to store each input to its corresponding array and then combine them at the end of the program. The program can be run up to five times and is dealing with two inputs (Username and Pass) so thats why I'm using a [5],[2] array. I'm also having an issue with sending the length of password chosen to the next parameters. Broad suggestions are appreciated.
Ex: Please enter username:
Please enter the length of your desired password(>6; 50>):
Do you want to include upper case letters?(y/n):
Lower case letters?(y/n):
Symbols?(y/n):
Numbers?(y/n):

User Name:
Password:

Here's what I have so far and my issues deal with the functions UserArray, CharType, and RandCharacter:

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
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <string>
//#include <algorithm>
//#include <chrono>
//
#include <random>

#define masterPassword "CIS 251-01"

using namespace std;


void MasterPass();
void UserArray(char z[]);
void CharType();
void RandCharacter();
void SavePass();
void AssociatedUser();

void MasterPass()
{
	
    string userPassword;
    int loginAttempt = 0;

    while (loginAttempt < 3)
    {
    	cout << "Please Enter the Master Password: ";
    	cin >> userPassword;

    if ( userPassword == "CIS")
    {
    	cout << "Welcome!!\n";
    	cout << "Thank you for logging in.\n";
    break;
    }
    
	else
    {
        cout << "Invalid login attempt. Please try again.\n" << '\n';
        loginAttempt++;
    }
    }
   
    if (loginAttempt == 3)
    {
            cout << "Too many login attempts! Please try again later.";
           
    }
    	//UserArray(string(), string()); //Calls the next function
	
}
	

void UserArray(char z[][2])
{
	int i,a;
	char zombies[5][2];	
	int passwordLth = 0;
	std::cout << "Please Enter the User Name You Would Like:";
	std::cin >> zombies[i];
	std::cout << "Hello""\n" << zombies[i] << "\n" "\n";
}

void RandCharacter()
{
	
	int passwordLth = 0;
	int passAttempt = 0;
	int v;
 
//for(v = 0; v < 3; v++ )
//{

 //	for(passwordLth >= 6; passwordLth < 50; passwordLth++)
//{
do
	
{
	cout << "Enter how many characters you would like for your Password to be"
	<< "\n(Minumum of 6 & Maximum of 50): ";
	cin >> passwordLth;
//	v++;
			
if(passwordLth == 0)
{
cin.clear();
cin.ignore();
}
			
		
}
while((passwordLth < 6) || (passwordLth > 50));
			
}
 	
//}
//}


void CharType()
{
	char input1,input2,input3,input4;
	
	int upperCase[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
 	int lowerCase[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
 	int numbers[10] = {0,1,2,3,4,5,6,7,8,9};
 	//char symbols[28] = 
 	
std::cout << "Would you like to include Upper Case Letters?" << endl;
cin >> input1;
	
switch(input1)
{
	case 121:
	cout << "Upper case letters will be included" << endl;
	break;
	
	case 89:
	cout << "Upper case letters will be included" << endl;
	break;
	
	case 78:
	cout << "Upper case letters will not be included" << endl;
	break;

	case 110:
	cout << "Upper case letters will not be included" << endl;
	break;

	default:
	cout << "\n" << input1 << "is not a valid selection" << endl;
	break;
	}

	
std::cout << "Would you like to include Lower Case Letters?" << endl;
cin >> input2;	
		switch(input2)
	{
		case 121:
	cout << "Lower case letters will be included" << endl;
	break;
	
		case 89:
	cout << "Lower case letters will be included" << endl;
	break;
	
		case 78:
	cout << "Lower case letters will not be included" << endl;
	break;

		case 110:
	cout << "Lower case letters will not be included" << endl;
	break;

	default:
	cout << "\n" << input2 << "is not a valid selection" << endl;
	break;
	}
std::cout << "Would you like to include Symbols?" << endl;
cin >> input3;	
	
		switch(input3)
	{
		case 121:
	cout << "Symbols will be included" << endl;
	break;
	
		case 89:
	cout << "Symbols will be included" << endl;
	break;
	
		case 78:
	cout << "Symbols will not be included" << endl;
	break;

		case 110:
	cout << "Symbols will not be included" << endl;
	break;

	default:
	cout << "\n" << input3 << "is not a valid selection" << endl;
	break;
	}
	
std::cout << "Would you like to include Numbers?" << endl;
cin >> input4;	
		switch(input4)
	{
		case 121:
	cout << "Numbers will be included" << endl;
	break;
	
		case 89:
	cout << "Numbers will be included" << endl;
	break;
	
		case 78:
	cout << "Numbers will not be included" << endl;
	break;

		case 110:
	cout << "Numbers will not be included" << endl;
	break;

	default:
	cout << "\n" << input4 << "is not a valid selection" << endl;
	break;
	}
	
	if(input1 == 121 || input1 == 89)
	{
		for(int i = 0; i > 26; i++)
		{
	
		 random_shuffle(&upperCase[0], &upperCase[26]);
//	unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

  //	shuffle (upperCase.begin(), upperCase.end(), std::default_random_engine(seed));
		//cin >> uppercase[26] >> rand()
	}
	else
	{
		break;
	}

/*srand((unsigned)time(0)); // seed randomizer

string valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-+";

int n = valid.length(); // set n to be the length of valid

const int m = 100; // the size of the output

char output[m + 1]; // if we want to output the char array as string, we need to have an additional element for null char ('\0')

for (int i=0; i<m; i++) // loop this m times
{
// pick a random valid character and set it as the current output character

output[i] = valid[ rand() % n ];
}

output[m] = '\0'; // set the last character to be the null char so you can print it out as a string

cout << output << endl; // this prints out the random chars
*/
}




void SavePass()
{
	cout << "Save Password:";
	AssociatedUser();
}

void AssociatedUser()
{
	
	cout << "Associated User";
//	();

}
int main()
 {

	cout << "********************************************************************************" "\n";
	cout << setw(70) << "WELCOME TO THE CIS 251 PASSWORD MANAGER PROGRAM" "\n";
	cout << "********************************************************************************" "\n";
	
	MasterPass();
	int a,i;
	char z[5][2];
	//int z[5][2];


	UserArray(z);
	RandCharacter();
	CharType();

	return 0;
}

Last edited on
Since you've asked for 'broad suggestions' here's some:

1. please, do not use char arrays in this day and age when the far superior string class is available
2. try to work in terms of classes and structs to take full advantage of everything C++ has to offer
3. think about what your different functions are trying to achieve, for e.g what is the purpose of CharType()? After several reads I'm none the wiser

On this basis, below is an outline using a class based approach where the class constructor incorporates your UserArray() and RandCharacter() functions. I've stored the class objects in a vector but you can use any other STL container that best suit your needs. The MasterPass() function is not a class member but you can declare it as a friend, as I've done, in case you need to give it class access. Finally, if you describe the CharType() function better it might help you get some more feedback on how best to define it:

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
#include<iostream>
#include<string>
#include<vector>
using namespace std;

class Account{
	private:
		string m_username;
		string m_password;
	public:
		Account();
		friend void MasterPass();
			
};

int main(){
vector<Account> act_manager;
}
Account::Account(){//incorporates UserArray() and RandCharacter() functions; 
	cout<<"Please enter username: "<<endl;
	string username; 
	cin>>username;
	m_username = username;
	string password;
	do{
		cout<<"Please enter password: "<<endl;
		cin>>password;
		m_password = password;
	} while (password.length()<6 || password.length()>50);
}


Last edited on
Thanks for the reply man. The CharType() function is supposed to select a random character from each of the character sets chosen then add that character to the password (building the password character by character until it is complete). I see what you're saying though in regards to it not being easy to see what the function is supposed to be doing. I actually made a mistake in combining to much information into one function I think. I should just let the CharType() function do its switches and ifs and let another function actually select each character. Here's what I have now though.
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
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
 #include <ctime>
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <string>
//#include <algorithm>
//#include <chrono>
//
//#include <random>

#define masterPassword "CIS 251-01"

using namespace std;


void MasterPass();
void UserArray(string z[]);
void CharType();
void RandCharacter();
void SavePass();
void AssociatedUser();

void MasterPass()
{
	
    string userPassword;
    int loginAttempt = 0;

    while (loginAttempt < 3)
    {
    	cout << "Please Enter the Master Password: ";
    	cin >> userPassword;

    if ( userPassword == "CIS")
    {
    	cout << "Welcome!!\n";
    	cout << "Thank you for logging in.\n";
    break;
    }
    
	else
    {
        cout << "Invalid login attempt. Please try again.\n" << '\n';
        loginAttempt++;
    }
    }
   
    if (loginAttempt == 3)
    {
            cout << "Too many login attempts! Please try again later.";
           
    }
    	//UserArray(string(), string()); //Calls the next function
	
}
	

void UserArray(string z[10])
{
	int i,a;
	string zombies[10];
	int passwordLth = 0;
	std::cout << "Please Enter the User Name You Would Like:";
	cin >> zombies[1][1];
	std::cout << "Hello""\n" << zombies[1][1] << "\n" "\n";
//	cin >> zombies[i];
}

void RandCharacter()
{
	
	int passwordLth = 0;
	int passAttempt = 0;
	int v;
 
//for(v = 0; v < 3; v++ )
//{

 //	for(passwordLth >= 6; passwordLth < 50; passwordLth++)
//{
do
	
{
	cout << "Enter how many characters you would like for your Password to be"
	<< "\n(Minumum of 6 & Maximum of 50): ";
	cin >> passwordLth;
//	v++;
			
if(passwordLth == 0)
{
cin.clear();
cin.ignore();
}
			
		
}
while((passwordLth < 6) || (passwordLth > 50));
			
}
 	
//}
//}


void CharType()
{
	char input1,input2,input3,input4;
	
	int upperCase[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
 	int lowerCase[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
 	int numbers[10] = {0,1,2,3,4,5,6,7,8,9};
 	int randomizer;
 	//char symbols[28] = 
 	
std::cout << "Would you like to include Upper Case Letters?" << endl;
cin >> input1;
	
switch(input1)
{
	case 121:
	cout << "Upper case letters will be included" << endl;
	break;
	
	case 89:
	cout << "Upper case letters will be included" << endl;
	break;
	
	case 78:
	cout << "Upper case letters will not be included" << endl;
	break;

	case 110:
	cout << "Upper case letters will not be included" << endl;
	break;

	default:
	cout << "\n" << input1 << "is not a valid selection" << endl;
	break;
	}

	
std::cout << "Would you like to include Lower Case Letters?" << endl;
cin >> input2;	
		switch(input2)
	{
		case 121:
	cout << "Lower case letters will be included" << endl;
	break;
	
		case 89:
	cout << "Lower case letters will be included" << endl;
	break;
	
		case 78:
	cout << "Lower case letters will not be included" << endl;
	break;

		case 110:
	cout << "Lower case letters will not be included" << endl;
	break;

	default:
	cout << "\n" << input2 << "is not a valid selection" << endl;
	break;
	}
std::cout << "Would you like to include Symbols?" << endl;
cin >> input3;	
	
		switch(input3)
	{
		case 121:
	cout << "Symbols will be included" << endl;
	break;
	
		case 89:
	cout << "Symbols will be included" << endl;
	break;
	
		case 78:
	cout << "Symbols will not be included" << endl;
	break;

		case 110:
	cout << "Symbols will not be included" << endl;
	break;

	default:
	cout << "\n" << input3 << "is not a valid selection" << endl;
	break;
	}
	
std::cout << "Would you like to include Numbers?" << endl;
cin >> input4;	
		switch(input4)
	{
		case 121:
	cout << "Numbers will be included" << endl;
	break;
	
		case 89:
	cout << "Numbers will be included" << endl;
	break;
	
		case 78:
	cout << "Numbers will not be included" << endl;
	break;

		case 110:
	cout << "Numbers will not be included" << endl;
	break;

	default:
	cout << "\n" << input4 << "is not a valid selection" << endl;
	break;
	}
	
	if(input1 == 121 || input1 == 89)
	{
			srand(time(0));
	rand() % upperCase[26];
}
	
	
		if(input2 == 121 || input2 == 89)
		{
				srand(time(0));
	rand() % lowerCase[26];
	
}

			if(input3 == 121 || input3 == 89)
			{
				srand(time(0));
			rand() % numbers[9];
}

cout << "Your password is" 

}
/*				if input4 == 121 || input4 = 89)
				{
						srand(time(null));

				rand() % symbols[26];
				else{
					break;
				}
				}
			}
		}
		
		for(int i = 0; i > 26; i++)
		{
	srand(time(null));
/	randomizer = rand(upperCase[26])
		 //random_shuffle(&upperCase[0], &upperCase[26]);
//	unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

  //	shuffle (upperCase.begin(), upperCase.end(), std::default_random_engine(seed));
		//cin >> uppercase[26] >> rand()
	}
	else
	{
		break;
	}

/*srand((unsigned)time(0)); // seed randomizer

string valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-+";

int n = valid.length(); // set n to be the length of valid

const int m = 100; // the size of the output

char output[m + 1]; // if we want to output the char array as string, we need to have an additional element for null char ('\0')

for (int i=0; i<m; i++) // loop this m times
{
// pick a random valid character and set it as the current output character

output[i] = valid[ rand() % n ];
}

output[m] = '\0'; // set the last character to be the null char so you can print it out as a string

cout << output << endl; // this prints out the random chars
*/

void SelectCharacter()



void SavePass()
{
	cout << "Save Password:";
	AssociatedUser();
}

void AssociatedUser()
{
	
	cout << "Associated User";
//	();

}
int main()
 {

	cout << "********************************************************************************" "\n";
	cout << setw(70) << "WELCOME TO THE CIS 251 PASSWORD MANAGER PROGRAM" "\n";
	cout << "********************************************************************************" "\n";
	
	MasterPass();
	int a,i;
	string z[10];
	//int z[5][2];


	UserArray(z);
	RandCharacter();
	CharType();

	return 0;
}
Topic archived. No new replies allowed.