Esercitazione 12. Esercizi di Ricapitolazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazione 12. Esercizi di Ricapitolazione"

Transcript

1 Esercitazione 12 Esercizi di Ricapitolazione

2 Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che, dato un numero intero positivo num, divide ripetutamente num per 2 e memorizza i resti delle divisioni intere in un vettore resti [ ]; stampa i resti delle divisioni nell ordine inverso in cui sono stati calcolati in modo tale da visualizzare la rappresentazione binaria del numero decimale num.

3 Soluzione #include <stdio.h> #define DIM_INT 16 void stampa_bin (int); /*dichiarazione della procedura stampa_bin */ main ( ) { int num; printf ( Inserisci un numero intero positivo: ); scanf ( %d, &num); printf ( La sua rappresentazione binaria è: ); stampa_bin (num); /* invocazione della procedura stampa_bin */

4 void stampa_bin (int v) /*definizione della procedura stampa_bin */ { int i, j; int resti [DIM_INT]; if ( v==0 ) printf ( %d, v); else { for (i=0; v!=0; i++) { resti [i] = v % 2; v /= 2; for (j = i-1; j>=0; j--) printf ( %d, resti [j]);

5 Un esempio di esecuzione del programma è: Inserisci un numero intero positivo:13 La sua rappresentazione binaria è: 1101

6 Esercizio Si consideri la chiamata di procedura stampa_bin(13); nel programma precedente. Dire qual è il valore della variabile i all uscita del primo ciclo for nel corpo della procedura. Soluzione i = 4

7 Ricerca di un elemento in un array ESERCIZIO Scrivere un programma per determinare se un valore è presente all interno di un array di caratteri. Il programma scorre in maniera sequenziale tutti gli elementi dell array confrontandoli con il valore cercato. Se tale valore è presente nell array, la scansione degli elementi dell array termina e viene restituito l indice corrispondente a tale elemento all interno dell array stesso.

8 Programma */ Ricerca sequenziale di un valore in un array */ #include <stdio.h> #define MAX_ELE 1000 */ massimo numero di elementi */ main ( ) { char arr [MAX_ELE]; int i, n; char c; */ variabile che conterrà il valore da cercare */ (continua)

9 */ immissione della lunghezza della sequenza */ do { printf ( \n Numero elementi: ); scanf ( %d, &n); while (n<1 n>max_ele); */ immissione degli elementi della sequenza */ for (i=0; i<n; i++) { printf ( \n Immettere carattere n. %d:, i); scanf ( %1s, &arr [i]); (continua)

10 */ immissione elemento da cercare */ printf ( \n Elemento da cercare: ); scanf ( %1s, &c); */ ricerca sequenziale */ i = 0; while (c!= arr [i] && i <= n-1) ++i; if (i<=n-1 && c == arr [i]) printf ( \nelemento %c presente in posizione %d\n, c, i); else printf ( \nelemento non presente!\n );

11 Ricerca di una sottostringa in una stringa ESERCIZIO Scrivere una funzione che date due stringhe s e t restituisca un puntatore alla prima occorrenza della stringa t in s se t è una sottostringa di s altrimenti restituisca un puntatore NULL. s b i o g r a f i a /0 t g r a f i a /0

12 Funzione str_in_str char *str_in_str (char *s, char *t) { char *v; */ scorri la stringa s finché non incontri l elemento \0 */ while (*s!= \0 ) { */ inizio ciclo while */ if (*s == *t) */ verifica se hai trovato una sottostringa uguale a t in s */

13 */ scorri la stringa t mediante il puntatore v */ for (v = t; *s == *v;) { */ inizio ciclo for */ if (*++v == \0 ) return (s-(v-t-1)); */ v-t-1 è la lunghezza della stringa t */ if (*++s == \0 ) return (NULL); */ fine ciclo for */ else s++; return (NULL);

14 Esercizio Scrivere un tipo di dato Bilancio che è un array di record aventi due campi: il campo voce descrive la tipologia di entrata o uscita (ad esempio: alimentari, stipendio, benzina,...), mentre il campo importo conterrà l importo relativo a tale voce, che sarà positivo se si tratta di una entrata e negativo se si tratta di una uscita. Il numero di voci del bilancio è dato da una costante simbolica N_VOCI. typedef struct { char *voce; int importo; Entry; typedef Entry Bilancio [N_VOCI];

15 Esercizio Scrivere una procedura stampa_bilancio che dato, un valore di tipo Bilancio, stampa a video, uno per riga, gli elementi della tabella passata come parametro attuale, secondo la seguente sintassi: <voce> : <importo> Nell ultima riga, viene stampato il saldo (differenza tra entrate e uscite). void stampa_bilancio (Bilancio bilancio) { int i; int saldo = 0; for (i=0; i<n_voci; i++) { saldo += bilancio[i].importo; printf ( %s : %d\n, bilancio[i].voce, bilancio[i].importo); printf ( \n saldo : %d\n, saldo);

16 Esercizio Scrivere una funzione preventivo08 che prende come parametri attuali due tabelle di tipo Bilancio, la prima contenente il bilancio preventivo del 2007 (fatto all inizio del 2007) e la seconda contenente il bilancio consuntivo del 2007 (fatto alla fine del 2007 e contenete gli importi effettivi relativi ad ogni voce). La funzione deve restituire una nuova tabella, contenente gli importi preventivati per il 2008 relativi a ciascuna voce in accordo con la seguente visione pessimista : per ogni voce se si tratta di una entrata prenderemo il minimo tra il valore preventivato e quello effettivo, mentre se si tratta di una uscita, prenderemo il maggiore (in valore assoluto). Utilizzare la memoria dinamica per costruire il bilancio preventivo del 2008.

17 void alloca_entry (Entry* nuova, Entry riferimento) { nuova --> voce = (char*) calloc (strlen(riferimento.voce)+1, sizeof(char)); Entry *preventivo08 (Bilancio preventivo07, Bilancio consuntivo07) { Entry *bilancio; int i; bilancio = (Entry *) calloc (N_VOCI, sizeof (Entry)); for (i=0; i<n_voci; i++) { alloca_entry (&(bilancio [i]), preventivo07[i]); strcpy(bilancio[i].voce, preventivo07[i].voce); if (preventivo07[i].importo < consuntivo07[i].importo) bilancio[i].importo = preventivo07[i].importo; else bilancio[i].importo = consuntivo07[i].importo; return bilancio;

18 Esercizio Scrivere una funzione aggiungi_voce che prende come parametri attuali una tabella di tipo Bilancio ed un valore di tipo Entry. La funzione restituisce una nuova tabella (dinamica) che è la copia della tabella passata con una riga in più, contenente la nuova entry (che si vuole aggiungere) passata come secondo parametro.

19 Entry * aggiungi_voce (Bilancio bilancio, Entry entry) { Entry *bilancionuovo; int i; bilancionuovo = (Entry *) calloc ((N_VOCI+1), sizeof(entry)); for (i=0; i<n_voci; i++) { alloca_entry(&(bilancionuovo[i]), bilancio[i]); strcpy (bilancionuovo[i].voce, bilancio[i].voce); bilancionuovo[i].importo = bilancio[i].importo; alloca_entry (& (bilancionuovo [N_VOCI]), entry); strcpy (bilancionuovo[n_voci].voce, entry.voce); bilancionuovo [N_VOCI].importo = entry.importo; return bilancionuovo;

20 Che cos è? int *p; /* p è un puntatore a un intero */ int *p[10]; /* p è un array con 10 elementi di tipo puntatore a un intero */ int *p (void); /* p è una funzione che restituisce un puntatore a un intero */ int p (char *a); /* p è una funzione che accetta come argomento un puntatore a un carattere e restituisce un intero */ int *p (char *a); /* p è una funzione che accetta come argomento un puntatore a un carattere e restituisce un puntatore a un intero */

21 Che cos è? int (*p) (char *a); /* p è un puntatore a una funzione che accetta come argomento un puntatore a un carattere e restituisce un intero */ int (*p) [10]; /* p è un puntatore a un array di 10 elementi di tipo intero */ int p (char *a [ ]); int p (char (*a) [ ]); /* p è una funzione che accetta come argomento un array di puntatori a caratteri e restituisce un intero */ /* p è una funzione che accetta come argomento un puntatore a un array di caratteri e restituisce un intero */

22 Che cos è? int (*p) (char (*a) [ ]); /* p è un puntatore a una funzione che accetta come argomento un puntatore a un array di caratteri e restituisce un intero */ int *p (char (*a) [ ]); int *p (char *a [ ]); /* p è una funzione che accetta come argomento un puntatore a un array di caratteri e restituisce un puntatore a un intero */ /* p è una funzione che accetta come argomento un array di puntatori a caratteri e restituisce un puntatore a un intero */ int *p (char a [ ]); /* p è una funzione che accetta come argomento un array di caratteri e restituisce un puntatore a un intero */

23 Riordinare un elenco di stringhe Vogliamo inserire una serie di stringhe nel computer, disporle in ordine alfabetico e poi visualizzarle. Registriamo le stringhe in un array di caratteri bidimensionale; ogni stringa sarà registrata in una riga distinta all interno dell array. Permettiamo al programma di accettare un numero di stringhe non specificato, finché non incontra la stringa END. Utilizziamo le funzioni di libreria strcmp e strcpy che servono rispettivamente a confrontare due stringhe e a copiare una stringa in un altra.

24 La funzione strcmp accetta due stringhe come argomenti, le confronta e restituisce un valore intero in questo modo: se la prima stringa precede alfabeticamente la seconda, viene restituito un valore negativo; se le due stringhe sono identiche (ignorando la differenza tra caratteri maiuscoli e minuscoli), viene restituito un valore zero; se la seconda stringa precede alfabeticamente la prima, viene restituito un valore positivo. La funzione strcpy accetta due stringhe come argomenti. In genere il primo argomento string1 è un identificatore che rappresenta una stringa; il secondo argomento string2 può essere una costante di stringa o un identificatore che rappresenta un altra stringa. La funzione copia il contenuto di string2 in string1: in definitiva, è come se strcpy assegnasse una stringa a un altra stringa.

25 Algoritmo di ordinamento per selezione Il processo di ordinamento comincia dall esame dell intero array alla ricerca della stringa più piccola, quella cioè che precede alfabeticamente tutte le altre. Questa stringa viene scambiata con la prima stringa dell array: dunque la stringa più piccola diventa la prima dell array. Si passa quindi a considerare le restanti n-1 stringhe alla ricerca della più piccola, che sarà scambiata con la seconda stringa dell array. Poi si passa alle restanti n-2 stringhe, in cerca della più piccola, che viene scambiata con la terza stringa dell array, e così via finché l array non sarà ordinato. Per trovare la stringa più piccola, ad ogni passaggio, si confronta ciascuna delle stringhe non ancora ordinate con la prima stringa. Se si trova una stringa più piccola della prima le due stringhe vengono scambiate.

26 1 o passo el_1 el_2 el_3 el_i el_n sia el_i il più piccolo tra el_1... el_n el_i el_2 el_3 el_1 el_n scambia

27 2 o passo el_i el_2 el_3 el_k el_n sia el_k il più piccolo tra el_2... el_n el_i el_k el_3 el_2 el_n scambia 3 o passo considera gli elementi dell array compresi tra el_3 e el_n...

28 */ ordina alfabeticamente un elenco di stringhe utilizzando un array di caratteri bidimensionale */ #include <stdio.h> #include <stdlib.h> #include <string.h> void ordina (char elenco[ ][12], int n); main ( ) { int i, n = 0; char elenco [10] [12]; printf ( Digita ogni stringa su una riga distinta\n\n ); printf ( Digita END per finire\n\n );

29 */ lettura delle stringhe */ do { printf ( stringa %d:, n+1); scanf ( %s, elenco[n] ); while (strcmp(elenco[n++], END )); n--; ordina (elenco, n); */ visualizzazione dell elenco ordinato */ printf ( Elenco ordinato delle stringhe:\n ); for (i=0; i < n; i++) printf ( \nstringa %d: %s, i+1, elenco[i]);

30 */ procedura per ordinare gli elementi dell array */ void ordina (char elenco[ ][12], int n) { char temp [12]; int i, j; for (j=0; j < n-1; ++j) for (i=j+1; i < n; ++i) if (strcmp(elenco[j], elenco[i])>0) { */ scambia due stringhe */ strcpy(temp, elenco[j]); strcpy(elenco[j], elenco[i]); strcpy(elenco[i], temp); return;

31 Esempio di esecuzione del programma Digita ogni stringa su una riga distinta Digita END per finire stringa 1: Pacifico stringa 2: Atlantico stringa 3: Indiano stringa 4: Caraibi stringa 5: Nero stringa 6: Rosso stringa 7: Nord stringa 8: Baltico stringa 9: Caspio stringa 10: END

32 Elenco ordinato delle stringhe: stringa 1: Atlantico stringa 2: Baltico stringa 3: Caraibi stringa 4: Caspio stringa 5: Indiano stringa 6: Nero stringa 7: Nord stringa 8: Pacifico stringa 9: Rosso

33 Esercizio 1) Definire un tipo enumerazione Indumento che rappresenta gli indumenti venduti in un negozio di abbigliamento maschile: camicia, pantaloni, giacca, cravatta. typedef enum Indumento {camicia, pantaloni, giacca, cravatta Indumento; 2) Definire un tipo enumerazione Colore che rappresenta i colori: bianco, azzurro, grigio, blu. typedef enum Colore {bianco, azzurro, grigio, blu Colore;

34 3) Dichiarare un tipo record Articolo che rappresenta un articolo venduto nel negozio caratterizzato dai seguenti tre campi: indumento, colore, taglia. typedef struct { Indumento indumento; Colore colore; int taglia; Articolo; 4) Utilizzando il tipo Articolo definito precedentemente, dichiarare il tipo dinamico Scaffale per rappresentare una lista di articoli in cui ciascun elemento ha due campi: articolo, next. typedef struct Elem_scaffale { Articolo articolo; struct Elem_scaffale *next; Elem_scaffale; typedef Elem_scaffale *Scaffale; /* Scaffale è una lista di articoli */

35 5) Inizializzare una variabile completo_casual di tipo Scaffale che è una lista di due articoli: camicia blu, pantaloni grigi, entrambi di taglia 48. Scaffale completo_casual; completo_casual = (Scaffale) malloc (sizeof (Elem_scaffale)); (completo_casual -> articolo).indumento = camicia; (completo_casual -> articolo).colore = blu; (completo_casual -> articolo).taglia = 48; completo_casual -> next = (Scaffale) malloc (sizeof (Elem_scaffale)); (completo_casual -> next -> articolo).indumento = pantaloni; (completo_casual -> next -> articolo).colore = grigio; (completo_casual -> next -> articolo).taglia = 48; completo_casual -> next -> next = NULL;

36 6) Scrivere una funzione, che prendendo come parametro attuale un valore di tipo Scaffale everificasetuttigliarticoli presentinello Scaffale hanno taglia 48. int verifica_taglia (Scaffale s) { int risultato; if (s == NULL) risultato = 0; else risultato = 1; while (s!= NULL) { if ((s -> articolo).taglia!= 48) { risultato = 0; break; s=s->next; return risultato;

37 7) Dichiarare un tipo record Articolo_in_vendita che rappresenta un puntatore ad un articolo in vendita nel negozio e il suo prezzo. typedef struct { Articolo* articolo; int prezzo; Articolo_in_vendita; 8) Dichiarare un tipo Espositore che è una tabella 10 per 10 di Articoli_in_vendita. typedef Articolo_in_vendita Espositore [10][10];

38 9) Inizializzare una variabile di tipo Espositore in modo che rappresenti un espositore vuoto nel quale è presente solo una camiciabiancataglia48in una qualunque posizione dell espositore. Espositore espositore; Articolo* articolo_presente; inti,j; for (i=0; i<10; i++) for (j=0; j<10; j++) { espositore[i][j].articolo = NULL; espositore [i][j].prezzo = 0; articolo_presente = (Articolo*) malloc (sizeof (Articolo)); articolo_presente -> indumento = camicia; articolo_presente -> colore = bianco; articolo_presente -> taglia = 48; espositore[0][0].articolo = articolo_presente;

39 10) Scrivere una funzione che prendendo come parametro attuale un Espositore verifica se una camicia bianca taglia 48 è presente nell espositore. int cercacamicia (Espositore espositore) { inti,j; for (i=0; i<10; i++) for (j=0; j<10; j++) { if ((espositore[i][j].articolo!= NULL) && ((espositore[i][j].articolo) -> indumento == camicia) && ((espositore[i][j].articolo) -> colore == bianco) && ((espositore[i][j].articolo) -> taglia == 48)) return 1; return 0;

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'Allocazione Dinamica della Memoria nel linguaggio C L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Stringhe e allocazione dinamica della memoria

Stringhe e allocazione dinamica della memoria Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0 STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

I puntatori e l allocazione dinamica di memoria. Esercizi risolti I puntatori e l allocazione dinamica di memoria Esercizi risolti 1 Esercizio Si vuole realizzare un tipo struct, utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Uso avanzato dei puntatori Allocazione dinamica della memoria

Uso avanzato dei puntatori Allocazione dinamica della memoria Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Ricerca binaria ricorsiva!

Ricerca binaria ricorsiva! ESERCIZIO: RICERCA BINARIA! Soluzione Iterativa! int ricerca_bin (int vet[], int el) {int first=0, last=n-1, med=(first+last)/2; int T=0; while ((first

Dettagli

Caratteri e stringhe

Caratteri e stringhe Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un

Dettagli

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

Linguaggio C - Array. Array: tipo nome_array[num_elementi] Linguaggio C - Array Array: Gli array o vettori sono delle strutture dati in grado di contenere un insieme di valori tutti dello stesso tipo. Un array lo possiamo immaginare come un contenitore suddiviso

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 5 Struct, Union e allocazione dinamica della memoria Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)

Dettagli

Esercizi su strutture dati

Esercizi su strutture dati Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

ESERCIZIO 1 ESERCIZIO 2

ESERCIZIO 1 ESERCIZIO 2 ESERCIZIO 1 Scrivere una funzione che data una stringa A calcoli la sua lunghezza. int lunghezza(char A[]); Scrivere una funzione che date due stringhe A e B copi il contenuto di A in B e restituisca il

Dettagli

Linguaggio C. Esercizio 1

Linguaggio C. Esercizio 1 Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili

Dettagli

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Introduzione al C + Array

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

STRINGHE: ARRAY DI CARATTERI! a p e \0

STRINGHE: ARRAY DI CARATTERI! a p e \0 STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

dott. Sabrina Senatore

dott. Sabrina Senatore dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;

Dettagli

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Operazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

stringhe array monodimensionali char. libreria < string.h>

stringhe array monodimensionali char. libreria < string.h> Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite

Dettagli

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd)

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd) Es. 1 È dato un file binario, di nome valori.dat, contenente una sequenza di int; non è noto a priori quanti interi siano presenti nel file. I valori sono disposti in ordine casuale. Si realizzi un programma

Dettagli

Consideriamo un vettore allocato dinamicamente

Consideriamo un vettore allocato dinamicamente Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib. /* ATTENZIONE: non accedere mai ai campi di un elemento della lista prima di essersi accertati che tale elemento sia diverso da NULL; Si osservi che la condizione booleana (*lista == NULL (*lista)->info

Dettagli

Esercizio 1: calcolo insieme intersezione

Esercizio 1: calcolo insieme intersezione Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************

Dettagli

int ninv; /* numero di inventario */

int ninv; /* numero di inventario */ 1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti

Dettagli

Stringhe. Concetti chiave

Stringhe. Concetti chiave Concetti chiave Stringhe Variabili strutturate: array di caratteri Carattere di fine stringa Copiare, concatenare, confrontare e convertire stringhe Funzioni standard strcpy, strcat, strcat, strcmp, atoi,

Dettagli

I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria.

I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. Puntatori I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. NOTA: quando un programma viene mandato in esecuzione, ad esso viene assegnata un area di memoria di lavoro

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

s r t i r n i g n. g h s r t c r p c y s r t c r a c t s r t c r m c p s r t c r h c r s r t s r t s r

s r t i r n i g n. g h s r t c r p c y s r t c r a c t s r t c r m c p s r t c r h c r s r t s r t s r char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra

Dettagli

- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t);

- int nbrani = 0; //numero di brani presenti in archivio. int creaplaylist(tipobrano[] playlist, int n, TipoGenere g, TipoFile t); Appello 12.09.2007-1- punti 15 (4+6+5) a) ctunes è un programma per la gestione di archivi musicali; serve per raccogliere informazioni riguardanti tutti i file musicali presenti su un computer e per creare

Dettagli

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli

char* titolo= Libreria sulle stringhe Esempi: (strcpy) (strstr)... Laboratorio di Informatica L-A 1

char* titolo= Libreria sulle stringhe Esempi: (strcpy) (strstr)... Laboratorio di Informatica L-A 1 char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra

Dettagli

string.h strcpy strc strcat strcmp strcmp strchr strstr strstr i t r ; s r \0 int strlen(char* str) char pippo[]={ p, i, p, p, o, \0 \ };

string.h strcpy strc strcat strcmp strcmp strchr strstr strstr i t r ; s r \0 int strlen(char* str) char pippo[]={ p, i, p, p, o, \0 \ }; char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; Libreria sulle stringhe libreria i string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra (strcpy

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

ESERCIZIO 1. Si considerino le seguenti definizioni:

ESERCIZIO 1. Si considerino le seguenti definizioni: ESERCIZIO 1 Si considerino le seguenti definizioni: #define N 4 struct Casella{ unsigned int r, c; ; typedef Casella TappetoElastico[N][N]; Pare che tra le discipline degli ottocenteschi circhi delle pulci

Dettagli

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

CORSO DI LAUREA IN INGEGNERIA ELETTRICA CORSO DI LAUREA IN INGEGNERIA ELETTRICA Informatica B anno accademico 2013-2014 Prof. Danilo ARDAGNA Esercizio 1. (Calcolo divisione intera) Si scrivano in linguaggio MATLAB: Esercitazione 13.06.2014 una

Dettagli

FUNZIONI che operano su LISTE

FUNZIONI che operano su LISTE U N D I C E S I M A ESERCITAZIONE 2007/2008 L. MANDELLI FUNZIONI che operano su LISTE Sfruttando i tipi pelemento (puntatore ad un tipo elemento) e/o ELEMENTO codificare le seguenti funzioni che operano

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Dettagli

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

Dettagli

Gestione dei file. File di testo e binari

Gestione dei file. File di testo e binari Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Esercizio 1. Tavola ordinata in memoria centrale

Esercizio 1. Tavola ordinata in memoria centrale Esercizio 1. Tavola ordinata in memoria centrale E dato un programma che realizza una rubrica telefonica come tavola in memoria centrale. In particolare, ogni elemento della tavola è caratterizzato dalle

Dettagli

Lezione 6 Selection/Insertion Sort su interi e stringhe

Lezione 6 Selection/Insertion Sort su interi e stringhe Lezione 6 Selection/Insertion Sort su interi e stringhe Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Tutoraggio Venerdì 14

Dettagli

PROVA SCRITTA 23 MARZO 2010

PROVA SCRITTA 23 MARZO 2010 PROVA SCRITTA 23 MARZO 2010 In un file binario, MY_FILE.DAT, si memorizzano per ciascuno studente universitario: nome e cognome (stringhe, 20 char), matricola (intero), codice del corso di laurea (stringa

Dettagli

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche Fondamenti di Informatica T-1 modulo 2 Laboratorio 04: stringhe 1 Stringhe In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche terminatore

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria Esercitazione 9 Strutture ed Enumerazioni Allocazione dinamica di memoria Typedef La parola chiave typedef viene usata per assegnare un alias a un qualsiasi tipo, fondamentale o derivato. Esempio typedef

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Esercizio 1 Liste: calcolo perimetro di un poligono

Esercizio 1 Liste: calcolo perimetro di un poligono Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto: ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ESERCIZIO n.1 È dato un file di testo che contiene l'elenco dei vestiti presenti in un negozio. Il file contiene al massimo

Dettagli

ESERCIZIO: Lettura/Scrittura Array

ESERCIZIO: Lettura/Scrittura Array ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti

Dettagli

Esercizio 1. Esercizio - 1

Esercizio 1. Esercizio - 1 Sia data la struttura Esercizio 1 struct time { int hour, minute, second; ; Per semplicità si può definire il tipo Time typedef struct time Time; 1 Esercizio - 1 Si realizzi in un modulo tempo.h/tempo.c

Dettagli

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Fondamenti di Informatica II appello 5 luglio 2014 Matricola Cognome Nome Istruzioni Durata prova: 2

Dettagli

I files in C. A cura del prof. Ghezzi

I files in C. A cura del prof. Ghezzi I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array 2 Esercizio 1 Creare un programma che legga da input un numero non noto a priori di interi (al più 10) terminati da 0.

Dettagli

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t))

Allocazione dinamica della memoria: calloc() Se T è il nomed di un tipo, la chiamata calloc(n, sizeof(t)) è equivalente a malloc(n * sizeof(t)) Allocazione dinamica della memoria: malloc() In C è possibile allocare dinamicamente un area di memoria (ossia, durante l esecuzione di un programma) tramite le funzioni malloc() e calloc() (occorre includere

Dettagli

Esempio di Prova Scritta

Esempio di Prova Scritta Esempio di Prova Scritta La prova scritta è composta da alcuni esercizi per un totale di 10 punti (durata:circa 1h15 ). Le tipologie di esercizi possibili comprendono:! sintesi di una funzione ricorsiva/iterativa,

Dettagli

Esercizi C sui tipi definiti dall utente

Esercizi C sui tipi definiti dall utente Politecnico di Milano Esercizi C sui tipi definiti dall utente Typedef,, tipi enumerativi e strutturati Sinonimi: typedef int Intero; Intero a; int b; Definire un nuovo tipo typedef char Stringa[10]; Stringa

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe

Lezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani

Dettagli

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 3A di Venerdì 12 Febbraio 2016 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 3A di Venerdì 12 Febbraio 2016 tempo a disposizione 2h Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti

Dettagli