ЗАДАЧА: Убедитесь, что 30% -ный шанс, что пароль не является специальным символом, будет числом. (Подсказка: сгенерируйте случайное число от 0 до 3. Если 0, пусть символ будет случайным числом от 0 до 9).
В моем коде я написал ЗДЕСЬ, вот где я застрял.
#include <iostream> //for cout, cin
#include <string> //for string
#include <stdlib.h> //for rand
#include <time.h> //for time
using namespace std;
string getRandString(int N, string tokens)
{
string randStr = "";
for(int i = 0; i<N; i++)
{
int randIndex = rand() % tokens.length();
randStr = tokens[randIndex] + randStr;
}
return randStr;
}
/*string getRandString(int stringLength)
{
string randStr = "";
string alphabet = "abcdefghijklmnopqrstuvwxyz""ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(int i = 0; i<stringLength; i++)
{
int randIndex = rand() % alphabet.length();
randStr = alphabet[randIndex] + randStr;
}
return randStr;
}*/
string getNRandomSpecialChars(int N)
{
string specialChars = "!%+-:_";
string randStr = "";
for(int i = 0; i<N; i++)
{
int randIndex = rand() % specialChars.length();
randStr = specialChars[randIndex] + randStr;
}
return randStr;
}
int getRandomBetweenRange(int min, int max)
{
return rand() % (max - min + 1) + min;
}
string injectRandomString(string oldString, string injectionString)
{
if( injectionString.length() == 0 )
{
return oldString;
}
for(int i = 0; i<oldString.length(); i++)
{
int coinToss = rand() % 2;
int randIndex = rand() % injectionString.length();
if( coinToss == 1 )
{
oldString[i] = injectionString[randIndex];
}
}
///*********************** HERE ***********************
for (int j = 0; j<oldString.length(); j++)
{
int flipToNum = rand() % 3;
int randInd = rand() % injectionString.length();
if (flipToNum == 3)
{
oldString[j] = ;
}
}
return oldString;
}
int main()
{
//initialize random seed
srand (time(NULL));
string alphabet = "abcdefghijklmnopqrstuvwxyz""ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string specialChars = "!%+-:_";
for(int j = 0; j<10; j++)
{
int zeroToSix = rand() % 7;
int max = 14 + zeroToSix;
int min = 1;
int stringLength = getRandomBetweenRange(min, max);
//method 1 - start
//string password = getRandString(stringLength);
//string specialChars = getNRandomSpecialChars(zeroToSix);
//method 1 - end
//method 2 - start
string password = getRandString(stringLength, alphabet);
string specialCharsString = getRandString(zeroToSix, specialChars);
password = injectRandomString(password, specialCharsString);
//method 2 - end
cout << password << endl;
}
cout << endl;
//cout << stringLength << endl;return 0;
}
Задача ещё не решена.
Других решений пока нет …