PROBLEMA il generatore di password si blocca.

ilpiccio

Nuovo Utente
11
0
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

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
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:

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.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
 

ilpiccio

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

Andretti60

Utente Èlite
6,440
5,091
.. 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..
Terzo anno di ITIS e non avete ancora fatto i vettori?! Scusa, nel tuo codice hai scritto char caratteri[300]; che E' un vettore.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili