Ho risolto, il problema principale con quel for, l'ho risolto con un controllo all'indietro che conosco un po' meglio rispetto ad avanti (sicuramente funzionerebbe anche in avanti, ma mi trovo meglio cos�) ovvero :Per quanto riguarda invece la visualizzazione era sbagliato il conteggio del limite di partitegiocatori e l'ho messo a (partitemax*4) che dovrebbe essere giusto, anche se nel sorteggio capita che per esempio , se un giocatore può giocare massimo 16 partite, ne gioca 17 e ne toglie in pratica 1 ad un altro che ne giocherà 15, perciò in futuro dovrò mettere a posto questo errore: ho provato a diminuire di 1 il limite massimo, ma succede poi che non mi sorteggia tot ultime partite, in base alle partite da giocare. Se a qualcuno servisse in futuro o volesse farci qualsiasi cosa, metto a disposizione il codice qui sotto. Ringrazio torn24 per l'aiuto fornito!codice:for (k = j; k >= 0; k--) { if ( strcmp(player[y], a[k]) == 0) { estratto = 1; break; }
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX 32 #define N 20 int main() { int i, j, p, k,n, y, partitemax; int flag = 0; int estratto = 0; char s[MAX]; char player[N][MAX]; int partitegiocatori[N] = { 0 }; char a[4][MAX]; for (j = 0; j < 4; j++) a[j][0] = '\0'; srand(time(NULL)); do { printf("Inserire numero giocatori: "); scanf("%d",&n); if (n < 4 || n > MAX) printf("Valore errato: deve essere tra 4 e %d\n", MAX); } while (n < 4 || n > MAX); getchar(); 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\n", partitemax*n); for (i = 0; i < (partitemax*n); i++) { for (j = 0; j < 4; j++) { do { y = (0 + rand() % n); for (k = j; k >= 0; k--) { if ( strcmp(player[y], a[k]) == 0) { estratto = 1; break; } else estratto = 0; } if (estratto == 0 && partitegiocatori[y] <= (partitemax*4)) { partitegiocatori[y]++; strcpy(a[j], player[y]); flag = 1; } else { continue; } } while (flag == 0); flag = 0; } printf("\n %s - %s VS %s - %s", a[0], a[1], a[2], a[3]); for (j = 0; j < 4; j++) a[j][0] = '\0'; } printf("\n"); system("PAUSE"); return 0; }

Rispondi quotando