La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.

Presentazioni simili


Presentazione sul tema: "Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti."— Transcript della presentazione:

1 Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti. Scrivere una funzione ricorsiva di coda che calcoli la distanza di hamming tra due interi dati Una sequenza di k interi si dice linearmente crescente se il valore di ogni coordinata è maggiore o uguale alla somma delle coordinate anteriori. Si scriva un algoritmo che generi tutte le sequenze di k elementi nell'insieme {1, ..., n} linearmente crescenti. Una sequenza di k interi si dice massimamente crescente se il valore di ogni coordinata è strettamente maggiore del massimo delle coordinate anteriori. Si scriva un algoritmo che generi tutte le sequenze di k elementi nell'insieme {1, ..., n} massimamente crescenti. NOTA: scrivere sempre pre e post condizione di ogni funzione

2 Esercizio 1 La distanza di Hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti. Scrivere una funzione ricorsiva di coda che calcoli la distanza di Hamming tra due interi dati Es. se x = 24 e y = 7, la funzione deve restituire 5 dal momento che la rappresentazione binaria dei due numeri è e 00111 Pre condizioni: La funzione prende in ingresso i due interi x e y Post condizioni: La funzione restituisce la distanza di Hamming

3 Implementazione ricorsiva di coda
int ham(int x, int y, int h)‏ { if (x == 0 && y == 0) return h; return ham(x, y, h+(x % 2 != y % 2 ? 1 : 0)); }

4 Esercizio 2 Una sequenza di k interi si dice linearmente crescente se il valore di ogni coordinata è maggiore o uguale alla somma delle coordinate anteriori. Si scriva un algoritmo che generi tutte le sequenze di k elementi nell'insieme {1, ..., n} linearmente crescenti. Pre condizioni: la funzione prende in ingresso due interi k e n Post condizioni: la funzione stampa tutte le sequenze linearmente crescenti

5 Svolgimento void gen(int n, int k)‏ { int t[k];
gen_ric(n, k, 0, 0, t); } int gen_ric(int n, int k, int l, int somma, int *t)‏ if (l == k) { stampa(t); return; } for (int j = somma > 0 ? somma : 1; j <= n; j++)‏ t[l] = j; gen_ric(n, k, l+1, somma+j, t);

6 Esercizio 3 Una sequenza di k interi si dice massimamente crescente se il valore di ogni coordinata è strettamente maggiore delle coordinate anteriori. Si scriva un algoritmo che generi tutte le sequenze di k elementi nell'insieme {1, ..., n} massimamente crescenti. Pre condizioni: la funzione prende in ingresso due interi k e n Post condizioni: la funzione stampa tutte le sequenze massimamente crescenti

7 Svolgimento void gen(int n, int k)‏ { int t[k];
gen_ric(n, k, 0, 0, t); } int gen_ric(int n, int k, int l, int m, int *t)‏ if (l == k) { stampa(t); return; } for (int j = m+1; j <= n; j++)‏ t[l] = j; gen_ric(n, k, l+1, j, t);


Scaricare ppt "Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti."

Presentazioni simili


Annunci Google