PROBLEMA il generatore di password si blocca.

Pubblicità

ilpiccio

Nuovo Utente
Messaggi
11
Reazioni
0
Punteggio
21
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:
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.
--- i due messaggi sono stati uniti ---
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:
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
 
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..
 
.. 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.
 
Pubblicità
Pubblicità
Indietro
Top