PDA

Visualizza la versione completa : [C] quesito su come procedere


bikerinside
21-07-2010, 10:58
salve a tutti, mi ritrovo a dover svolgere un progetto, che mi stà dando non pochi problemi
vorrei qualche cosiglio e dritta su come sviluppare quanto chiede questa parte della mia traccia:

Si supponga di gestire un torneo di rugby tra 8 squadre. Inizialmente vengono
considerati 88 giocatori identificati dal Cognome, Nome (anche solo lettere casuali) e il
ruolo. Ad ogni giocatore viene assegnato un numero casuale nell’intervallo [0,10]. In
maniera casuale vengono create 8 squadre.

premetto che ho già provato a sviluppare questa parte ma con scarsi risultati, in sintesi vorrei sapere qualè il modo migliore, per creare gli 88 giocatori per poi creare casualmente le 8 squadre composte da ovviamente 11 giocatori.

vi posto un po di codice:



// struttura degli 88 giocatori.
struct giocatore {

char nome[6];

char cognome[6];

int ruolo;

} giocatori[88];

// struttura delle 8 squadre.
struct squadra {

char *nome;

struct giocatore giocatori [11];

} squadre[8];



non so se è corretto, ma ho dei problemi col procedere perchè non so come creare "casulamente" le squadre dato che dovrei fare delle operazioni con le due strutture.

grazie per le risposte.

bikerinside
21-07-2010, 17:03
ragazzi, scusate anche un suggerimento, non voglio che me lo svolga qualcuno, però davvero non so come muovermi. :dhò:

oregon
21-07-2010, 17:45
Il problema è che non si sa dove trovi difficoltà.

Non sai estrarre dei numeri casuali compresi tra due valori ? Cominciamo da questo ...

bikerinside
21-07-2010, 17:52
si con la funzione rand() della stdlib.h, il mio problema è questo, creo con i rispettivi cicli i giocatori casuli con nome, cognome, ruolo e fin qui ci siamo, poi non so come prenderli casualmente e inserirli nelle squadre in modo casuale, non so proprio come "prenderli" e creare le squadre. non so se sono stato chiaro.

grazie

Luciano79
21-07-2010, 18:15
un modo potrebbe essere quello di associare ad ognuno di essi un numero casuale, di ordinarli per quel numero e di prenderli a gruppi di 11. Questo è il più semplice, ci sono anche metodi più articolati, ma più veloci in fase di esecuzione.
Il problema si fa più complesso se devi tener conto dei ruoli, anche se il concetto di base è sempre lo stesso

bikerinside
21-07-2010, 18:31
Originariamente inviato da Luciano79
un modo potrebbe essere quello di associare ad ognuno di essi un numero casuale, di ordinarli per quel numero e di prenderli a gruppi di 11. Questo è il più semplice, ci sono anche metodi più articolati, ma più veloci in fase di esecuzione.
Il problema si fa più complesso se devi tener conto dei ruoli, anche se il concetto di base è sempre lo stesso

potresti postare un po di codice così capisco meglio?

getilissimo.

oregon
21-07-2010, 20:49
Originariamente inviato da bikerinside
si con la funzione rand() della stdlib.h, il mio problema è questo, creo con i rispettivi cicli i giocatori casuli con nome, cognome, ruolo e fin qui ci siamo,

Ok ... quindi posta tu questa parte di codice ...


poi non so come prenderli casualmente e inserirli nelle squadre in modo casuale, non so proprio come "prenderli" e creare le squadre. non so se sono stato chiaro.


No ... forse, se vediamo il codice di cui hai detto prima, si può consigliarti dove inserire le modifiche ...

bikerinside
22-07-2010, 09:41
ok allora, c'è qualcosa che io non so, oppure che non ho capito ora posto il codice,




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

// struttura degli 88 giocatori.
struct giocatore {

char nome[6]; //nome del giocatore.

char cognome[6]; //cognome.

int ruolo;//ruolo

} giocatori[88];

// struttura delle 8 squadre.
struct squadra {

char *nome; //nome squadra

int punteggio; //punteggio della squadra.

struct giocatore giocatori [11];//struttura che ragruppa 11 giocatori.

} squadre[8];

int main ()

{

int i, j;
// creo 88 giocatori.
for(i = 1; i < 89; i++)

{

giocatori[i].ruolo = rand()% 11; //assegna il ruolo agli 88 giocatori.

for(j = 0; j < 6; j++)

{

giocatori[i].nome[j] = (char)(rand()%26)+97; //assegna un nome.

giocatori[i].cognome[j] = (char)(rand()%26)+97;//assegna un cognome.

}


giocatori[i].nome[j] = '\0';

giocatori[i].cognome[j] = '\0';


}



questo è quello che ho scritto, ditemi se stò sbagliando; il mio problema ora è di trovare un modo per creare le squadre casualmente, dato che la traccia me lo richiede.

grazie infinite.

oregon
22-07-2010, 12:21
Intanto è sbagliato il ciclo che va da 1 a 88.

In C l'indice degli array parte da 0. Quindi il cliclo dovrà essere da 0 a 87

for(i = 0; i < 88; i++)

bikerinside
22-07-2010, 12:24
si hai ragione, non ci avevo fatto caso.

Loading