Mediana di tre numeri

Si scriva un programma che legga 3 valori interi e che ne stampi la mediana. La mediana è il valore che occuperebbe la seconda posizione se ordinassimo i tre numeri. Si nomini il sorgente mediana.c.

La stampa del risultato dovrà essere preceduta da uno specifico marcatore MEDIANA scritto tra parentesi quadre. Ad esempio, se i tre numeri letti sono 30, 10, 20, il programma dovrà stampare le righe:

[MEDIANA]
20

Si compili il programma con il comando

gcc -Wall mediana.c

Se non ci sono errori di compilazione, si esegua il programma a.out generato per verificarne la correttezza:

./a.out

Ricorda che l'opzione -Wall abilita l’output, da parte del compilatore, di messaggi di avvertimento che segnalano situazioni insolite, che potrebbero corrispondere ad errori di programmazione.

Verifica automatica

I casi di test sono descritti nei file pvcheck.test. Un "caso di test" contiene i dati di input per il programma e il corrispondente output corretto atteso. In questo modo pvcheck può verificare automaticamente la correttezza dei risultati a fronte dei dati di ingresso.

Il file di test può contenere vari casi di test.

Scarica una versione eseguibile di pvcheck. Dopo aver copiato lo script pvcheck nella directory corrente (se non è già presente), verifica la correttezza del programma tramite il comando

./pvcheck ./a.out

e osservando l'output del programma.

NOTA: se il programma non viene eseguito correttamente, su alcuni sistemi potrebbe essere necessario eseguire da shell il comando

chmod +x pvcheck

per impostare i permessi di esecuzione di pvcheck.

Se pvcheck indica la presenza di errori, correggi il programma, verificando la correttezza della nuova versione utilizzando pvcheck.

Continua il processo di correzione e verifica finché pvcheck non indica che l'output generato dal programma è corretto.

NOTA: pvcheck cerca automaticamente un file di test chiamato pvcheck.test nella directory corrente, utilizzando quel file per eseguire i test sul programma. Verifica eventualmente che il file di test sia presente nella directory in cui esegui pvcheck.

Indicazioni per la soluzione

  • scrivi la funzione main (vedi S2.1)
  • dichiara le variabili necessarie a contenere i dati del problema (es, a, b e c)
  • leggi il valore delle tre variabili da tastiera usando fgets e atoi (ricorda di dichiarare la stringa "di supporto"), vedi S4.1
  • utilizza opportune combinazioni di costrutti if e if-else (vedi rispettivamente S4.3 e S4.4 per la sintassi) per assegnare il valore mediano ad una variabile m

Suggerimenti

  • nei costrutti condizionali potrebbero servire delle condizioni logiche "complesse"; gli operatori logici necessari per realizzarle sono descritti in S4.5;
  • non dimenticare di includere stdlib.h per l'uso di atoi (e, come già sai, di stdio.h per printf e fgets)

Nella prossima pagina potrai esaminare un esempio di soluzione dell'esercizio.