[PROBLEMA] il generatore di password si blocca.

  • Il Forum di Tom's Hardware, la più grande community dedicata all'Hardware e all'Informatica. Iscriviti Ora!
#1
ciao, sono al terzo anno di programmazione e con le mie conoscenze basilari ultimamente mi sto 'accimentando' nello sviluppare tutti i programmi che mi vengono in mente.
circa 3 ore fa mi è venuta in mente un programma:un generatore casuale di password.
ma ho riscontrato un piccolo problema: se genereo una password di 300 caratteri tutto okay.
ma quando vado a generare una seconda password di 300 caratteri la generazione si blocca a meno di 100 caratteri, qualcunbo mi sa dare una mano??

ecco i codice:

C++:
#include<iostream>

#include<stdlib.h>

#include<time.h>

using namespace std;

int main ()

{

    int noa,nob;

    char scel;

    for(nob=0;nob<=1;nob++)

    {

        int z=0,j=0,c=0;

        char k;

        char caratteri[300];

        cout<<"inserisci in numero di caratteri che comporranno la tua password(massimo 300 caratteri)=";

        cin>>z;

        if(z<=300)

        {

        system("cls");

        srand((unsigned)time(0));

        for(int i=0;i<z;i++)

        {

            c=c+1;

            system("cls");

            cout<<"generando il carattere "<<c<<" di "<<z<<" caratteri.";

            _sleep(0);

            j=rand()%67;

             {

                

                 if(j==0)

                 {

                     k='0';

                }

                if(j==1)

                 {

                     k='1';

                }

                if(j==2)

                 {

                     k='2';

                }

                if(j==3)

                 {

                     k='3';

                }

                if(j==4)

                 {

                     k='4';

                }

                if(j==5)

                 {

                     k='5';

                }

                if(j==6)

                 {

                     k='6';

                }

                if(j==7)

                 {

                     k='7';

                }

                if(j==8)

                 {

                     k='8';

                }

                if(j==9)

                 {

                     k='9';

                }

                if(j==10)

                 {

                     k='q';

                }

                if(j==11)

                 {

                     k='w';

                }

                if(j==12)

                 {

                     k='e';

                }

                if(j==13)

                 {

                     k='r';

                }

                if(j==14)

                 {

                     k='t';

                }

                if(j==15)

                 {

                     k='y';

                }

                if(j==16)

                 {

                     k='u';

                }

                if(j==17)

                 {

                     k='i';

                }

                if(j==18)

                 {

                     k='o';

                }

                if(j==19)

                 {

                     k='p';

                }

                if(j==20)

                 {

                     k='a';

                }

                if(j==21)

                 {

                     k='s';

                }

                if(j==22)

                 {

                     k='d';

                }

                if(j==23)

                 {

                     k='f';

                }

                if(j==24)

                 {

                     k='g';

                }

                if(j==25)

                 {

                     k='h';

                }

                if(j==26)

                 {

                     k='j';

                }

                if(j==27)

                 {

                     k='k';

                }

                if(j==28)

                 {

                     k='l';

                }

                if(j==29)

                 {

                     k='m';

                }

                if(j==30)

                 {

                     k='n';

                }

                if(j==31)

                 {

                     k='b';

                }

                if(j==32)

                 {

                     k='v';

                }

                if(j==33)

                 {

                     k='c';

                }

                if(j==34)

                 {

                     k='x';

                }

                if(j==35)

                 {

                     k='z';

                }

                if(j==36)

                 {

                     k='Q';

                }

                if(j==37)

                 {

                     k='W';

                }

                if(j==38)

                 {

                     k='E';

                }

                if(j==39)

                 {

                     k='R';

                }

                if(j==40)

                 {

                     k='T';

                }

                if(j==41)

                 {

                     k='Y';

                }

                if(j==42)

                 {

                     k='U';

                }

                if(j==43)

                 {

                     k='I';

                }

                if(j==44)

                 {

                     k='O';

                }

                if(j==45)

                 {

                     k='P';

                }

                if(j==46)

                 {

                     k='A';

                }

                if(j==47)

                 {

                     k='S';

                }

                if(j==48)

                 {

                     k='D';

                }

                if(j==49)

                 {

                     k='F';

                }

                if(j==50)

                 {

                     k='G';

                }

                if(j==51)

                 {

                     k='H';

                }

                if(j==52)

                 {

                     k='J';

                }

                if(j==53)

                 {

                     k='K';

                }

                if(j==54)

                 {

                     k='L';

                }

                if(j==55)

                 {

                     k='Z';

                }

                if(j==56)

                 {

                     k='X';

                }

                if(j==57)

                 {

                     k='C';

                }

                if(j==58)

                 {

                     k='V';

                }

                if(j==59)

                 {

                     k='B';

                }

                if(j==60)

                 {

                     k='N';

                }

                if(j==61)

                 {

                     k='M';

                }

                if(j==62)

                 {

                     k='!';

                }

                if(j==63)

                 {

                     k='?';

                }

                if(j==64)

                 {

                     k='_';

                }

                if(j==65)

                 {

                     k='-';

                }   

                if(j==66)

                 {

                     k='$';

                }

                if(j==67)

                 {

                     k='€';

                }

             }

            caratteri=k;

        }

        system("cls");

        cout<<"fatto! la tua password e'="<<endl;

        for(int i=0;i<z;i++)

        {

        cout<<caratteri;

        }

        }

        else

        {

            cout<<"ERRORE: MASSIMO 300 CARATTERI.";

        }



















    cout<<endl<<"vuoi ripetere l'operazione? [s/n]? ";

    cin>>scel;

    switch (scel)

    {

    case 's':

        system("cls");

        nob=0;

    break;

    case 'n':

        

        nob=1;

    break;}

    }

}
 
Ultima modifica:
429
265
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
#2
Pubblica il codice utilizzando il tag CODE per favore, così è illeggibile. Vista la lunghezza anche il tag SPOILER ci starebbe bene... :)

Comunque visto che conosci cicli ed array, prova a trovare una soluzione migliore. Tutti quegli if per scegliere i caratteri sono inutili.
Puoi sfruttare direttamente la codifica ASCII; in alternativa puoi anche creare un array con tutti i caratteri e generare un numero da 0 alla lunghezza del tuo array: questo numero farà da indice all'interno di quell'array.
Post unito automaticamente:

Comunque non c'è un unico problema: assegni k a caratteri, e non ad una sua posizione; inoltre il simbolo dell'euro non è a 8bit.
 
Ultima modifica:
2,897
735
Hardware Utente
CPU
i7 3770
Dissipatore
stock intel
Scheda Madre
Gigabyte GA-H67A-UD3H-B3
Hard Disk
SSD SAMSUNG 850EVO 250GB + HDD WD GREEN CAVIAR 2TB
RAM
16GB = Corsair XMS3 4x4GB DDR3 1600MHz CL9
Scheda Video
ATI Firepro V7900 2GB
Scheda Audio
Soundblaster X-Fi
Monitor
HP 27'' + Benq 19''
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
#3
Accimentando?!? Cosa significa?.. le conoscenze di base sono di Italiano.. quelle di programmazione molto più scarse.. cosa sarebbe quella sottospecie di codice illeggibile???

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
#4
Accimentando?!? Cosa significa?.. le conoscenze di base sono di Italiano.. quelle di programmazione molto più scarse.. cosa sarebbe quella sottospecie di codice illeggibile???

Inviato dal mio Nexus 5 utilizzando Tapatalk
innanzitutto mi sono sbagliato con una parola dialettale, volevo dire cimentando;
poi calmiamo gli animi.. ho detto che faccio il terzo anno di un itis.. non il terzo anno per un dottorato in ingegneria informatica.. considera che i vettori a scuola ancora non li abbiamo fatti..