/* 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;
}