Random PW Generator

main.cpp

Committer:
stefanblack
Date:
2020-05-03
Revision:
0:4b30ded991e6

File content as of revision 0:4b30ded991e6:

/*

C++ Kurs 6ABELI  SM
Aufgabe 3 Übung NR 74 -- Passwortgenerator
Stefan Schwarz

Übung Nr.74:

Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein. 

*/


#include <algorithm>
#include <stdio.h>  
#include <iostream>
#include <cstdlib>
#include <ctime>


using namespace std;

// function generates new password based on given parameters
string genpw(int lengh, string number, string smallletter, string bigletter, string signs); 


int main()
{
    int lengh;      
    string numbers;
    string smallletter;
    string bigletter;
    string signs;

//setting parameters via Console
    cout<<" Wilkommen im Passwortgenerator !"<< endl << endl;
    again:
    cout << "Wie lange soll das Passwort sein?  " ;
    cin >> lengh;
    cout << "Ziffern?            J/N ";
    cin.get();
    cin >> numbers;
    cin.get();
    cout  << "Kleinbuschstaben?   J/N " ;
    cin >> smallletter;
    cout  << "Großbuschstaben?   J/N " ;
    cin >> bigletter;
    cout  << "Sonderzeichen?     J/N " ;
    cin >> signs;
   
 // check if theres at least one chosen parameter  
    if(numbers!="J" && smallletter!="J" && bigletter!="J" && signs!="J")
    {
        cout << "Min 1 Parameter muss gewählt werden! Bitte erneute Eingabe:"<<endl;
        goto again;
    }
    
//print newly generated password
   cout << endl << genpw(lengh,numbers,smallletter,bigletter,signs);
   
    
}


// genpw function generates new password based on given parameters
string genpw(int lengh, string number, string smallletter, string bigletter, string signs ){
   
    string newpw = "";
    string coderes = "";
    string numb = "123456789";
    string slbs = "abcdefghijklmnopqrstuvwxyz";
    string blbs = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string sgn = "@!§$%&/()=?*':;";
        
        if (number == "J")
        coderes += numb;
        if (smallletter == "J")
        coderes += slbs;
        if (bigletter == "J")
        coderes += blbs;
        if (signs == "J")
        coderes += sgn;

    srand(time(0));
    
    for (unsigned int i = 0; i < lengh; i++)
    {
        random_shuffle(coderes.begin(), coderes.end()); //shuffeling available characters in addition to randomly picked ones
       
        int sizeres= sizeof(coderes);                   //
        newpw+=coderes[rand()% sizeres];                //building newpw string randomly
    }
        return "Das generierte Passwort lautet:  "+ newpw;
        
        
}