How do I add 3-limit attempts for inputting my password?(with code)
Jun 4, 2014 at 11:53am UTC
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
#include<iostream>
#include<string>
#include<cctype>
#include<cstdlib>
using namespace std;
#include<conio.h>
#include<windows.h>
void counting();
void palindrome(char sal[120]);
void password(string);
char menu();
void quit();
string EnterPassword();
int main()
{
//add all your code here
string pwd= EnterPassword();
password(pwd);
char answer;
char option=menu();
do
{
switch (option)
{
case 'a' :
char alt[120];
palindrome(alt);
break ;
case 'b' :
counting();
break ;
case 'c' :
quit();
}
bool ans=true ;
answer=tolower(answer);
while (ans)
{
cout<<"\nDo you want to try again?[y/n] " ;
cin>>answer;
try {
if (ans!='y' ||ans!='n' )
throw ans;
}
catch (char a){
continue ;
}
}
ans=false ;
}while (answer!='n' );
cout<<"Thank you for your time, goodbye!\n" ;
system("pause" );
return 0;
}
void counting()
{
//add all your code here
string sentence;
getline(cin, sentence);
int count[26]={0};
for (int i = 0; i < sentence.length(); i++)
if (isalpha(sentence[i]) && islower(sentence[i]))
count[sentence[i] - 'a' ]++;
for (char c=0;c<26;c++)
if (count[c] != 0)
cout<<char (c + 'a' )<<": " <<count[c]<<endl;
}
void palindrome(char sal[120])
{
//add all your code here
system("cls" );
char rev[120];
cout<<" Palindrome Checker\n"
<<"----------------------------------------\n" ;
cout<<"Please enter a word: " ;
cin>>sal;
sal=strlwr(sal);
strcpy(rev,sal);
strrev(rev);
bool palindrome=true ;
for (int i=0;sal[i]!='\0' ;i++)
if (sal[i]!=rev[i])
{
palindrome=false ;
break ;
}
if (palindrome==true )
cout<<sal<<" is a palindrome.\n" ;
else
cout<<sal<<" is not a palindrome.\n" ;
}
void password(string pw)
{
//add all your code here
system("cls" );
if (pw!="12345" )
{
cout<<"Processing your password" ;
for (int i=0;i<4;i++)
{
Sleep(300);
cout<<"." ;
}
cout<<"Invalid password. Please enter the correct password.\n" ;
}
cout<<endl;
}
char menu()
{
//add all your code here
system("cls" );
char option;
cout<<" Welcome!\n"
<<"----------------------------------------\n"
<<"[a] Check the palindrome.\n"
<<"[b] Read in a line of text.\n"
<<"[c] Quit.\n\n" ;
bool ans=true ;
while (ans)
{
cout<<"Enter your option: " ;
cin>>option;
cin.ignore();
cout<<endl;
option=tolower(option);
try
{
if (option!='a' &&option!='b' &&option!='c' )
throw option;
}//end catch
catch (char x)
{
cout<<"Wrong option! Enter again(a-c only).\n" ;
continue ;
}//end catch
ans=false ;
}//end while
return option;
}
void quit()
{
//add all your code here
char answer;
do {
cout<<"\nAre you sure you want to quit[y/n]? " ;
cin>>answer;
answer=tolower(answer);
}while (answer!='y' && answer!='n' );
if (answer!='y' )
main();
else
{
cout<<"Thank you for your time. Good bye...\n" ;
system("pause" );
exit(1);
}
}
string EnterPassword()
{
//add all your code here
string password="" ;
cout<<"Enter password: " ;
char ch=getch();
while (ch != '\r' )
{
ch = getch();
if (ch == '\b' )
{
if (password.size() != 0)
{
cout << "\b \b" ;
password.erase(password.size() - 1, 1);
}
continue ;
}
else if (ch<='9' &&ch>='0' ||ch>='a' &&ch<='z' ||ch>='A' &&ch<='Z' )
{
password += ch;
cout<<"*" ;
}
else
continue ;
}
cout<<endl;
return password;
}
Jun 4, 2014 at 12:09pm UTC
Ask in a loop. Correct answer gets you out from the loop immediately. Have a counter that increases on every iteration (i.e. wrong answer) and make the loop end after third failure.
Topic archived. No new replies allowed.