Infatti, dovresti partire da un diagramma di flusso, poi pseudocodice, poi codice.
Ad esempio, questo codice funziona con un qualunque numero di giocatori, basta cambiare la costante NUMERO_DI_GIOCATORI per avere un programma con 2, 3, 4 ecc. giocatori:
Codice: Seleziona tutto
#include <stdio.h>
#define NUMERO_DI_GIOCATORI 2
#define NUMERO_DI_FIAMMIFERI 21
#define NUMERO_DI_FIAMMIFERI_PRELEVATI 5
int main ()
{
int N = NUMERO_DI_FIAMMIFERI;
int K = NUMERO_DI_FIAMMIFERI_PRELEVATI;
int i = NUMERO_DI_GIOCATORI;
while (N > 0) {
i = (++i > NUMERO_DI_GIOCATORI) ? 1 : i;
printf ("il giocatore %d preleva %d fiammiferi\n", i, K);
N = N - K;
}
printf ("il giocatore %d ha perso\n", i);
}
Nota: avere del codice duplicato è una cattiva pratica di programmazione. Nel tuo caso usi del codice duplicato per gestire il caso del giocatore 1 e quello del giocatore 2; questo in un buon programma non dovrebbe succedere, ma si dovrebbe usare la stessa funzione per entrambi, cosa che permette tra l'altro di estendere facilmente il programma. Nel mio programma cambiare il numero di giocatori equivale a cambiare un valore di una variabile, perché ho rispettato questo principio.