mistergks
28-01-2012, 01:43
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;
#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;
}
}
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;
#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;
}
}