PDA

Visualizza la versione completa : [C] Programma per indovinare un parola


battagliacom
26-06-2008, 22:48
sto cercando di creare un programma che faccia indovinare all'utente una parola (si lo s scritta nel codice :D ) Per ho un problema perch non so come fare per far inserire la parola all'utente. Ho provato usando gli array e mi uscito qualcosa del genere:

char *string = "eseguibile";
char parol[9]= {e,s,e,g,u,i,b,i,l,e};

int main()
{
int i;
printf("Scrvi 1 per indovinare la parola, scrivi 0 per avere un aiuto:");
scanf("%d", i)
while (parol != *string){
if ( i == 1){
printf("Inserisci la parola che hai pensato:");
scanf("%c", parol[9]);
}
else if (i == 0){
int n;
printf("Qual' il numero del carattere che volevi cercare?");
scanf("%d", n);
printf("%c il carattere che volevi\n",*(string+n));
}
}
}


purtroppo non conosco bene gli arraye non riesco a renderli accessibili, meglio, non so comesi rendono accessibili.
Per caso questo programma si potrebbe anche creare in un altro modo?(se nn si riesc a risolvere col metodo che ho proposto io).

oregon
26-06-2008, 22:53
Beh ... prima di iniziare a programmare, dovresti studiare un po' su un libro, le nozioni "di base" ...

Un forum NON sostituisce i libri ...

Un array di caratteri per la tua parola lo crei cosi'

char parola[30];

e l'input lo fai cosi'

scanf("%s", parola);

battagliacom
26-06-2008, 23:53
mi sono procurato una guida ma credo che dovr trovarne un'altra perch non mi sta facendo capire niente (chis come ho capito le variabili!), comunque ho modificato il programma con un do-while, adesso che per ho risolto il problema degli array si presentato all'improvviso uno con le stringhe.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *string = "eseguibile";
char parol[10];
int i;

int main()
{
do{
printf("Scrvi 1 per indovinare la parola, scrivi 0 per avere un aiuto:");
scanf("%d", &i);
if ( i == 1){
printf("Inserisci la parola che hai pensato:");
scanf("%s", parol);
if (parol == *string){
printf("Bravo hai indovinato la parola!\n");
return 0;
}
else {
printf("Peccato! Hai sbagliato!\n");
}
}
else if (i == 0){
int n;
printf("Qual' il numero del carattere che volevi cercare?");
scanf("%d", &n);
printf("%c il carattere che volevi\n",*(string+n-1));
}
}while (parol != *string);
return 0;
}

il compilatore mi da errore nel momento in cui metto l'asterisco nei punti in grassetto, se poi quando lo eseguo e inserisco la parola mi dice sempre che ho sbagliato a inserire la parola.
Se invece elimino gli asterischi il compilatore non mi da errori, ma nell'esecuzione mi da sempre lo stesso errore come se avessi sbagliato parola.

oregon
26-06-2008, 23:58
Non scrivere codice a caso ...

Intanto in C, due stringhe non si confrontano con

==

ma usando l'opportuna funzione (la strcmp). Si scrive

if(strcmp(string, parol)==0)

per capire se le stringhe sono uguali e

if(strcmp(string, parol)!=0)

per capire se sono diverse ...

Inoltre, non prevedere solamente 10 caratteri per la parola ... prepara la stringa con 30 caratteri

char parol[30];

MItaly
27-06-2008, 00:19
Studio su libro cartaceo = buono.
Studio su guide online = no buono.
Spiluccamento di guide online = programmazione a caso = ASSOLUTAMENTE no buono.

oregon
27-06-2008, 00:31
Originariamente inviato da MItaly
Studio su libro cartaceo = buono.
Studio su guide online = no buono.
Spiluccamento di guide online = programmazione a caso = ASSOLUTAMENTE no buono.

Concordo ... :)

Specialmente per il fatto che sei giovanissimo ... comincia bene, se vuoi imparare a programmare, fallo correttamente ...

MacApp
27-06-2008, 03:51
Originariamente inviato da battagliacom


printf("Qual' il numero del carattere che volevi cercare?");



"Qual " si scrive senza apostrofo ;-)

n0t
27-06-2008, 07:28
Originariamente inviato da MacApp
"Qual " si scrive senza apostrofo ;-) a Napoli abbiamo la licenza poetica XD

battagliacom
27-06-2008, 11:00
Grazie seguir i vostri consigli e cercher di procurarmi un libro su cartaceo (stavo seguendo la guida su wikibook (http://it.wikibooks.org/wiki/C).
Comunque il programma finito questo, anche se devo trovare un modo per far cambiare continuamente la parola...ma per questo c tempo, devo ancora imparare le basi...e studiare su un libro.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *string = "eseguibile";
char parol[30];
int i;
int e=138;

int main()
{
do{
printf("Scrvi 1 per indovinare la parola, scrivi 0 per avere un aiuto:");
scanf("%d", &i);
if ( i == 1){
printf("Inserisci la parola che hai pensato:");
scanf("%s", parol);
if(strcmp(string, parol)==0) {
printf("Bravo hai indovinato la parola!\n");
return 0;
}
else {
printf("Peccato! Hai sbagliato!\n");
}
}
else if (i == 0){
int n;
printf("Qual %c il numero del carattere che volevi cercare?", e);
scanf("%d", &n);
printf("%c %c il carattere che volevi\n",*(string+n-1), e);
}
}while(strcmp(string, parol)!=0) ;
return 0;
}

Loading