Esercitazione 12. Esercizi di Ricapitolazione
|
|
- Adriana Gioia
- 7 anni fa
- Visualizzazioni
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 Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliEsercizi. 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)
DettagliEsercizio 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
DettagliC: 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
DettagliEsercizio 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
DettagliEsercizi 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:
DettagliEsercizio 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
DettagliL'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
DettagliLezione 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
DettagliStringhe 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
Dettagligiapresente( ) 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
DettagliStrutture 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
DettagliInformatica 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
DettagliProgrammazione 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
DettagliUna 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
DettagliERRATA 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
DettagliELEMENTI 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
DettagliADT 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
DettagliI 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
DettagliDati 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
DettagliScrittura 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
DettagliUso 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
DettagliRicerca 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
DettagliCaratteri 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
DettagliLinguaggio 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
DettagliEsercitazione 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
DettagliEsercitazione 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
DettagliPuntatori. 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
DettagliProgrammazione 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/
DettagliInformatica 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)
DettagliEsercizi 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
DettagliArray. 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
DettagliESERCIZIO 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
DettagliLinguaggio 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
DettagliLaboratorio 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
DettagliALGORITMI 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
DettagliProgrammazione 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
DettagliBreve 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...
DettagliSTRINGHE: 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ù
DettagliEsercitazione 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
DettagliUnità 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;
DettagliIl 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;
DettagliEsercizi. 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
DettagliStruct, 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
Dettaglidott. 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;
DettagliOperazioni 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
DettagliEsercizi 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]
DettagliTipi 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
Dettaglistringhe 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
DettagliEs. 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
DettagliConsideriamo 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
DettagliL 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
DettagliIl 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.
/* 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
DettagliEsercizio 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: *******************************************************************
Dettagliint 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
DettagliStringhe. 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,
DettagliI 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
DettagliI 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
Dettaglis 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);
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
Dettagli5. 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
Dettaglichar* 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
Dettaglistring.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
DettagliLaboratorio 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
DettagliPolitecnico 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
DettagliESERCIZIO 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
Dettagli4 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
DettagliCORSO 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
DettagliFUNZIONI 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
DettagliStrutture 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));
DettagliFondamenti 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:
DettagliGestione 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
DettagliComplementi. - 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
DettagliEsercizio 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
DettagliLezione 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
DettagliPROVA 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
DettagliStringhe. 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliEsercitazione 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
DettagliEsercizio 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
DettagliElementi 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
DettagliEsercizio 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
DettagliI 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
DettagliAnche 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
DettagliQuicksort 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.
DettagliImplementazione 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
DettagliELEMENTI 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
DettagliESERCIZIO: 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
DettagliEsercizio 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
DettagliPolitecnico 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
DettagliI 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
DettagliFondamenti 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.
DettagliAllocazione 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
DettagliEsempio 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,
DettagliEsercizi 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
DettagliOperazioni 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
DettagliLezione 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
DettagliFondamenti 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