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.

Slides:



Advertisements
Presentazioni simili
Programmazione dinamica: problema della sottosequenza più lunga
Advertisements

Sottoprogrammi: funzioni e procedure
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E2 Linguaggi algoritmici.
Algoritmi notevoli In linguaggio C.
Procedure e funzioni ricorsive
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Informatica Generale Marzia Buscemi
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Alberi binari di ricerca
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
TERNE PITAGORICHE Obiettivi dell’esercitazione
PROGRAMMI DI RICERCA E ORDINAMENTO
Esercizi su alberi binari
Tail recursion: esempio
Mergesort1 if (n>1) /* la collezione contiene almeno due elementi. */ {1. Dividi la collezione in due di circa la metà degli elementi. 2. chiamata ricorsiva.
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
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.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
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
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
Le funzioni.
AN Fondam98 Sorting Ricerca in un vettore ordinato.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
void binario(int n); …………………
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
Massimo Comun Divisore
Programmazione di Calcolatori
LE PROGRESSIONI.
Esercizi Liste.
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Ricerca sequenziale in un array di interi
Complessità di un algoritmo
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Array (ordinamento) CORDA – Informatica A. Ferrari.
1 Un esempio con iteratore: le liste ordinate di interi.
Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista L1 con inserimento in testa; cons Creare lista L2 con.
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
C++:Strutture di Controllo
Rappresentazione degli interi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Transcript della presentazione:

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

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 è 11000 e 00111 Pre condizioni: La funzione prende in ingresso i due interi x e y Post condizioni: La funzione restituisce la distanza di Hamming

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)); }

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

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);

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

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);