Advertisement
Mazamin

Prova2 C

Jan 7th, 2019
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. /*
  2.  * Un file di testo contiene una sequenza, di lunghezza ignota, di numeri reali,
  3.  * i cui valori appartengono all’intervallo [0,100[ .
  4.  * (NOTA: la notazione [x,y[ indica l’intervallo da x a y in cui l’estremo
  5.  * inferiore è incluso e l’estremo superiore è escluso).
  6.  * Si scriva un programma in linguaggio C che legga tale sequenza, ricevendo
  7.  * il nome del file sulla linea di comando, e stampi per
  8.  * ciascun intervallo [0,10[, [10,20[, [20,30[,... [90,100[ (si osservi che
  9.  * l’estremo superiore di ogni intervallo è sempre escluso)
  10.  * il numero di valori letti dal file che cadono in tale intervallo.
  11.  
  12.  * Esempio:
  13.  * file numeri.dat:
  14.  * 31.2
  15.  * 32.8
  16.  * 40
  17.  * 0
  18.  * 1.44
  19.  * 33.33
  20.    
  21.  * Output:
  22.  * [0,10[   2
  23.  * [10,20[   0
  24.  * [20,30[   0
  25.  * [30,40[   3
  26.  * [40,50[   1
  27.  * [50,60[   0
  28.  * [60,70[   0
  29.  * [70,80[   0
  30.  * [80,90[   0
  31.  * [90,100[   0
  32.  */
  33.  
  34. #include <stdio.h>
  35. #include <stdlib.h>
  36. #define MAX_N 1024
  37.  
  38. FILE * my_open_file(char[], char[1]);
  39. int my_fget_array(FILE *, double[]);
  40. void my_output_range(int, double[]);
  41.  
  42. int main(){
  43.     int nu;
  44.     double numbers[MAX_N];
  45.     FILE * fp;
  46.     fp=my_open_file("numeri.dat", "r");
  47.     nu=my_fget_array(fp, numbers);
  48.     my_output_range(nu, numbers);
  49.     fclose(fp);
  50.     return 0;
  51. }
  52.  
  53. FILE * my_open_file(char file_name[], char mode[1]){
  54.     FILE * fp;
  55.     if((fp=fopen(file_name, mode))!=NULL)
  56.         return fp;
  57.     else
  58.         exit(1);
  59. }
  60.  
  61. int my_fget_array(FILE * fp, double numbers[]){
  62.     int i=0;
  63.     while(feof(fp)==0)
  64.         fscanf(fp, "%lf", &numbers[i++]);
  65.     return i;
  66. }
  67.  
  68. void my_output_range(int nu, double numbers[]){
  69.     int i, j, occs;
  70.     for(i=0;i<=90;i+=10){
  71.         occs=0;
  72.         for(j=0;j<nu;j++)
  73.             if((numbers[j]>=i)&&(numbers[j]<(i+10)))
  74.                 occs++;
  75.         printf("[%-3d, %3d[\t%d\n", i, i+10, occs);
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement