[PROBLEMA] il generatore di password si blocca.

#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:
566
321
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.
[automerge]1543091234[/automerge]
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:
3,480
1,019
Hardware Utente
CPU
AMD Ryzen 5 2600x - Intel i5 6400
Dissipatore
stock - Arctic Freezer 11LP
Scheda Madre
Asrock Fatal1ty 4K - Asus H110M
Hard Disk
Samsung 970evo - vari
RAM
16GB G.Skill TridentZ 3000 - 8GB CORSAIR Vengeance LPX 2400
Scheda Video
ATI Firepro V7900 2GB - Asus R9 280x 3Gb
Monitor
DELL 2419P 2K + Benq 19'' - Acer 24" FHD
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..
 

Entra