Esercizio 1. Tavola ordinata in memoria centrale

Documenti analoghi
PROVA SCRITTA 23 MARZO 2010

Lezione 8 Struct e qsort

Esercizi su strutture dati

suggerisce l uso del formato CSV. La funzionalità può essere implementata sia come

Passare argomenti al programma

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Esercizi. Stringhe. Stringhe Ricerca binaria

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

WORD PROCESSING.

Gestione di files Motivazioni

Implementazione dell albero binario in linguaggio C++

Informazioni sull esame e Regole per lo svolgimento dei progetti

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

UnivAQ - Corso ECDL - Elaborazione Testi Maria Maddalena Fornari

Esercitazione 11. Liste semplici

Esercitazione 12. Esercizi di Ricapitolazione

Gestione dei file. File di testo e binari

La stampa Unione con MS-Word

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Elementi di Informatica A. A. 2016/2017

3. Terza esercitazione autoguidata: progetto gestione voli

A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Tipi di Dati Astratti

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Scrittura formattata - printf

Es. 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)

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

Esercizi. I File ed il C

Esercizi. La funzione swapint() primo tentativo

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Informatica 1. Prova di recupero 21 Settembre 2001

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...

5. Quinta esercitazione autoguidata: liste semplici

Algoritmi di Ricerca. Esempi di programmi Java

Fondamenti di Informatica T-1 Modulo 2

Prova d Esame Compito A

Esercitazione n 2. Obiettivi

Gestione Formulario. Il Formulario è una raccolta organizzata di formule e modelli finalizzati all amministrazione e gestione del personale.

Esercizi C sui tipi definiti dall utente

Introduzione al linguaggio C Puntatori

Indovina la lettera...

INTRODUZIONE ALLA PROGRAMMAZIONE

File di testo e file binari Directory

La stampa Unione con MS-Word

GUIDA OPERATIVA REGISTRO DELLE LEZIONI

Nota: l icona in questa maschera fa chiudere l intero sistema, nelle altre maschere effettua la chiusura della maschera aperta in quel momento.

Heap e code di priorità

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Il software Epi Info

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

INDICE. Vista Libretto Pt. Coordinate 2. Inserimento e modifica dei punti di coordinate note 4. Inserimento e modifica dei punti di orientamento 5

Lezione 9 Esercizi d esame

ESERCIZIO 1 (FILE DI TESTO)

Capitolo 10 - Strutture

Fiat Group Purchasing Supplier Quality SQP Manuale Utente Versione 1, Novembre 2008

Guida all utilizzo di Italiano per Immagini

Istruzioni per l uso Siemens Gigaset A510IP

ESSE3 GUIDA DEL PRODOTTO CONCORSI GESTIONE REFERENZE

La struttura dati CODA

Esercizio 1: archivio CD e DVD

Fondamenti di Programmazione

Dati aggregati. Violetta Lonati

Strutture Dinamiche. Fondamenti di Informatica

Esercitazione 6. Alberi binari di ricerca

REGIONE TOSCANA SISTEMA INFORMATIVO CULTURA GLI EVENTI NELLE BIBLIOTECHE

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

Università di Roma Tor Vergata L12-1

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Array k-dimensionali

C: panoramica. Violetta Lonati

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

Il generatore di numeri casuali

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

ESERCIZIO 1 ESERCIZIO 2

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di riepilogo

Rappresentazione di dati

Video Scrittura (MS Word) Prima Parte

Ricerca binaria ricorsiva!

WebDisk. TeamPortal - WebDisk

Programmazione Procedurale in Linguaggio C++

Trasformare array paralleli in array di record

MODULO DI ISCRIZIONE AI CORSI PER LA PREPARAZIONE ALLA CERTIFICAZIONE ECDL. l sottoscritt. nat a il giorno e residente a, Provincia in n.

03FYZ TECNICHE DI PROGRAMMAZIONE Esercitazione di Laboratorio 03 es.1 23 Marzo 2016

Gli Array. Dichiarazione di un array

Patente Europea del Computer ECDL - MODULO 3

Trasformare array paralleli in array di record

Giselda De Vita 2015

Strutture fisiche e strutture di accesso ai dati

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Algoritmi di Ricerca. Esempi di programmi Java

Tool di. Personalizzazione. Adattamento della procedura

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Esercizio 1. Esercizio - 1

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:

Usare Python in Linux

Transcript:

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 seguenti informazioni: cognome (campo chiave primario) nome (campo chiave secondario) tel Il programma deve essere in grado di attuare varie richieste dell utente: inserimento ordinato: l utente vuole inserire un nuovo record nell archivio. Dati cognome, nome e numero di telefono della persona da inserire, il programma aggiunge un nuovo elemento all archivio. Ogni volta che inserisco un elemento devo riordinare la tavola con la qsort. stampa: l utente richiede la stampa dell intera rubrica. uscita: l utente richiede che il programma termini. L utente può scegliere l ordine con cui effettuare le richieste e il numero di richieste da fare prima di terminare l esecuzione. Strutturare il programma in più file fin dall'inizio.

Esercizio 1. Tavola ordinata in memoria centrale L interazione tra l utente e il programma avviene in modo ciclico: l utente può sottoporre una richiesta ad ogni ciclo ed il programma, sfruttando un meccanismo di selezione (switch), reagisce nel modo richiesto. L esecuzione del programma si conclude quando l utente richiede l uscita. (Creazione di un menù testuale) La rubrica telefonica viene presentata come una tavola inizializzata in memoria centrale ordinata sulla chiave (array ordinato in base al cognome e, in caso di uguaglianza, al nome).

Esercizio 1. Tavola ordinata in memoria centrale Si utilizzi l algoritmo di ordinamento qsort per effettuare l inserimento ordinato. RICORDIAMO CHE: void qsort (void *base, size_t num, size_t width, int (*compare)(const void *elem1, const void *elem2 )); Utilizzare l Help di Visual Studio per ricavare le informazioni relative ai parametri formali della qsort.

Esercizio 1. Tavola ordinata in memoria centrale Gli elementi della tavola dovranno avere la seguente struttura: typedef struct { char cognome[20]; char nome[20]; char tel[16]; } elemento; // Definizione della struttura di un elemento della tavola typedef elemento rubrica[dim]; // Definizione del tipo rubrica // che equivale ad un array di dati di tipo elemento Implementare tutte le funzioni necessarie al corretto funzionamento del programma. *

Esercizio 1. Tavola ordinata in memoria centrale Si richiede, in particolare, di: implementare la funzione di inserimento ordinato per la funzionalità di inserimento presente nelle specifiche, la funzione richiede all utente l inserimento dei dati, aggiuge all array I nuovi dati e richiama qsort per ordinare: int inserimento_ord(rubrica R, int n); //n=dimensione logica di R definire una opportuna funzione di confronto compare per utilizzare la funzione qsort: int compare (const void *e1, const void *e2); //deve effettuare il confronto sulla chiave *

Esercizio 1. Tavola ordinata in memoria centrale inizializzare la rubrica con il seguente array di persone: { "Grissom","Cyrus","555 01071967", "Krueger","Frederick","555 14051945", "Lecter","Hannibal","555 02081950", "Malfoi","Draco","555 23111980", "Malfoi","Lucius","555 12051965", "Price","Elijah","555 30091970", "Voorhees","Jason","555 13061946", "Voorhees","Pamela","555 22081930" } *

Esercizio 2. Tavola ordinata in memoria centrale Partendo dal programma precedente, si aggiunga la seguente funzione: ricerca: dato in ingresso cognome e nome di una persona presente in archivio, si richiede la visualizzazione del numero di telefono relativo alla persona data, questa funzione avviene usando il metodo di ricerca binaria; Come per la parte 1, l utente può scegliere l ordine con cui effettuare le richieste e il numero di richieste da fare prima di terminare l esecuzione. Strutturare il programma in più file.

Esercizio 2. Tavola ordinata in memoria centrale Ricordiamo che gli elementi della tavola presentano la seguente struttura: typedef struct { char cognome[20]; char nome[20]; char tel[16]; } elemento; // Definizione della struttura di un elemento della tavola typedef elemento rubrica[dim]; // Definizione del tipo rubrica // che equivale ad un array di dati di tipo elemento Implementare tutte le funzioni necessarie al corretto funzionamento della ricerca. *

Esercizio 2. Tavola ordinata in memoria centrale Si richiede, in particolare, di: implementare la funzione di ricerca binaria per la funzionalità di ricerca presente nelle specifiche, essendo la tavola ordinata: int individua_binaria (rubrica R, int n, elemento e); //cerca e nella rubrica contenente n elementi *

Esercizio 2. Tavola ordinata in memoria centrale Cerchiamo il numero 14 nel seguente vettore con il metodo di ricerca binaria

Esercizio 2. Tavola ordinata in memoria centrale TIPS: Adesso che abbiamo implementato la funzione di ricerca, come possiamo modificare la funzione di inserimento per evitare di inserire due volte la stessa entry? Fornirne un implementazione.

Esercizio 3. Tavola ordinata su file di testo Creare una seconda versione dell esercizio precedente nella quale la rubrica è gestita tramite file. Il programma dovrà quindi gestire la tavola mediante un file. Il programma, oltre alle funzionalità già viste dovrà: 1. All avvio inizializzare la tavola leggendola da file (passare il nome del file come ARGOMENTO) 2. Poter azzerare la rubrica creando un nuovo file 3. Alla chiusura salvare la tavola nel file 4. Possibilità di salvare tramite funzione nel menù lo stato della tavola Strutturare il programma in più file fin da subito.

Esercizio 3. Tavola ordinata su file di testo Una volta letta da file, la tavola è in memoria centrale, si possono quindi riutilizzare le funzioni già implementate. Utilizzare file di testo.

Esercizio 4. Tavola ordinata su file binario Si supponga che la rubrica sia stata salvata in un file binario. Il contenuto del file binario è troppo grande per poter essere contenuto in memoria centrale. Il programma dovrà quindi gestire la tavola mediante funzioni su file (passare il nome del file come ARGOMENTO). Il programma dovrà: 1. Poter azzerare la rubrica creando un nuovo file 2. Stampare l intera rubrica. 3. Inserire in maniera ordinata un nuovo elemento. 4. Cercare un elemento all interno della rubrica (usare ricerca binaria). 5. Uscire. Il programma dovrà quindi eseguire le operazioni di inserimento ordinato e ricerca binaria direttamente su file (NOTA: non deve utilizzare la qsort ad ogni inserimento, SUGGERIMENTO: usare la fseek per la ricerca) Strutturare il programma in più file fin da subito.