Problem solving elementare su dati vettoriali



Documenti analoghi
Problem solving avanzato

Lab 11 Gestione file di testo"

Esercizio 1. Esercizio 2

Fondamenti di Informatica 2

I puntatori e l allocazione dinamica di memoria

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Compito di Fondamenti di Informatica

Introduzione al MATLAB c Parte 2

Caratteri e stringhe Esercizi risolti

INFORMATICA 1 L. Mezzalira

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

LISTE, INSIEMI, ALBERI E RICORSIONE

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Introduzione alla programmazione in C

Funzioni in C. Violetta Lonati

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Algoritmi di Ricerca. Esempi di programmi Java

Alcune regole di base per scrivere un programma in linguaggio C

Introduzione al Linguaggio C

dall argomento argomento della malloc()

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Politecnico di Torino

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Laboratorio di Algoritmi e Strutture Dati

Vettori Algoritmi elementari di ordinamento

Funzioni. Il modello console. Interfaccia in modalità console

FONDAMENTI di INFORMATICA L. Mezzalira

Breve riepilogo della puntata precedente:

Calcolatori Elettronici B a.a. 2008/2009

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Gestione dei File. dischi nastri cd

L utility Unix awk [Aho-Weinberger-Kernighan]

Dimensione di uno Spazio vettoriale

File di testo e file binari Directory

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Istruzioni per il programma ANDI

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Appunti sulla Macchina di Turing. Macchina di Turing

Esempio: Array di struct

Definizione di nuovi tipi in C

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA

Record in C: il costruttore struct.

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Esercizio 1. Esercizio 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea in Matematica

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 4A di Martedì 21 Giugno 2011 tempo a disposizione 2h

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

min 4x 1 +x 2 +x 3 2x 1 +x 2 +2x 3 = 4 3x 1 +3x 2 +x 3 = 3 x 1 +x 2 3x 3 = 5 Innanzitutto scriviamo il problema in forma standard: x 1 x 2 +3x 3 = 5

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Gestione dei File in C

Prova di recupero di Informatica B Corsi di Laurea in Ingegneria Meccanica prof. Francesco Amigoni 20 febbraio 2004

[DS.7] MODALITÀ DI COMUNICAZIONE DEI DATI PER LA VERIFICA DI SICUREZZA CON ORIZZONTE SETTIMANALE

Progettazione di un Database

Gestione dei processi

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi

Realizzazione di una classe con un associazione

Esercizi di programmazione in C

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B

Appello di Informatica B

puntatori Lab. Calc. AA 2007/08 1

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30

Metodi Stocastici per la Finanza

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Manuale di realizzazione dei modelli di documento

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

SAPIENZA Università di Roma, Facoltà di Ingegneria

RICERCA DI UN ELEMENTO

Allocazione dinamica della memoria - riepilogo

La selezione binaria

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

( x) ( x) 0. Equazioni irrazionali

Rappresentazione delle informazioni

Laboratorio di Fondamenti di Informatica anno accademico Esercizi proposti il

Gestione delle stringhe in C

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

Inizializzazione, Assegnamento e Distruzione di Classi

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Matematica in laboratorio

I puntatori e l allocazione dinamica di memoria. Esercizi risolti

Programmazione I - Laboratorio

Laboratorio di Informatica

Fasi di creazione di un programma

Spiegazione Open Interest Storico:

Programmazione in Java Parte I: Fondamenti

Algoritmi su array / 2

CORSO DI LAUREA IN INGEGNERIA.

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Alfabeto ed elementi lessicali del linguaggio C

Transcript:

Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1

Introduzione (1/2) I problemi di verifica consistono nel decidere se un insieme di informazioni o dati rispettano un determinato criterio di accettazione Selezionare significa verificare i dati e scegliere quelli che corrispondono al criterio di verifica La ricerca è una delle modalità di selezione Spesso si cerca il dato che corrisponde a un criterio Talvolta i dati possono essere molteplici 4 2006 Politecnico di Torino 2

Introduzione (2/2) I vettori possono essere utilizzati Come contenitori per l insieme di dati, su cui applicare il criterio di verifica Come insieme dei dati tra i quali ricercare/selezionare 5 2006 Politecnico di Torino 3

Verifiche su sequenze Verificare una sequenza di dati significa decidere se la sequenza rispetta un criterio di accettazione Un vettore può essere necessario nel caso di criterio di accettazione che richieda elaborazioni su tutti i dati 7 Dati ripetuti (1/2) Problema Un file testo contiene una sequenza di dati numerici (reali) La prima riga del file indica (mediante un intero) quanti sono i dati nella sequenza Seguono i dati, separati da spazi o a-capo Si scriva una funzione C che, ricevuto come parametro il puntatore al file (già aperto), verifichi che ogni dato sia almeno ripetuto una volta nella sequenza Un dato si considera ripetuto se, nella sequenza, se ne trova almeno un altro tale che la loro differenza, in valore assoluto, sia inferiore a 1% 8 2006 Politecnico di Torino 4

Dati ripetuti (2/2) Soluzione Analizzare i dati, mediante una doppia iterazione, verificando, per ognuno, che ne esista almeno uno uguale (differenza 1% rispetto al massimo tra i due in valore assoluto) Struttura dati Vettore per contenere i dati letti da file Variabili scalari: indici e altro Algoritmo Acquisizione dati, su vettore dinamico Verifica mediante doppia iterazione 9 Funzione datiripetuti int datiripetuti (FILE *fp) { float *dati; int ndati, i, j, ripetuto; fscanf(fp, %d,&ndati); dati = malloc (ndati*sizeof(float)); for (i=0; i<ndati; i++) fscanf(fp, %f,&dati[i]); for (i=0; i<ndati; i++) { ripetuto = 0; for (j=0; j<ndati; j++) if (i!=j && simili(dati[i],dati[j])) ripetuto=1; if (!ripetuto) return 0; return 1; 10 2006 Politecnico di Torino 5

Funzione simili int simili (float a, float b) { if (abs(a)>abs(b)) return (abs(a-b)/abs(a) < 0.01); else return (abs(a-b)/abs(b) < 0.01); 11 2006 Politecnico di Torino 6

Selezione di dati Contestualmente alla verifica di più dati (o sequenze/insiemi) di dati, è possibile discriminare i dati (o il dato) che corrispondono al criterio di verifica, rispetto agli altri La selezione può essere vista come una variante della verifica: I dati vengono dapprima verificati Quelli (o quello) che corrispondono al criterio di accettazione vengono scelti La ricerca è un caso particolare di selezione Si seleziona il dato (se esiste) che corrisponde al criterio di ricerca 13 Conversione matricola nome (1/2) Problema Si realizzi una funzione C in grado di determinare il nome di uno studente, a partire dal numero di matricola (primo parametro alla funzione) Siccome i numeri di matricola sono grandi (6 cifre decimali) non si vuole sfruttare la corrispondenza indice-dato in un vettore. Le matricole sono rappresentate mediante stringhe La tabella di conversione è fornita, come secondo parametro alla funzione, mediante un vettore di struct, aventi come campi (stringhe) numero di matricola e nome. Il terzo parametro (intero) è la dimensione della tabella 14 2006 Politecnico di Torino 7

Conversione matricola nome (2/2) Soluzione Analizzare iterativamente i dati nel vettore, confrontando di volta in volta la matricola corrente con quella richiesta Struttura dati La tabella è un vettore (fornito come parametro) Il numero di matricola richiesto (secondo parametro) è una stringa Algoritmo La ricerca consiste in una verifica dei dati La funzione ricerca la matricola e ritorna il nome corrispondente (NULL per indicare fallimento) 15 Da matricola a nome typedef struct { char *matricola, *nome; t_stud;... char *matrnome(char *m, t_stud *tabella, int n) { int i; for (i=0; i<n; i++) { if (strcmp(m,tabella[i].matricola)==0) return(tabella[i].nome); return NULL; 16 2006 Politecnico di Torino 8