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;