Dinosauri

16
1 © Piero Demichelis Dinosauri Si scriva un programma in linguaggio C che realizzi il gioco “DINOSAURI”. DINOSAURI è un semplice gioco di carte per due giocatori. Il mazzo è composto da 30 carte: 10 rosse, 10 verdi e 10 gialle. Sulle rosse è raffigurato un dinosauro enorme, sulle verdi un dinosauro medio e sulle gialle un dinosauro piccolo. Unica regola: il dinosauro più grosso mangia il dinosauro più piccolo. Le carte rosse valgono 5 punti, le carte verdi 3 punti, le carte gialle 1 punto. Inizialmente ogni giocatore ha in mano 15 carte. In ogni mano ogni giocatore gira una carta e la posa sul tavolo. Se le carte giocate hanno colori diversi chi ha buttato il dinosauro più grande vince la mano e prende tutte le carte sul tavolo. Se invece le carte giocate hanno lo stesso colore si lasciano sul tavolo. Vince chi, al termine delle 15 mani, totalizza il punteggio più alto. Le carte NON possono essere scelte. I mazzi sono tenuti coperti e le carte vanno giocate (girate) nell'ordine in cui compaiono.

description

Dinosauri. - PowerPoint PPT Presentation

Transcript of Dinosauri

Page 1: Dinosauri

1 © Piero Demichelis

DinosauriSi scriva un programma in linguaggio C che realizzi il gioco “DINOSAURI”. DINOSAURI è un semplice gioco di carte per due giocatori. Il mazzo è composto da 30 carte: 10 rosse, 10 verdi e 10 gialle. Sulle rosse è raffigurato un dinosauro enorme, sulle verdi un dinosauro medio e sulle gialle un dinosauro piccolo.

Unica regola: il dinosauro più grosso mangia il dinosauro più piccolo.

Le carte rosse valgono 5 punti, le carte verdi 3 punti, le carte gialle 1 punto. Inizialmente ogni giocatore ha in mano 15 carte.In ogni mano ogni giocatore gira una carta e la posa sul tavolo. Se le carte giocate hanno colori diversi chi ha buttato il dinosauro più grande vince la mano e prende tutte le carte sul tavolo. Se invece le carte giocate hanno lo stesso colore si lasciano sul tavolo.

Vince chi, al termine delle 15 mani, totalizza il punteggio più alto. Le carte NON possono essere scelte. I mazzi sono tenuti coperti e le carte vanno giocate (girate) nell'ordine in cui compaiono.

Page 2: Dinosauri

2 © Piero Demichelis

DinosauriIl programma deve:

• Leggere da un primo file (acquisito come primo parametro sulla riga di comando) le carte del primo giocatore (15 carte).

• Leggere da un secondo file (acquisito come secondo parametro sulla riga di comando) le carte del secondo giocatore (15 carte).

• Giocare la carta girata dal primo giocatore in ogni mano e stamparla a video.

• Giocare la carta girata dal secondo giocatore in ogni mano e stamparla a video.

• Visualizzare il risultato di ogni mano e il punteggio corrente.

Al termine delle 15 mani, stampare il nome del vincitore e il punteggio totale ottenuto dal vincitore.

Ad esempio, supponendo di avere un mazzo di 6 carte, se il file “primo_giocatore” contiene le seguenti carte:

GiallaVerdeRossae il file “secondo_giocatore” contiene le seguenti carte:GiallaRossaVerde

Page 3: Dinosauri

3 © Piero Demichelis

DinosauriIl programma lanciato con “DINOSAURI primo_giocatore secondo_giocatore” dovrà generare il seguente output:

Punteggio giocatore 1: 0Punteggio giocatore 2: 0Mano n. 1Carta giocatore 1: GiallaCarta giocatore 2: GiallaRisultato: PareggioPunteggio giocatore 1: 0Punteggio giocatore 2: 0Mano n. 2Carta giocatore 1: VerdeCarta giocatore 2: RossaRisultato: Vince la mano il giocatore 2Punteggio giocatore 1: 0Punteggio giocatore 2: 10Mano n. 3Carta giocatore 1: RossaCarta giocatore 2: VerdeRisultato: Vince la mano il giocatore 1Punteggio giocatore 1: 8Punteggio giocatore 2: 10Vince il giocatore 2 con 10 punti.

Page 4: Dinosauri

4 © Piero Demichelis

Si scriva un programma in linguaggio C per gestire una sala di ballo. Il programma deve leggere da tre file rispettivamente: l'elenco delle danzatrici; l'elenco dei danzatori; l'elenco delle incompatibilità (caratteriali, di altezza, ...).

I nomi dei tre file sono specificati nell'ordine sulla linea di comando. I primi due contengono elenchi di nomi, un nome per riga. I nomi non contengono spazi. Sono presenti al massimo 20 nomi; la lunghezza massima di un nome è 15 caratteri. Il terzo elenca le coppie non valide nel formato <danzatrice> <danzatore>, una informazione per riga.

Ad esempio:

Sala da ballo

danzatrici.txt

FiorenzaMariaDiana

danzatori.txt

PaoloGiovanniGiorgioRiccardo

incompatibili.txt

Maria PaoloDiana RiccardoMaria RiccardoFiorenza Paolo

Page 5: Dinosauri

5 © Piero Demichelis

Sala da balloSuccessivamente il programma legge da tastiera una sequenza di coppie nel formato <danzatrice> <danzatore> di cui controllare la validità, ovvero: la danzatrice deve comparire nell'elenco; il danzatore deve comparire nell'elenco; la coppia non deve essere incompatibile. Il programma termina quando l'utente inserisce la coppia “x x”.

Ad esempio con i file definiti sopra (l'input dell'utente è evidenziato):C:\> DANZA danzatrici.txt danzatori.txt incompatibili.txtInserire una coppia: Fiorenza GiorgioCoppia valida!Inserire una coppia: Fiorenza LucaErrore: Luca non e` un danzatoreInserire una coppia: Fiorenza PaoloErrore: coppia incompatibileInserire una coppia: x xProgramma terminato

Page 6: Dinosauri

6 © Piero Demichelis

Interpolazione lineareSi desidera realizzare un programma in linguaggio C per realizzare l’interpolazione lineare di una funzione matematica.La funzione, la cui specifica è contenuta in un file il cui nome è specificato come primo parametro sulla linea di comando, è definita per punti, come una serie di coppie (ascissa, ordinata), una coppia per riga, nel seguente formato:

xi f(xi)

dove i valori xi e f(xi) sono numeri reali. I valori contenuti nel file sono in ordine crescente per valori di x (cioè x1 < x2 < ...< xi < …< xn). Il numero dei punti xi non è noto a priori.

Il programma legge da tastiera un serie di numeri reali, che rappresentano dei valori di x, e per ognuno di questi valori xp , deve:

• Verificare che il numero specificato xp sia compreso nell'intervallo [xmin , xmax], dove xmin=x1 e xmax=xn.; in caso contrario il programma termina.• Scandire il file e fornire l’interpolazione lineare del valore xp ottenuta come:

f(xp ) = (f(x +) + f(x -))/2dove x + e x - sono il primo valore maggiore di xp e l'ultimo minore di xp rispettivamente.

Page 7: Dinosauri

7 © Piero Demichelis

Interpolazione lineareNote:Il numero di valori introdotti NON è noto a prioriL’operazione che calcola l’interpolazione DEVE essere realizzata tramite un sottoprogramma (funzione C).Tale funzione deve scandire il file, calcolare i valori corretti per x + e x - e per f(x+) e f(x -) e restituire il valore f(xp ).

Esempio di esecuzione:

Invocando il programma INTLIN mediante il comando

INTLIN F.DAT

e dato il seguente file F.DAT:1.0 33.22.0 43.63.0 54.53.5 74.64.0 65.15.0 14.35.5 1.16.0 –24.3

Page 8: Dinosauri

8 © Piero Demichelis

Interpolazione lineare

Se il valore di xp letto da tastiera è 5.3, il programma deve fornire a video il seguente output:

Il valore della funzione nel punto 5.3 e’: 7.7.

(Ottenuto come segue: x - = 5.0, x + = 5.5; f(x -) = 14.3, f(x +) = 1.1; f(xp) = (14.3+1.1)/2 = 7.7)

Se il valore di xp letto da tastiera è 0.5, il programma deve fornire a video il seguente output:

Errore: il valore specificato e’ fuori dall’intervallo.

Page 9: Dinosauri

9 © Piero Demichelis

Alfabeto Morse

Si scriva un programma in linguaggio C per la codifica e decodifica di un testo con l’alfabeto Morse.L’alfabeto Morse è un codice che assegna , ad ogni lettera dell'alfabeto un codice a lunghezza variabile, costituito da punti e linee.Il programma riceve sulla linea di comando due argomenti obbligatori:

• Il primo argomento può essere o –c o –d. Nel primo caso il programma effettuerà la codifica da testo a Morse, nel secondo caso la decodifica da Morse a testo.

• Il secondo argomento contiene il nome del file da codificare / decodificareLa codifica dell’alfabeto Morse è contenuta in un file testo dal nome morse.txt, nel formato <carattere> <codice>, come mostrato di seguito:

Page 10: Dinosauri

10 © Piero Demichelis

Alfabeto MorseA .-B -...C -.-.D -..E .F ..-.G --.H ....I ..J .---K -.-L .-..M --N -.O ---P .--.Q --.-R .-.S ...T -U ..-V ...-W .--X -..-Y -.--Z --..

Page 11: Dinosauri

11 © Piero Demichelis

Alfabeto MorseIn base all’opzione specificata come primo argomento, il programma dovrà quindi produrre sullo schermo la traduzione del file specificato come secondo argomento.

• NOTE:Il programma, nel caso di codifica, dovrà saltare la codifica di tutti i caratteri non alfabetici (punteggiatura, caratteri di spaziatura, caratteri di controllo), e non dovrà distinguere tra caratteri minuscoli e maiuscoli.Il programma, nel caso di codifica, dovrà separare con uno spazio i simboli Morse stampati come risultato.Nel caso di decodifica si assuma che il testo da decodificare consista di simboli morse separati con uno spazioEsempio di Esecuzione:Supponendo che il programma venga invocato come Morse –c testo.txt, e supponendo che il file testo.txt contenga:TRE TIGRI CONTRO TRE TIGRIIl risultato sarà- .-. . - .. --. .-. .. -.-. --- -. - .-. ---Supponendo che il programma venga invocato come Morse –d testo.txt, e supponendo che il file testo.txt contenga:.- .. ..- - --- ... --- ...Il risultato saràAIUTOSOS

Page 12: Dinosauri

12 © Piero Demichelis

ClassificaSi scriva un programma C che permetta di gestire la classifica di un campionato di calcio. La classifica è memorizzata in un file di testo (per ordine di classifica delle squadre) che ha il seguente formato:

• <squadra> <punti> <partite giocate> <vinte> <pareggiate> <perse> <gol fatti> <gol subiti>Ad esempio:INTER 97 38 30 7 1 80 34ROMA 75 38 22 9 7 74 34LAZIO 62 38 18 11 9 59 33MILAN 61 38 19 12 7 57 36FIORENTINA 58 38 21 10 7 62 31PALERMO 58 38 16 10 12 58 51EMPOLI 54 38 14 12 12 42 43ATALANTA 50 38 12 14 12 56 54SAMPDORIA 49 38 13 10 15 64 64UDINESE 46 38 12 10 16 49 55

Page 13: Dinosauri

13 © Piero Demichelis

ClassificaIl numero massimo di squadre che possono partecipare ad un campionato è 20.In un secondo file compare l’elenco delle partite per la giornata in corso nel formato:

<squadra 1> <squadra 2> <goal squadra 1> <goal squadra 2>

Ad esempio:INTER ROMA 0 1LAZIO MILAN 3 1FIORENTINA PALERMO 1 0EMPOLI ATALANTA 2 0SAMPDORIA UDINESE 2 2

Si scriva un programma che legga la classifica, le partite, aggiorni la classifica generale e stampi la classifica aggiornata tenendo conto che:

• a parità di punti viene prima la squadra che ha la differenza reti migliore

• a parità anche di differenza reti, viene prima la squadra che ha segnato più gol

Page 14: Dinosauri

14 © Piero Demichelis

ClassificaNell’esempio utilizzato, la classifica aggiornata da visualizzare è:

INTER 97 39 30 7 2 80 35ROMA 78 39 23 9 7 75 34LAZIO 65 39 19 11 9 62 34FIORENTINA 61 39 22 10 7 63 31MILAN 61 39 19 12 8 58 39PALERMO 58 39 16 10 13 58 52EMPOLI 57 39 15 12 12 44 43SAMPDORIA 50 39 13 11 15 66 66ATALANTA 50 39 12 14 13 56 56UDINESE 47 39 12 11 16 51 57

I nomi dei due file sono passati al programma tramite linea di comando (il primo argomento è il file con la classifica, il secondo quello con l’elenco delle partite)

Page 15: Dinosauri

15 © Piero Demichelis

Elenco paroleUn file di testo, il cui numero di righe non è noto a priori, contiene un numero di parole non superiore a 200. Con il termine parola si intende una sequenza continua di caratteri qualsiasi con la sola esclusione di quei caratteri considerati come separatori dal linguaggio C (spazio, tab e newline).Il nome del file è fornito come primo parametro della riga di comando immediatamente dopo il nome del programma eseguibile.L'esercizio consiste nel leggere il file e visualizzare sul monitor le parole lette, una per ciascuna riga, dopo averle ordinate in maniera decrescente per numero di caratteri, cioé partendo dalla parola più lunga e terminando con la parola più corta. Se due o più parole hanno la stessa lunghezza esse dovranno essere visualizzate in ordine alfabetico inverso nell'insieme delle parole di una stessa lunghezza. Inoltre nel caso di parole perfettamente identiche l'allievo dovrà visualizzare tali parole una sola volta, scartando quindi i doppioni. Le lettere maiuscole e minuscole dovranno essere considerate equivalenti, pertanto “Quando”, “quando”, “QUANDO” devono essere considerate la stessa parola!

Page 16: Dinosauri

16 © Piero Demichelis

Elenco paroleAd esempio se il programma si chiama LISTA e il file TESTO.DAT contiene la seguente frase:

Questo testo rappresenta un bell'esempio di come rendere incomprensibile un testo per evitare che possa cadere in mani nemiche

Il comando: LISTA TESTO.DAT produce sullo schermo:

incomprensibilebell'esempiorappresentarenderenemicheevitarecadereQuestotestopossamanicomepercheunindi