Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182

    [c++] generatore password

    ho fatto questo esercizio...ma non riesco a compilare ed eseguire...cosa c'è che non va nel codice?

    TRACCIA:
    il sistema deve chiedere all'utente se inserire una password manualmente o generarla automaticamente; controllarne in ogni caso il livello di sicurezza e nel caso di password insicure ripetere il procedimento fino all'ottenimento di una password sicura.
    Per determinare il livello di sicurezza alla password si assegna un punteggio..la password si considera sicura se tale punteggio è >5.
    Si assegna cosi: data una password inizialmente al punteggio si assegna un valore uguale al numero di caratteri che compongono la password; a)se la password non contiene almeno una cifra il punteggio viene decrementato di 1; b)se non è presente almeno un underscore(_) o un punto(.) il punteggio si decrementa di 1; c)per ogni coppia di caratteri consecutivi uguali presenti nella password, il punteggio si decrementa di 1;

    codice:
    
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    #include <cstring>
    
    using namespace std;
    
    int controllosicurezza(char *W, int punteggio);
    void genera(char *W);
    
    int main(){
        char W[100];
        int punteggio=0;
        int scelta=0;
        
        while(punteggio < 5){
                        cout<<"Digita 0 per inserire, 1 per generare"<<endl; cin>>scelta;
                        if(scelta == 0){
                                  cout<<"Digita una password"<<endl;
                                  cin.getline(W,100);
                                  punteggio=controllosicurezza(W,punteggio);}
                        if(scelta == 1){
                                  genera(W);
                                  punteggio=controllosicurezza(W,punteggio);
                                  }
    }
      
    system("pause");
    return 0;
    }
    
    
    int controllosicurezza(char *W, int punteggio){
        int punteggio=strlen(W);
        int n=4;
        for(int i=0; i<strlen(W); i++){
                if('0'!= W[i] && '1' != W[i] && '2' != W[i] && '3'!= W[i] && '4' != W[i] && '5' != W[i] && '6'!= W[i] && '7' != W[i] && '8' != W[i] && '9' != W[i])
                --punteggio;
                
                if('_' != W[i] && '.' != W[i])
                --punteggio;
    }
    
    for(int i=0; i<strlen(W); i++){
            for(int j=1; j<strlen(W); j++){
                    if(W[i]==W[j] && W[i+1]==W[j+1])
                    --punteggio;
                    }
            }
    return punteggio;        
    }
    
    void genera(char *W){
         char *W={"abcdefghilmnopqrstuvz0123456789._"};
         int min=0, random_1=0, random_2=0;
         srand(time(0));
         min(strlen(W)-1)/2;
         for(int i=0; i<strlen(W); i++){
                 random_1=rand()%min;
                 random_2=rand()%min;
                 random_2+=min;
                 
                 char temp;
                 temp=w[random_1];
                 W[random_1]=W[random_2];
                 W[random_2]=temp;
    }
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: [c++] generatore password

    Originariamente inviato da mistergks
    ma non riesco a compilare ...cosa c'è che non va nel codice?
    Perché non ce lo dici tu? Quali sono gli errori del compilatore?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    ho risolto gli errori di sintassi e quindi di compilazione...ora riesco ad eseguire il codice ma non mi funziona bene. Mi chiede di premere 0 se inserire password manualmente, 1 per generarla... però poi non funziona nessuna delle due funzioni... come mai?

    NUOVO CODICE:
    codice:
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    #include <cstring>
    
    using namespace std;
    
    int controllosicurezza(char *W, int punteggio);
    void genera(void);
    
    int main(){
        char W[100];
        int punteggio=0;
        int scelta=0;
        
        while(punteggio < 5){
                        cout<<"Digita 0 per inserire, 1 per generare"<<endl; cin>>scelta;
                        if(scelta == 0){
                                  cout<<"Digita una password"<<endl;
                                  cin.getline(W,100);
                                  punteggio=controllosicurezza(W,punteggio);}
                        if(scelta == 1){
                                  genera();
                                  punteggio=controllosicurezza(W,punteggio);
                                  }
    }
      
    system("pause");
    return 0;
    }
    
    
    int controllosicurezza(char *W, int punteggio){
        punteggio=strlen(W);
        int n=4;
        for(int i=0; i<strlen(W); i++){
                if('0'!= W[i] && '1' != W[i] && '2' != W[i] && '3'!= W[i] && '4' != W[i] && '5' != W[i] && '6'!= W[i] && '7' != W[i] && '8' != W[i] && '9' != W[i])
                --punteggio;
                
                if('_' != W[i] && '.' != W[i])
                --punteggio;
    }
    
    for(int i=0; i<strlen(W); i++){
            for(int j=1; j<strlen(W); j++){
                    if(W[i]==W[j] && W[i+1]==W[j+1])
                    --punteggio;
                    }
            }
    return punteggio;        
    }
    
    void genera(void){
         char *W={"abcdefghilmnopqrstuvz0123456789._"};
         int min=0, random_1=0, random_2=0;
         srand(time(0));
         min=(strlen(W)-1)/2;
         for(int i=0; i<strlen(W); i++){
                 random_1=rand()%min;
                 random_2=rand()%min;
                 random_2+=min;
                 
                 char temp;
                 temp= W[random_1];
                 W[random_1]=W[random_2];
                 W[random_2]=temp;
    }
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da mistergks
    .. non funziona nessuna delle due funzioni...
    Dopo la cin della scelta devi inserire una

    cin.sync();

    altrimenti avrai problemi di inserimento per il buffer dei tasti.

    Per il resto, quando chiami la funzione controllosicurezza che restituisce il valore in punteggio, non mostri il valore di punteggio ... quando chiami la funzione genera, lavori con una stringa W locale alla funzione (primo errore) e costante (secondo errore), e comunque, al ritorno, non visualizzi né la stringa generata (quarto errore) né il punteggio (quinto errore).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.