|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
[C]sistema per determinare codice segreto
Salve devo scrivere un programma che simuli un sistema per determinare un codice segreto. Il programmatore denisce un codice di 5 lettere dell'alfabeto e in maniera casuale simula dei codici fino a che non trova quello esatto. Visualizzare il numero di prove effettuate.
Codice:
int confronto_stringhe (char s[],char t[])
{
int i;
for (i=0; i<5 ; i++){
if (s[i] != t[i])
return 0;
else
return 1;
}
}
int main()
{
char codice[6];
char pass[5];
char alfabeto[]={'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','r','s','t','u','v','z'};
int lungalfabeto=21;
int i,nc;
printf("inserisci il codice a tastiera di 5 caratteri e termina la stringa \n");
gets(codice);
for (i=0;i<5;i++)
{
nc= rand()%lungalfabeto;
pass[i]=alfabeto[nc];
}
confronto_stringhe(codice,pass);
system("PAUSE");
return 0;
}
Non mi è chiaro però come far riprovare a determinare 5 lettere casuali quando non sono ugali. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Io invece non ho capito cosa non ti è chiaro
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Una cosa posso dirtela al volo... Non funzionerà mai.. C'è un erroraccio nella funzione di confronto delle stringhe! Inoltre nella funzione main il valore di ritorno della funzione di confronto non lo utilizzi!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
se sai a priori che il codice è di 5 lettere
puoi fare banalmente cosi: Codice PHP:
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
srand(time(NULL));
char codice[6];
char pass[5];
char alfabeto[]={'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','r','s','t','u','v','z'};
int lungalfabeto=21;
int i,nc,j,k,l,m,contatore;
printf("inserisci il codice a tastiera di 5 caratteri e termina la stringa \n");
gets(codice);
for (i=0;i<5;i++)
{
nc= rand()%lungalfabeto;
pass[i]=alfabeto[nc];
}
printf("pass = %c %c %c" ,pass[0],pass[1],pass[2]);
for(i='a';i<'z';i++)
{
for(j='a';j<'z';j++)
{
for(k='a';k<'z';k++)
{
for(l='a';l<'z';l++)
{
for(m='a';m<'z';m++)
{
printf(pass,"%c%c%c%c%c",i,j,k,l,m);
if( ! strcmp(codice,pass) )
{
printf("Trovato !!!");
printf("Tentativi : %d\n",contatore);
exit();
}
contatore++;
}
}
}
}
}
system("PAUSE");
return 0;
}
Grazie anche bobbytre per la cortese risposta ... solo un errore : "too few arguments to function `exit' " non ho mai studiato questa funzione ma mi sembra di capire che mi permette di uscire dai for .. quale argomento devo mettere tra le parentesi? |
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Quote:
Codice:
int confronto_stringhe (char s[],char t[])
{
int i;
for (i=0; i<5 ; i++){
if (s[i] != t[i])
return 0;
else
return 1;
}
}
Codice:
int confronto_stringhe (char s[],char t[])
{
int i;
for (i=0; i<5 ; i++){
if (s[i] != t[i])
return 0;
}
return 1;
}
Quote:
__________________
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:10.




















