Concetti Chiave
- Il programma filtra i dati di misurazione eliminando errori e sostituendoli con valori interpolati linearmente.
- La variazione accettabile per considerare un valore corretto è del più o meno 5% rispetto al valore precedente.
- Se si trovano valori non attendibili consecutivi, vengono sostituiti con valori calcolati tra l'ultimo e il primo valore corretto successivo.
- Il programma genera un file di output con lo stesso nome del file di input, ma con estensione .WOK.
- Alla fine dell'esecuzione, viene mostrato il numero totale di valori interpolati a video.
Il è controllato tramite uno strumento solitamente molto preciso; tuttavia a causa delle condizioni atmosferiche il valore misurato ogni tanto è inattendibile.
Considerando che il livello dellacqua nel bacino non può subire variazioni improvvise, si definisce accettabile una variazione dell'acqua,tra due misurazioni successive prese a intervallo temporale costante,del più o meno 5 per cento, mentre si devono scartare come errori di misura tutte quelle superiori al 5 per cento in valore assoluto.
Lo strumento memorizza su un file, sotto forma di numeri reali con 3 cifre decimali, un dato per ciascuna riga. Il file ha estensione .WD
Si vuole realizzare un programma per filtrare i dati misurati dallo strumento, eliminando gli errori di misura e sostituendoli con valori interpolati linearmente secondo le regole di seguito descritte:
- Il primo valore riportato nel file si assume sempre corretto.
- Se dopo un valore corretto appare un valore scorretto, cioè con variazione maggiore in valore assoluto del 5 per cento, allore bisogna considerare i valori successivi fino a trovare un valore corretto.
- Una volta trovato il valore corretto successivo,i valori scorretti vanno quindi sostituiti da valori interpolati linearmente tra i due valori corretti agli estremi dellintervallo.
- Se a partire da un certo momento tutti i valori fossero scorretti fino alla fine del file allora tali valori saranno sostituiti con l'ultimo valore corretto.
Il programma riceve come primo argomento della linea di comando il nome del file contente le misure (senza estensione .WD ) e deve generare un file con lo stesso nome e formato ed estensione .WOK. Inoltre al termine dell'esecuzione, il programma deve visualizzare a video il numero dei valori interpolati.
Ad esempio, se il file PROVA.WD contiene:
1332.230 1331.900 1331.870 1331.652 1783.265 *** 1331.500 1331.470 12.230 *** -236.340 *** 1331.230
Lanciando il programma con: PROG.EXE PROVA, verrà generato il file PROVA.WOK contenente:
1332.230 1331.900 1331.870 1331.652 1331.576 *** 1331.500 1331.470 1331.390 *** 1331.310 *** 1331.230
e il messaggio a video: Interpolate 3 misure non attendibili
NOTA:
Nell'esempio i valori con *** corrispondono alle misure non attendibili nel file PROVA.WD e ai valori interpolati nel file PROVA.WOK Se chiamiamoDove
Riguardo alla correttezza o meno dei dati successivi ad un primo dato scorretto, si deve osservare che il margine di errore con cui si devono fare i confronti per stabilire la correttezza o meno del dato corrente con l'ultimo valore corretto cresce del 5 per cento per il primo dato al 10 per cento per il secondo, al 15 per cento per il terzo, e così via.
Nel nostro esempio, si nota come ci siano due casi in cui si hanno sequenza di valori non attendibili. Nel primo caso d_ultimo è pari a 1331.652, d_primo è 1331.500, seq_non_att è pari a 1 e quindi index potrà valere soltanto 1. Il valore d_interp sarà quindi pari a 1331.576
Soluzione: download sorgente
Domande da interrogazione
- Qual è la tolleranza accettabile per le variazioni del livello dell'acqua tra due misurazioni?
- Come viene gestito un valore non attendibile nel file di misurazioni?
- Qual è il formato del file contenente le misurazioni e quello generato dal programma?
- Come viene calcolato il valore interpolato per i dati non attendibili?
- Cosa deve fare il programma al termine della sua esecuzione?
La tolleranza accettabile per le variazioni del livello dell'acqua è del più o meno 5 per cento tra due misurazioni successive, mentre le variazioni superiori al 5 per cento in valore assoluto devono essere scartate come errori di misura.
Un valore non attendibile viene sostituito con valori interpolati linearmente tra il valore corretto precedente e il valore corretto successivo, se presente. Se tutti i valori successivi sono scorretti, vengono sostituiti con l'ultimo valore corretto.
Il file contenente le misurazioni ha estensione .WD, mentre il file generato dal programma avrà lo stesso nome e formato, ma con estensione .WOK.
Il valore interpolato è calcolato utilizzando la formula: \(d_{interp} = d_{ultimo} + \left(\frac{index \cdot (d_{primo} - d_{ultimo})}{(seq\_non\_att + 1)}\right)\), dove \(d_{ultimo}\) è l'ultimo valore corretto, \(d_{primo}\) è il primo valore corretto dopo la sequenza di valori non attendibili, e \(index\) è la posizione del valore non attendibile.
Al termine dell'esecuzione, il programma deve visualizzare a video il numero dei valori interpolati e generare un file con le misurazioni corrette e interpolate.