/* Claudio Sartori - Universita' di Bologna - 2005
 *
 * Legge numeri da input e scrive su file in base alla differenza rispetto al precedente
 *
 * Struttura dati:
 *
 * Algoritmo:
 * - acquisisce nome del file
 * - apre il file in lettura e in caso di errore termina
 */

#include <stdio.h>
#include <math.h>
#define NF "valori.txt" // nel caso sostituire con dich.di variabile e input
#define N 3 // numero di valori da scrivere
#define M 10 // percentuale di eccesso che fa scattare la scrittura

int main(){
    int ns;     /*numero scritti */
    float
        x,  /*valore attuale letto dal file*/
        xp; /*valore precedente letto dal file*/
        FILE *f;

        if((f=fopen(NF, "w"))==NULL){
                printf("Impossibile aprire il file %s\n",NF);
                return 1;
        }
        ns=0;
    printf("Inserire primo numero> ");
    scanf("%f",&xp);

        while(ns<N){       // ripeti lettura finche' non finisce il file
        printf("Inserire numero          ");
        scanf("%f", &x);
        printf("%f %f\n",(x-xp)/xp*100, (xp-x)/xp*100);
                if (abs((x-xp)/xp*100)>M){        // test di scrittura
            ns++;
                        fprintf(f, "%f\n", x);
        }
                xp=x;
        }
        printf("Fine Lavoro, scritti %d numeri\n", ns);
        return 0;
}