|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
[C] Generare lettere casuali in array
Salve ho bisogno di sviluppare queste due parti di programma :
Ad ogni giocatore viene assegnato un numero casuale nell’intervallo [0,10]. In maniera casuale vengono create 8 squadre. Codice:
struct _giocatore
{
char cognome;
char nome;
int valore;
}
typedef struct _giocatore Giocatore;
Giocatore array_giocatori[88]; */definisco un array di tipo GIOCATORE da 88
for (i=0;i<88;i++)
{
array_giocatori[i].valore=rand()%11 */ assegno un numero casuale da 1a10 }
Inizialmente vengono considerati 88 giocatori identificati dal Cognome e Nome (anche solo lettere casuali). si puo fare cosi ?? : Codice:
struct _giocatore
{
char cognome;
char nome;
int valore;
}
typedef struct _giocatore Giocatore;
Giocatore array_giocatori[88]; */definisco un array di tipo GIOCATORE da 88
char nomi[21]={a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z};
char cognomi[21]={a,b,c,d,e,f,g,h,i,l,m,n,o,p,q,r,s,t,u,v,z};
for (i=0;i<88;i++)
{
array_giocatori[i].nome=rand()%nomi
array_giocatori[i].cognome=rand()%cognomi
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12960
|
Al volo:
se devi usare lettere (char), sappi che di fatto sono interi (compresi tra 65 e 90 per le lettere minuscole e maiuscole), per cui potresti fare in modo di estrarre un numero in quell'intervallo. Dai un'occhiata alla tavola ASCII. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
rand()%11 genera numeri da 0 a 10.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
secondo me per i nomi e i cognomi ti conviene creare due array che contengano una 50ina di nomi propri di persona ( reali) e lo stesso per i cognomi
e poi in modo casuale li accoppi. Se scegli le lettere in modo casuale ti escono nomi come djaskljdklas julktyujlkt che neppure nel villaggio piu sperduto della turchia riesci a trovare |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Quote:
se faccio cosi non posso scegliere la lunghezza del nome: Codice:
Giocatore array_giocatori[88];
for (i=0;i<88;i++)
{
array_giocatori[i].valore=(65+rand()%26);
potrei farlo cosi?? (non so se è giusto) Codice:
void rand_name (*char array_giocatore.nome, int lunghezza_nome)
{
int i;
char *pnome=array_giocatori.nome;
for (i=0;i<lunghezza_nome;i++)
{
*pnome++=(65+rand()%26);
}
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12960
|
Non ho ben capito se vuoi generare nomi e cognomi come sequenze di lettere casuali oppure usare una singola lettera...
Nel primo caso secondo me ti conviene fare come ha detto bobbytre, ti crei due array di nomi e cognomi e poi li mischi casualmente (estrai un indice per i nomi, ed un indice per i cognomi). Nel secondo caso è abbastanza semplice perché: Codice:
struct _giocatore
{
char cognome;
char nome;
int valore;
}
typedef struct _giocatore Giocatore;
Giocatore array_giocatori[88]; */definisco un array di tipo GIOCATORE da 88
for (i=0;i<88;i++)
{
array_giocatori[i].valore=rand()%11 */ assegno un numero casuale da 1a10
array_giocatori[i].nome = 65+rand()%26;
array_giocatori[i].cognome = 65+rand()%26;
}
La struct che hai dichiarato contiene dei char, quindi singoli caratteri, non stringhe. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Quote:
Si può tranquillamente fare Codice PHP:
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12960
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
una funzione random che si autoinzializza no ?
Codice PHP:
|
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Quote:
Si supponga di gestire un torneo di calcio tra 8 squadre. Inizialmente vengono considerati 88 giocatori identificati dal Cognome e Nome (anche solo lettere casuali). Ad ogni giocatore viene assegnato un numero casuale nell’intervallo [0,10]. In maniera casuale vengono create 8 squadre. Ti volevo chiedere quindi come devo sostituire il char nome e il char cognome nella struct per renderle stringhe? il resto è giusto? |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Codice PHP:
Codice PHP:
Ultima modifica di bobbytre : 25-02-2010 alle 22:39. |
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Quote:
Allora hai usato due contatori "i" (per gli 88 giocatori) e "j" (per un nome da 16caratteri ) però non ho ben capito perchè usi un puntatore a una char , e il comando calloc cosa significa? |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Quote:
meglio cosi: Codice PHP:
|
|
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Quote:
Ho provato ad usare due contatori in modo da definire quanti caratteri inserire che ne dite?? |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
memset serve per azzerare il contenuto del vettore. Puoi farlo anche tu manualmente.
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Quote:
questo: Codice PHP:
in questo: Codice PHP:
|
|
|
|
|
|
|
#18 | |
|
Member
Iscritto dal: Jul 2006
Messaggi: 96
|
Quote:
il codice genera correttamente valori casuali : Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct _giocatore
{
char cognome[5];
char nome[5];
int valore;
};
typedef struct _giocatore Giocatore;
void visualizza_aI (int v[], int n)
{
int i;
for (i=0;i<n;i++)
printf("%4d", v[i]);
}
int main()
{
srand((unsigned int)time(0));
Giocatore array_giocatori[88];
int i;
int j=0;
for (i=0;i<88;i++)
{
array_giocatori[i].valore=rand()%11;
while (j<5)
{
array_giocatori[i].nome[j] =rand()%26 + 65;
j++;
}
}
printf("visualizzo valore in giocatore [5] %d", array_giocatori[5].valore);
printf("visualizza i caratteri %c\n ",array_giocatori[3].nome[5]);
printf("visualizza i caratteri %c\n ", array_giocatori[3].nome[4]);
system("PAUSE");
return 0;
}
}
Ultima modifica di Vincenzoflaminio : 02-03-2010 alle 17:42. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:29.




















