PDA

Visualizza la versione completa : [c]Tipi strutturati


Vincenzoflamini
13-04-2010, 22:16
Salve, ho un problema con l'assegnazione di un tipo strutturato, vi spiego:
Ho un Struct chiamata Giocatore di questo tipo:

struct _giocatore
{
char cognome[5];
char nome[5];
int valore;
};
typedef struct _giocatore Giocatore;

ho dichiarato un array di tipo Giocatore: Giocatore array_giocatori[88]

ho poi assegnato a questi 88 giocatori valori casuali per nome, cognome e valore . Ora il mio problema che devo creare varie SQUADRE contenente i giocatori..
l'array squadra[8] (ho bisogno di creare 8 squadra contenenti 11 giocatori ognuna) che andr a creare di che tipo deve essere per contenere i Giocatori (che a loro volta contengono il nome,cognome e valore)?

oregon
13-04-2010, 22:20
Potrebbe essere una struttura con un nome (il nome della squadra) e con un vettore di 11 interi contenenti l'indice del vettore array_giocatori.

Vincenzoflamini
13-04-2010, 23:09
Originariamente inviato da oregon
Potrebbe essere una struttura con un nome (il nome della squadra) e con un vettore di 11 interi contenenti l'indice del vettore array_giocatori.
Grazie per la risposta ho provato in questo modo:

struct _squadra
{
int player[11];
};
typedef struct _squadra Squadra;

int player mi dovrebbe contenere l'indice dell'array_giocatore
il nome della squadra non mi serve al fine dell'esecuzione.
E' semplice assegnare valori interi a array_squadra.player ma non ho capito come riutilizzarli... :confused: ti faccio un esempio ogni squadra ha VALORE determinato dal valore dei singoli giocatori (vedi struct post precedente) come faccio a ricavarne il risultato?

oregon
13-04-2010, 23:15
Se s una squadra, allora



int ixp, valsq=0;
for(ixp=0; ixp<11; ixp++)
valsq += array_giocatori[s.player[ixp]].valore;


in valsq hai il suo valore.

Vincenzoflamini
13-04-2010, 23:36
Originariamente inviato da oregon
Se s una squadra, allora



int ixp, valsq=0;
for(ixp=0; ixp<11; ixp++)
valsq += array_giocatori[s.player[ixp]].valore;


in valsq hai il suo valore.
Ah perfetto era questo che cercavo di capire - array_giocatori[s.player[ixp]].valore - sei stato gentilissimo Grazie Mille :) !

Vincenzoflamini
06-05-2010, 15:39
Originariamente inviato da oregon
Se s una squadra, allora



int ixp, valsq=0;
for(ixp=0; ixp<11; ixp++)
valsq += array_giocatori[s.player[ixp]].valore;


in valsq hai il suo valore.
Oregon scusami se ci ritorno ora, ho usato questo codice :



int contatore, valoresquadra;
for(contatore=0; contatore<11; contatore++)
{
valoresquadra += array_giocatori[array_squadra[0].player[contatore]].valore;
}

Questo pezzo di codice passa al compilatore , ma quando va in esecuzione il Dev si blocca e sono costretto a ravviarlo. Se elimino questa porzione di codice il programma gira ed esegue normalmente mi sapresti dire cosa ho sbagliato?

oregon
06-05-2010, 19:38
L'unico errore che vedo in rosso



int contatore, valoresquadra=0;
for(contatore=0; contatore<11; contatore++)
{
valoresquadra += array_giocatori[array_squadra[0].player[contatore]].valore;
}


ma se si blocca, allora il problema un altro.

O array_squadra non dimensionato correttamente, oppure il valore di

array_squadra[0].player[contatore]

non corretto. Altrimenti (ma non mi pare realistico) un bug di Dev (che ti consiglio di abbandonare comunque) ...

Prova a debuggare un po' ... controlla tutti i valori di

array_squadra[0].player[contatore]

visualizzandoli ...

Vincenzoflamini
07-05-2010, 01:52
Non mi sembrano ci siano errori :confused: ,queste sono le parti dichiarative :


struct _giocatore
{
char cognome[5];
char nome[5];
int valore;
};
typedef struct _giocatore Giocatore;

struct _squadra
{
int player[11];
};
typedef struct _squadra Squadra;



int main()
{
srand((unsigned int)time(0));
Giocatore array_giocatori[11];
Squadra array_squadra[8];

oregon
07-05-2010, 09:33
Ma hai inizializzato correttamente tutti i valori in

array_squadra[0].player[...]

o hai lasciato valori casuali?

Vincenzoflamini
31-05-2010, 04:05
Originariamente inviato da oregon
Ma hai inizializzato correttamente tutti i valori in

array_squadra[0].player[...]

o hai lasciato valori casuali?

Ho risolto il problema del blocco provando ad assegnare una paio di valori in questo modo:
array_squadra[0].player[0]=2;
array_squadra[0].player[1]=3;

ma purtroppo il testo mi chiede le squadre devono essere formate in modo casuale, e se provassi ad usare rand()%88 in modo da scegliere casualmente un indice di un giocatore tra gli 88 magari andrebbe bene ma non evito che un giocatore possa essere scelto pi volte in una stessa squadra... :incupito:

Loading