Casuale Elenco di numeri in C

1

Ho appena iniziato un corso di programmazione in C e finora ho fatto solo nozioni di base come printf , leggere un po 'su variabili ecc. sul libro di testo. L'insegnante ci ha incaricato di scrivere un programma che avrà un valore inserito dall'utente, questo sarà il numero di studenti nella classe (25 al momento ma può essere variabile). Quindi elencherà il numero di studenti casualmente e li posizionerà in 3 colonne. Lo scopo è quello di ordinare gli studenti in gruppi di 3 in modo casuale, quindi visualizzare sullo schermo in colonne.

Ora la mia domanda non è per il codice che sconfigge l'oggetto di me che tenta l'esercizio, ma come strutturarlo. Posso vedere che usare un array può essere usato per visualizzare l'elenco, ma in realtà dopo alcuni indicatori sul modo migliore per affrontare il problema nei blocchi, allora posso provare a programmare ciascun blocco.

    
posta Ant 19.11.2012 - 16:21
fonte

3 risposte

1

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?

    
risposta data 19.11.2012 - 16:38
fonte
0

Forse la cosa più istruttiva da fare per te è cercare di implementarla in vari modi, e vedrai da solo quali sono i vantaggi e gli svantaggi di ciascuno.

... Voglio dire, questo è ovviamente un esercizio di "apprendimento facendo".

    
risposta data 19.11.2012 - 16:30
fonte
0

Supponendo che creare il proprio generatore di numeri casuali non dovrebbe far parte del compito, allora hai tre parti per il compito.

  1. Crea una struttura con le dimensioni appropriate per contenere il numero di input degli studenti.
  2. Utilizza un generatore di numeri casuali per assegnare posizioni.
  3. Genera i gruppi randomizzati nel formato corretto.

I due hangup principali che riesco a vedere è la creazione di una struttura di dimensioni appropriate basata sull'input dinamico, un po 'più difficile in C rispetto ai linguaggi più moderni e la gestione delle collisioni quando si assegnano in modo casuale dei punti.

Come tenere i dati è davvero una questione di quanto è necessario fare con esso, se è richiesta solo la stampa un singolo array funzionerà correttamente, se sarà necessario fare di più in base ai gruppi, potrebbe essere utile usare un array bidimensionale in modo che i singoli gruppi siano più facili da accedere.

    
risposta data 19.11.2012 - 16:59
fonte

Leggi altre domande sui tag