Function not being called?

Hi, for some reason my program wont call my Basic_Requirements function, all it does is quit after the first function call. Why?


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
#include <iostream>
#include <string>

using namespace std;

string uper[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"};
string lower[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"};
string num[10]={"0","1","2","3","4","5","6","7","8","9"};

string y;
string x;
int u,l,n,s=0;

void Length(int total){
	int a;
	a=x.length();
    total=total * 4;

	while(a<8){
	cout<<"Enter a longer password: ";
	cin>>x;
	a=x.length();
	}
}

void check_3_req(){

	int c=x.length();
	int a=x.length();

	while(a!=0){
		y=x.substr(a,1);
		//loop to check if there are any upper,lower,numbers for the char y.
		for(int counter=0;counter!=c;counter++){

		if(y.compare(uper[counter])==0)
			u++;
		else
		if(y.compare(lower[counter])==0)
			l++;
		else
		if(y.compare(num[counter])==0)
			n++;
		else
			s++;

		}
		
		a--;

	}
	
}

void Basic_Requirements(int total){
	
	//int a=0;
	//Not using?!/
	//a=x.length();
	
    check_3_req();

	if (u<1 && l<1 && n<1 || u<1 && l<1 && s<1 || u<1 && n<1 && s<1 || l<1 && n<1 && s<1){
	cout<<"Please enter another password that meets requirements: ";
	cin>>x;
	}
	

	while(u<1 && l<1 && n<1 || u<1 && l<1 && s<1 || u<1 && n<1 && s<1 || l<1 && n<1 && s<1){
	check_3_req();
	cin>>x;
	}


}

int main(){
	int total=0;
	
	cout<<"Enter a password: ";
		cin>>x;

		Length(total);
		
		Basic_Requirements(total);
}
There are functions to check if they are lower case , uppercase , or decimal-digits try these. islower( CHAR ); isupper( CHAR ); isdigit( CHAR );
They should be in the cctype header. Also you should not use global variables.
And as far as your problem goes you are not actually asigning a value to total if you want to do that either do total = Length( total ) and return the value of total return( total ); or in your Length function declaration make total a reference void Length( int &total )
Last edited on
What does "quit" mean?

Not this? http://www.cplusplus.com/forum/beginner/1988/
I am guessing it is your conditions. Group the related conditions together in parentheses.
For example:
63
64
65
66
67
68
if (
   (u<1 && l<1 && n<1) || 
   (u<1 && l<1 && s<1) || 
   (u<1 && n<1 && s<1) || 
   (l<1 && n<1 && s<1)
){


Or better yet, make a function that returns a bool, so you don't have to keep retyping these lists.
Topic archived. No new replies allowed.