Strumenti Utente

Strumenti Sito


fisica:informatica:201415:esercitazioni:esercitazione7.7

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
fisica:informatica:201415:esercitazioni:esercitazione7.7 [20/03/2015 alle 13:59 (10 anni fa)] – [Esercizio 1: Archivio studenti] Susanna Pelagattifisica:informatica:201415:esercitazioni:esercitazione7.7 [20/03/2015 alle 14:37 (10 anni fa)] (versione attuale) Susanna Pelagatti
Linea 42: Linea 42:
 Suggerimento: Per la lettura da file usare ''fscanf()'' con una opportuna stringa di formattazione oppure ''fgets()'' per leggere fino al primo ''\n'' e ''strchr()'' per localizzare i caratteri separatori '':'' Suggerimento: Per la lettura da file usare ''fscanf()'' con una opportuna stringa di formattazione oppure ''fgets()'' per leggere fino al primo ''\n'' e ''strchr()'' per localizzare i caratteri separatori '':''
  
 +===== Esercizio 5: La linea di comando: ''argc'' e ''argv'' =====
 +
 +In C e' possibile accedere agli argomenti passati sulla linea di comando tramite la i parametri della funzione main che puo' essere dichiarata di tipo :
 +<code c>
 +int main (int argc, char* argv[]) {
 +...
 +}
 +</code>
 +in questo modo all'attivazione ''argc'' contiene il numero di argomenti passati sulla linea di comando, e l'array di stringhe ''argv'' contiene tutte le parole trovate sulla linea di comando usando come separatori lo spazio bianco (' ') e il tab ('\t'). 
 +Ad esempio, se ho compilato il mio programma in un eseguibile ''prova'' e l'ho attivato con il comando
 +<code bash>
 +bash$ ./prova pippo pluto paperone
 +</code>
 +''argc'' varra' 4, ''argv[0]'' conterra' //./prova//, ''argv[1]'' conterra' //pippo//, ''argv[2]'' //pluto// ed ''argv[3]'' //paperone//.
 +
 +Scrivere un programma C che stampa sullo standard output il numero di argomenti e tutte le parole sulla linea di comando separate da un newline ('\n'), ad esempio
 +<code bash>
 +bash$ ./prova pippo pluto paperone
 +./prova ha 3 argomenti
 +pippo
 +pluto
 +paperone
 +</code>
 +
 +===== Esercizio 6: Leggere il file anagrafe da linea di comando =====
 +Modificare la soluzione dell'esercizio 4 in modo da leggere il nome del file di anagrafe da linea di comando e da poter specificare opzionalmente il nome del file in cui scrivere la sequenza ordinata di studenti. Cioe'
 +<code>
 +bash$ ./leggistud nome_file [-o out_file]
 +</code>
 +legge gli studenti dal file ''nome_file'' passato come primo parametro. Se specificato un file per l'output (opzione ''-o'') l'elenco degli studenti viene stampato su file invece che su standard output. 
 +
 +Fare in modo di stampare un opportuno messaggio di uso se ''leggistud'' e' attivato con un numero di parametri diverso da 2 o in modo sbagliato.
 +
 +//Approfondimenti//: provare ad utilizzare la funzione di libreria ''getopt'' (''man 3 getopt'') per eseguire l'analisi (//parsing//) della linea di comando. Questa funzione e' realmente utilizzata per analizzare la linea di comando dei comandi di shell che utilizziamo normalmente.
 +
 +===== Esercizio 8: Mazzo di carte  =====
 +Scrivete una funzione C ''nuovo_mazzo()'' che crea un mazzo (mischiato!) di 40 carte utilizzando i seguenti tipi:
 +<code c>
 +/** i valori delle carte */
 +typedef enum valori{ASSO,DUE,TRE,QUATTRO,CINQUE,SEI,SETTE,FANTE,DONNA,RE} valori_t;
 +/** i semi delle carte */
 +typedef enum semi{CUORI,QUADRI,FIORI,PICCHE } semi_t;
 +/** una carta e' data da un valore ed un seme */
 +typedef struct carta {
 +  /** valore */
 +  valori_t val; 
 +  /** seme */
 +  semi_t seme;  
 +} carta_t;
 +</code>
 +ed una funzione ''stampa_mazzo()'' che stampa le carte del mazzo sullo standard output in modo gradevole. Definite i parametri ed i valori restituiti dale funzioni opportunamente.
 +
 +===== Esercizio 9: Il gioco della briscola  =====
 +Utilizzando le funzioni dell'esercizio precedente realizzate un programma C che gioca a briscola con un utente. Il programma crea il mazzo di carte, stampa sullo standard output il nome della briscola e le carte in mano all'utente ed attende sullo standard input la giocata. Il programma puo' giocare con una strategia semplice a piacere (ad esempio la prima carta della mano). Ad esempio:
 +<code>
 +$./briscola
 +Nuova partita, briscola CUORI 
 +Mano #1: Hai in mano
 +4Fiori 5Picche QCuori
 +Cosa giochi ?
 +</code>
 +se digitiamo
 +<code>
 +4Fiori
 +io gioco 2Cuori, preso
 +Mano #2: Hai in mano
 +KFiori 5Picche QCuori
 +io gioco 7Picche
 +Cosa giochi ?
 +</code>
 +Il gioco continua fino all'esaurimento delle carte. Alla fine il programma stampa  il vincitore ed i punti totalizzati. Ad esempio:
 +<code>
 +Hai vinto con 87 punti!
 +</code>
fisica/informatica/201415/esercitazioni/esercitazione7.7.1426859948.txt.gz · Ultima modifica: 20/03/2015 alle 13:59 (10 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki