La sfida più grande che affronti è il fatto che il numero di voci da randomizzare è variabile. C richiede uno sforzo maggiore con la gestione delle strutture variabili, e questo è probabilmente il vero scopo dell'esercizio.
Dovresti anche considerare la struttura di input e una struttura di output.
Un approccio alla risoluzione è quello di prendere tutti gli input, inserirli in una matrice o struttura simile mentre vengono letti. È quindi possibile selezionare casualmente le voci da quella matrice di input e inviarle alla struttura di output o push loro al dispositivo di output. Ciò fornisce una randomizzazione dei valori di input insieme a una potenziale randomizzazione della loro posizione di output.
Un altro approccio sarebbe quello di spingere i valori di input alla loro struttura di output scelta casualmente man mano che vengono forniti. Ciò fornisce solo una randomizzazione della loro posizione di output e una modesta apparenza di randomizzazione al loro input.
Un array di ingresso 25+ sarebbe altrettanto buono di un punto di partenza sulla struttura di input. È anche abbastanza facile da toccare in base all'indice.
Un semplice array 3x9 sarebbe un buon punto di partenza da considerare per la memorizzazione dei risultati. È anche possibile utilizzare 3 array separati per archiviare i risultati. Onestamente, non sono sicuro che ci sia un vantaggio in entrambi i casi. Se avessi requisiti aggiuntivi sull'output, ciò potrebbe influire sulle strutture.
Un aspetto finale da considerare è l'overflow degli array di input (ovvero troppi valori forniti) e la gestione di troppe voci in una determinata "colonna" della struttura di output. È possibile che una colonna si riempia prima degli altri. Quali limiti si desidera mettere su quante voci ciascuna colonna può avere?