PROBLEMA il generatore di password si blocca.

ilpiccio

Nuovo Utente
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:

DispatchCode

Utente Attivo
578
334
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
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 automaticamente unito:

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:

rctimelines

Utente Èlite
3,936
1,281
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
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
 

ilpiccio

Nuovo Utente
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..
 

Entra

oppure Accedi utilizzando