
Originariamente inviata da
torn24
Ciao, una soluzione da implementare "realizzare col codice"
1) dividi numero partite per numero giocatori, e trovi quante partite massime può fare un giocatore
2) Ti crei un array dome memorizzi il sorteggio PartiteGiocatori[] inizializzato a zero
Short PartiteGiocatori[MAXGIOCATORI]={0};
3) Ad ogni numero estratto verifichi che il giocatore ha giocato meno partite del massimo, e incrementi di uno
if(PartiteGiocatori[indice]<massimoPartite)
esegui....
Ciao, ho seguito le tue istruzioni sul programma, ma mi sono inceppato in un dilemma. Ho creato il controllo sulla ripetizione in una partita e funziona. Invece la ripetizione di un giocatore su tutte le partite è diventata un grosso problema, mi sa che sto sbagliando ragionamento: più che altro nel quando incrementare "partitegiocatori[y]. Potresti dare un'occhiata veloce al programma e indicarmi dov'è che sbaglio e dove dovrei mettere quell'incremento?
Grazie, o in generale se qualcuno riesce a trovare una soluzione al mio problema
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX 32
int main(){
int i, j, p, k, N, y, partitemax;
char s[MAX];
srand(time(NULL));
do {
printf("Inserire numero giocatori: ");
gets(s);
N = atoi(s);
if (N < 4 || N > MAX)
printf("Valore errato: deve essere tra 4 e %d\n", MAX);
} while (N < 4 || N > MAX);
short partitegiocatori[N];
for (i = 0; i < N; i++) {
partitegiocatori[i] = 0;
}
char player[N][MAX];
for (i = 0; i < N; i++) {
printf("Giocatore %d: ", i+1);
gets(s);
if (strlen(s) == 0) {
printf("Nessun giocatore specificato - ripeti\n");
i--;
}
else
strcpy(player[i], s);
}
printf("\nInserire numero partite totali: ");
scanf("%d", &p);
partitemax = p / N;
printf("Per un gioco totalmente equilibrato saranno giocate %d partite", partitemax*N);
for (i = 0; i < (partitemax*N); i++) {
char a[4][MAX];
for (j = 0; j < 4; j++) {
y = (0 + rand() % N);
if (partitegiocatori[y] < partitemax) {
strcpy(a[j],player[y]);
for (k = j-1; k >= 0; k--) {
if (strcmp(a[k], a[j]) == 0)
j--;
else
partitegiocatori[y]++;
}
}
}
printf("\n %s - %s VS %s - %s", a[0], a[1], a[2], a[3]);
}
return 0;
}