Bodyno
Rozwiązane

Napisz generator haseł w jeżyku C++ w codeblocks.

Program generuje n haseł o długości zadanej przez użytkownika (nie krótszej niż 8 znaków). Hasło składa się z wielkich i małych liter, cyfr oraz znaków specjalnych możliwych do wpisania przy pomocy klawiatury (min. 2 znaki z każdej kategorii). Program działa, dopóki użytkownik nie wybierze opcji Koniec.

Hasła są zapisywane w tablicy. Program umożliwia wydrukowanie konkretnego hasła lub całej tablicy w estetyczny sposób (x haseł w wierszu).

Pierwszą cześć kodu już zrobiłem : (nie umiem dodać tego do tablicy)
#include
#include
#include
#include

using namespace std;

char male [] = "qwertyuiopasdfghjklzxcvbnm"; // numer 1
char duze [] = "QWERTYUIOPASDFGHJKLZXCVBNM"; // numer 2
char liczby [] = "1234567890"; // numer 3
char spec [] = "!@#$%^&*"; // numer 4
int dlugosc;
int numer1;
int numer2;
int numer3;
int numer4;
int numer5;
int numer6;
int numer7;
int numer8;

int main()
{
cout << "jakiej dlugosc chcesz haslo ( haslo nie moze byc krotsze niz 8 znakow) : ";
cin >> dlugosc;

if(dlugosc<8){
cout << "nie ma wystarczajacej liczby znakow" ;
}

srand( time(NULL));

for(int i=1; i<=dlugosc; i++){

numer1=rand()% 26;
numer2=rand()% 26;
numer3=rand()% 10;
numer4=rand()% 9;
numer5=rand()% 26;
numer6=rand()% 26;
numer7=rand()% 10;
numer8=rand()% 9;

cout << i <<".wylosowane hasla to : " << numer1[male] << numer2[duze] << numer3[liczby] << numer4[spec] << numer5[male] << numer6[duze] << numer7[liczby] << numer8[spec] << endl;
}

return 0;
}



Odpowiedź :

Odpowiedź

Program sprawdzony pod Code::Blocks umieściłam w pierwszych czterech załącznikach. Natomiast przykładowe uruchomienie w ostatnim załączniku.

Program jest istotnie różny od tego, który napisałam do Twojego poprzedniego pytania na ten sam temat

  • komunikaty są w języku polskim; aby to osiągnąć konieczne jest użycie "wcout" zamiast "cout", konieczna jest litera "L"... oraz wiersze 2, 3 i 70;
  • zmieniłam, mam nadzieję, że ulepszyłam :) treść niektórych komentarzy;
  • program dotyczy tylko opcji podanych w tym pytaniu, więc jest zdecydowanie krótszy i prostszy;
  • zastąpiłam polecenie wypisania nowej linii znajdujące na końcu każdej opcji jednym takim poleceniu na końcu pętli;
  • inaczej zorganizowałam argumenty do niektórych poleceń wyjścia, mam nadzieję, że dzięki temu kod będzie czytelniejszy; najchętniej użyłabym  printf(),  tzn. w tym przypadku  wprintf(),  bo kod byłby łatwiejszy do zrozumienia, ale zdaje się mało kto używa printf()...

Wyjaśnienie

Tak jak jest sformułowane zadanie (polecenie w Twoim pytaniu), to widać, że jest oczekiwana nieskończona pętla z opcjami i taki program napisałam. Do wyboru są dwie nieskończone pętle

  • do { .. } while (true)
  • while (true) { ... }

Wyjście z pętli w według podanego tekstu zadania ma być zakończeniem programu  ( stąd  return 0 ).  Jednak w ogólnym przypadku to może być tylko przejście do dalszego ciągu programu. Wymaganie, że opcja  Koniec  równa się końcowi działania programu jest dużym ułatwieniem.

Niektóre ze znaków specjalnych nie powinny być używane w hasłach wpisywanych z klawiatury, na przykład znak tyldy ~.

Oczywiście koniecznie spójrz na moje komentarze, kod źródłowy i przykładowe uruchomienie w swoim poprzednim zadaniu na ten sam temat.

https://brainly.pl/zadanie/21366071

Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB