comprensione e modifica di codice

Slides:



Advertisements
Presentazioni simili
1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Advertisements

Uso avanzato di C.
Stringhe di caratteri In linguaggio C.
Selezione multipla e tipo di dato carattere
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Esercizi su alberi binari
Tail recursion: esempio
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN.
LdL - LP1 - ver. 6 - lez aa Linguaggi di programmazione I La ricorsione Prof. Luigi Di Lascio Lezione 10.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
Esercizi su alberi binari
Struct, enum, Puntatori e Array dinamici
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
1 Funzioni e Procedure in C Corso di Informatica A Vito Perrone.
Le liste dinamiche La ricorsione
Sorting: MERGESORT Vogliamo ordinare lista (a 1,…,a n ). 1.Dividi lista in 2 sottoliste aventi (quasi) la stessa dimensione: (a 1,a 3,a 5,…) e (a 2,a 4,…),
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
Esercizi su File.
Esercizi su File e Liste
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Ricerca sequenziale in un array di interi
03/19/09E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2009 Codici.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
APPUNTI SUL LINGUAGGIO C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Matteo Ferroni –
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Esercitazioni di Prog. II (esercizi su alberi ennari)
Tutorato Elementi di Informatica 2013
Il linguaggio C Strutture Moreno Marzolla
Array n-dimensionali e tipi di dati strutturati
Le postcondizioni specificano l’output della funzione.
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
APPUNTI SUL LINGUAGGIO C Strutture Dati e Puntatori
Scrivere programmi corretti
Fondamenti di Informatica
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
APPUNTI SUL LINGUAGGIO C
Gestione di un banco di magliette
Gestione di un ristorante
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
LINGUAGGIO C Alberi e livelli
APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
APPUNTI SUL LINGUAGGIO C
Process synchronization
Array n-dimensionali e tipi di dati strutturati
APPUNTI SUL LINGUAGGIO C
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Transcript della presentazione:

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f3(char a[], char c){ int i = 0; int x = 0; while (a[i] != '\0'){ if (a[i] == c) x++; i++; } return x;

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa Data una stringa A ed un carattere c, f3 calcola le occorrenze di c in A modificare tale codice secondo certe condizioni scrivere la versione ricorsiva f3_r di f3

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f3_rr(char a[], int i, char c){ if (a[i] == '\0') return 0; else if (a[i] == c) return 1 + f3_rr(a,i+1,c); else return f3_rr(a,i+1,c); } int f3_r(char a[], char c){ return f3_rr(a,0,c);

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa ottimizzare tale codice secondo certe condizioni

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f4(int a[], int n){ int x = 0; int y = 0; int e; int i,j; for (i = 0; i < n; i++){ e = a[i]; y = 0; if (e>= 0 && e <= 9) { y = 1; for (j = i+1; j < n; j++) if (e == a[j]) y++; } if (x < y) x = y; return x;

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa dato un array di interi A, restituisce il massimo numero di occorrenze con cui si ripete un numero (il cui valore è compreso tra 0 e 9) in A

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 2 2 13 2 5 2 2 13 2 5 2 2 13 2 5 2 2 13 2 5

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa dato un array di interi A, restituisce il massimo numero di occorrenze con cui si ripete un numero (il cui valore è compreso tra 0 e 9) in A ottimizzare tale codice scrivere la versione f4_o di f4 tale per cui l’array sia visitato una sola volta.

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 3 1 3

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f4_o(int a[], int n) { int b[10] = {0,0,0,0,0,0,0,0,0,0}; int x = 0; int i = 0; for (i = 0; i < n; i++) if (a[i] >= 0 && a[i] <= 9) { b[a[i]]++; if (b[a[i]] > x) x = b[a[i]]; } return x;

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice typedef struct elem{ int info; struct elem* next; } elist; typedef elist* plist; int lungLista(plist L){ int cont = 0; while (L != NULL) { cont++; L = L->next; } return cont;

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f5(plist L, int k){ int x = lungLista(L); int i = x - k; while (i > 1) { L = L->next; i--; } return L->info;

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa data una lista L di interi e un numero K, restituisce il valore del campo info dell’elemento in L posto a distanza K dall’ultimo nodo.

comprensione e modifica di codice elemento in posizione x - k Esercitazione: comprensione e modifica di codice 2 2 13 2 5 distanza k lunghezza x 2 2 13 2 5 elemento in posizione x - k

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice Dato un codice, bisogna comprendere cosa fa data una lista L di interi e un numero K, restituisce il valore del campo info dell’elemento in L posto a distanza K dall’ultimo nodo. ottimizzare tale codice scrivere la versione f5_o di f5 tale per cui la lista sia visitata una sola volta, non si usino strutture dati di supporto e siano considerate anche eccezioni sugli input.

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 p1 p2 distanza k

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 p2 p1 distanza k

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 distanza k p2 p1

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice 2 2 13 2 5 distanza k p2 p1

comprensione e modifica di codice Esercitazione: comprensione e modifica di codice int f5_o(plist L, int k){ plist p1 = L; plist p2 = L; while ((k >= 1) && (p2 != NULL)) { p2 = p2->next; k--; } if (p2 == NULL) return; while (p2->next != NULL){ p1 = p1->next; return p1->info;