PDA

Visualizza la versione completa : [C] Parole a random e array di stringhe


zephyrio
26-12-2008, 19:54
Salve a tutti,

Innanzitutto volevo sapere come poter creare una specie di libreria mediante un array di stringhe.
Successivamente vorrei sapere come posso fare per avere una selezione casuale di parole da questo array di stringhe?
Scusate se la domanda può sembrare banale ma non ne vengo a capo

Grazie a tutti in anticipo per le risposte

Pacio88
26-12-2008, 23:22
Originariamente inviato da zephyrio
Innanzitutto volevo sapere come poter creare una specie di libreria mediante un array di stringhe.

Per libreria cosa intendi?Ti riferisci a "quella informatica" o a "quella che contiene dei libri"?

zephyrio
27-12-2008, 00:45
Originariamente inviato da Pacio88
Per libreria cosa intendi?Ti riferisci a "quella informatica" o a "quella che contiene dei libri"?

Semplicemente intendo un insieme di parole

Dovrebbe essere qualcosa tipo:

char str.array[3][] = {"sabbia" , "gatto", "cane"}

o almeno penso

Pacio88
27-12-2008, 09:30
Una volta che hai un array di stringhe ti è sufficente generare casualmente un valore intero compreso tra 0 e i-esimo indice dell'array, così potrai riferirti ad un elemento casuale dell'array. Per fare questo ti torna utile la funzione rand() già inclusa nell'header stdlib.h; per maggiore chiarezza guardati qui (http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html)

zephyrio
27-12-2008, 10:37
Originariamente inviato da Pacio88
Una volta che hai un array di stringhe ti è sufficente generare casualmente un valore intero compreso tra 0 e i-esimo indice dell'array, così potrai riferirti ad un elemento casuale dell'array. Per fare questo ti torna utile la funzione rand() già inclusa nell'header stdlib.h; per maggiore chiarezza guardati qui (http://www.cplusplus.com/reference/clibrary/cstdlib/rand.html)

Ma la dichiarazione che ho fatto qui sopra ha senso o c'è qualche errore?

Pacio88
27-12-2008, 10:44
Originariamente inviato da zephyrio
Ma la dichiarazione che ho fatto qui sopra ha senso o c'è qualche errore?

Se provi a compilarla avrai una risposta!

zephyrio
27-12-2008, 11:16
Originariamente inviato da Pacio88
Se provi a compilarla avrai una risposta!

Ho provato...devo specificare anche l'altra dimensione.
Così andrebbe bene per fare quel'insieme di parole secondo te:


char strarray[3][100] = {"sabbia" , "gatto", "cane"};

Già che ci sono vorrei chiedervi un'altra cosa.
Come posso dividere una stringa?
Ad esempio: Castello.
C'è la possibilità di farla dividere all'utente (nella maniera che preferisce) per poi utilizzare le due metà in altro modo?

Esempio:

Castello, l'utente lo divide in "cast" e "ello" per poi formare altre due parole. Ad esempio: CASTa e ombrELLO

oregon
27-12-2008, 16:07
Originariamente inviato da zephyrio
Come posso dividere una stringa?


Devi lavorare con le funzioni per la gestione delle stringhe e con i puntatori.

In genere si fa un accurato studio di tali funzioni (e dell'uso dei puntatori) e dopo si scrivono programmi del genere ... fare il contrario non e' buona cosa ...

zephyrio
27-12-2008, 18:27
Purtroppo il tempo è quello che è e mi trovo in una situazione abbastanza critica

oregon
27-12-2008, 18:50
Anche se in pvt ti ho spiegato come la penso, dai un'occhiata a queste righe



char strarray[3][100] = {"sabbia" , "castello", "cane"};
char parola1[100], parola2[100];
int sep;

printf("%s\n", strarray[1]);

sep=4;

strncpy(parola1, strarray[1], sep);
parola1[sep]='\0';
strcat(parola1, "a");
printf("%s\n", parola1);

strcpy(parola2, "ombr");
strcat(parola2, strarray[1]+sep);
printf("%s\n", parola2);


e cerca di trovare il tempo per studiare le funzioni

strncpy
strcat
strcpy

Loading