25 febbraio 2013Esercizi sul linguaggio CIn questa sezione del corso completo di C, come ovviamente si può intuire posterò qualche esercizio, in base ai vari argomenti trattati, che vi aiuterà sicuramente a comprendere meglio il linguaggio. Qui vi lascio inoltre da scaricare un po di funzioni principali, che vi aiuteranno tantissimo negli esercizi:
![]()
Esercizio 1 (switch)
![]()
Esercizio 1 (cicli) Progettare e Codificare in C un programma che permetta di:
Esempio: L’utente vuole inserire 3 numeri: 4, 3, 6; Il programma deve quindi calcolare 4! + 3! + 6! = 750 ![]()
Esercizio 2 (cicli)
![]()
Esercizio 1 (funzioni)
Si progettino e si realizzino due funzioni così definite: float euro_to_dollari(float money); A tal fine si supponga che:
![]()
Esercizio 2 (Funzioni) Codificare in C la funzione: int primo(int x); Che restituisca:
![]()
Esercizio 3 (funzioni) Si scriva una programma che inverta le cifre di un numero intero N usando una funzione apposita. A tal fine, si realizzi sia una versione ricorsiva, sia una versione iterativa della funzione; per esempio dato N=4325, il programma stampa: 5234. ![]()
Esercizio 1 (passaggio per riferimento)
![]()
Esercizio 1 (array)
![]()
Esercizio 2 (array)
![]()
Esercizio 3 (array)
![]()
Esercizio 1 (stringhe)
Scrivere una funzione che date tre stringhe A, B e C concateni in C il contenuto di A e B e restituisca il numero di caratteri copiati in C: int conc(char A[],char B[],char C[]); ![]()
Esercizio 2 (stringhe) Codice segreto nella pagina di un libro
Esempio: msg = “ma che bel castello”; secret = “cestello” Risultato: SI e stringa “ma ChE bel caSTELLO” ![]()
Esercizio 1 (strutture)
Si realizzi un programma C che legga da utente i dati relativi ad alcuni corsi; in particolare, per ogni corso vengono dati:
Il programma deve stampare la denominazione del corso e il cognome del docente, relativi a tutti i corsi che hanno il numero di iscritti maggiore o uguale alla media aritmetica degli iscritti (calcolata su tutti i corsi). SE AD ESEMPIO L'UTENTE INSERISCE: analisi obrecht 55 informatica milano 40 geometria ferri 37 La media e’ di 44 quindi il programma stampa: analisi obrecht ![]()
Esercizio 2 (strutture) Una compagnia di autobus che effettua servizio su lunghe distanze vuole realizzare un programma di controllo delle prenotazioni dei posti. A tal scopo rappresenta ogni prenotazione tramite una struttura booking contenente nome del cliente (al massimo 1023 caratteri, senza spazi) e numero del posto prenotato (un intero). a) Le prenotazioni effettuate vengono registrate tramite un array (di dimensione prefissata DIM) di strutture booking, di dimensione logica iniziale pari a 0. Si realizzi il modulo C gestione.h/gestione.c, con la struttura dati booking e le seguenti funzioni:
Qualora invece il posto sia ancora libero, la funzione deve assegnare tale posto al cliente copiando i dati della prenotazione nell’ultima posizione libera nell’array, e deve provvedere ad aggiornare correttamente la dimensione logica dell’array. In questo secondo caso la funzione deve invece restituire come valore uno 0, indicante il successo nella prenotazione. Al fine di copiare il nome del cliente, si utilizzi la funzione di libreria: char * strcpy(char * s, char * ct); b) Si realizzi un programma main (file main.c) che chieda all’operatore il nome di un utente, e di seguito il posto prescelto (a tal fine si usi la funzione di cui al punto a). Il programma deve cercare di registrare la prenotazione tramite la funzione assegna; qualora l’operazione di prenotazione fallisca (perché il posto risulta essere già assegnato), il programma provveda a chiedere all’operatore un nuovo posto, finché non si riesca ad effettuare la prenotazione. Qualora l’operatore inserisca il nome “fine”, il programma deve terminare; qualora invece venga inserita la stringa “stampa”, il programma deve stampare a video le prenotazioni già effettuate. A tal scopo si usi la funzione di libreria: int strcmp(char * ct, char * cs); ![]()
Esercizio 1 (file)
Sia dato il file di testo "dati.txt" contenente i dati relativi agli studenti immatricolati al primo anno della Facoltà di Ingegneria In particolare, le informazioni sono memorizzate nel file "dati.txt" come segue: ognuna delle linee del file contiene i dati relativi ad un nuovo studente; in particolare:
Sia dato un secondo file di testo, “indirizzi.txt” che contiene, invece, l’indirizzo di ogni studente, e in particolare, in ogni linea, separati da uno spazio:
Si scriva un programma in linguaggio C che:
![]()
Esercizio 2 (file) Sono dati due file di testo anagrafe.txt e fatture.txt che contengono, rispettivamente, i dati anagrafici di alcuni clienti e l’elenco delle fatture. Più precisamente, ogni riga di anagrafe.txt contiene, nell’ordine:
Ogni riga di fatture.txt contiene, nell’ordine:
Questi ad esempio sono i due file:
Il programma si suddivide così:
![]()
Esercizio 3 (file) È dato un file di testo PEOPLE.TXT che contiene i dati di una serie di persone (non più di 20), una persona per riga. Si vuole realizzare un programma che, una volta letti da file i dati di queste persone, ne estragga l’insieme di persone compatibili con una nuova persona data, salvando il risultato sul file binario PARTNERS.DAT. Tenere conto che due persone sono compatibili se sono di sesso diverso e la differenza di età, riferita solo all'anno, non supera i 5 anni. Ogni riga del file people.txt contiene, nell'ordine:
Si definisca opportunamente una struttura dati persona di tipo struct. Realizzare le seguenti funzioni:
![]()
Esercizio 1 (allocazione dinamica)
Un negozio di noleggio CD registra, tramite un PC collegato al registratore di cassa, i dati relativi al noleggio dei Compact Disc. Per ogni utente che restituisce un disco, su un file di testo di nome “RentedLog.txt” viene scritto su ogni riga, in ordine:
Dopo aver definito opportunamente una struttura rent per contenere tali informazioni, il candidato realizzi un programma che chieda all’utente il nome di un cliente e il numero massimo di record che si vogliono ottenere, e stampi a video la lista dei CD noleggiati dal cliente, subito seguito dalla durata media di un noleggio per tale cliente:
![]()
Esercizio 1 (liste)
Si scriva una funzione ricorsiva crossSelection() che, ricevute in ingresso due liste di interi positivi l1 e l2, restituisca una terza lista (eventualmente non ordinata) contenente gli interi di l2 che sono nelle posizioni indicate dai valori di l1 (si assuma per convenzione che il primo elemento di una lista sia in posizione 1). Ad esempio, date due liste: l1=[1,3,4] e l2=[2,4,6,8,10,12], la lista risultante deve contenere gli elementi di l2 che sono in prima, terza e quarta posizione, cioè: [2,6,8]. A tal scopo si realizzi una funzione ricorsiva di supporto select() che, ricevuti in ingresso una lista e un intero positivo rappresentante una posizione, restituisca l’intero della lista posto alla posizione specificata. La funzione deve restituire -1 qualora l’intero passato non corrisponda a nessuna posizione valida (si assuma comunque positivo l’intero passato). Le funzioni crossSelection() e select() devono essere realizzate in modo ricorsivo, utilizzando il tipo di dato astratto list. ![]()
Esercizio 2 (liste) Un file di testo ARCHIVIO.TXT contiene i dati (primo autore, titolo, numero di copie possedute, numero di copie in prestito) relativi ai differenti volumi conservati presso una biblioteca. Ogni riga del file contiene nell'ordine, separati da uno spazio bianco:
Si realizzi un programma C che:
Ad esempio: contenuto di ARCHIVIO.TXT Salinger IlGiovaneHolden 10 8 Wallace InfiniteJest 12 3 Carver Cattedrale 12 12 Baricco Seta 6 0 Hornby ComeDiventare 9 9 Sartre LaNausea 3 1 Robbins NaturaMorta 7 7 Stampa di L: [2, 9, 0, 6, 0, 2, 0] ![]()
Esercizio 3 (liste) Un negozio di videogame vuole automatizzare parte della propria gestione. Il negozio salva mensilmente lo stato dei propri articoli su un file di testo e traccia su un secondo file di testo tutte le vendite effettuate. Lo scopo del programma è:
Ogni riga del file memorizza lo stato mensile e contiene i dati di un videogioco:
In un secondo file di testo il negozio tiene traccia dei videogiochi venduti nell’arco del mese. Ogni riga del file contiene il codice identificativo di un gioco venduto (una singola copia); potrebbero esserci delle righe del file con codici errati (vanno saltate). Implementare le seguenti funzioni:
![]()
Anche gli esercizi (presi dall'università di Bologna) sono terminati. Se siete arrivati fino a qui sono lieto di dirvi che avete imparato a programmare in C!! Pumo Ciao a tutti, Pumo Matteo |
Social Aiutate a diffondere il sito, cliccando qui Segui @WInformatic Autore Salve a tutti! Mi chiamo Pumo Matteo. Per saperne di più: Biografia Categorie
|