Come suddividere in classi di frequenza dati acquisiti

di il
4 risposte

Come suddividere in classi di frequenza dati acquisiti

Buonasera...premetto che sono nuovo e totalmente neofita del C.
Dovrei realizzare un semplice programma che importi dei dati (solo numeri) da un file esterno, trovi gli estremi (max e min), in base al numero totale di dati presenti nel file decida quante classi di frequenza creare (con la semplice regola della radice quadrata del numero totale di dati), si determini poi l'ampiezza di ogni singola classe (max-min/num classi) e infine si deve visualizzare una sorta di istogramma numerico...del tipo: nella classe 1 ci sono 4 dati, nella classe 2 ci sono 34 dati, nella classe 3 ci sono 67 dati, nella classe x ci sono y dati...
Ora, ho scritto il codice fino alla suddivisione dei dati in classi...qui mi sono totalmente bloccato e non ho la benchè minima idea di come procedere;((
Posto il mio codice fin qui...Se qualcuno ha qualche suggerimento su come proseguire ne sarei molto grato...

PS: trattasi di esercizio
#include <stdio.h>  
#include <math.h>   
#include <stdlib.h>
#define MAX 1000
 int main(void)
{  
  int i;                               
  int j;                             
  int N;                         
  int NClassi;                      
  float AmpiezzaClassi;           
  float Dati[MAX];         
  float Classi[MAX];       
  float min;                    
  float max;               
  FILE *fp;                    
  printf("\nProgramma per realizzare un semplice istogramma numerico.\n");
  fp=fopen("Dati_Istogramma.txt","r");    
  i=0;                      
  N=0;                
  while (fscanf(fp, "%f", &Dati[i])!=EOF)         
  {   
      i++;                
      N++;            
  }
  printf("Il numero totale di dati presenti nel file è: %d \n\n", N);      
  min=Dati[0];                 
  max=Dati[0];          
  for (i=0; i<N; i++)      
  {
      if (Dati[i]<=min)     
      {
          min=Dati[i];
      }
      else if (Dati[i]>=max)    
      {
          max=Dati[i];
      }
  }
  printf("Gli estremi del set di dati sono: %f e %f.\n", min, max); 
  printf("Il numero di classi di frequenza sarà automaticamente generato dal sistema utilizzando la radice quadrata del numero totale di dati\n");
  NClassi=sqrt(N);
  printf("Il numero di classi di frequenza è: %d\n", NClassi);
  AmpiezzaClassi=(max-min)/NClassi; 
  printf("L'ampiezza di ogni singola classe è dunque: %f\n", AmpiezzaClassi);
}

4 Risposte

  • Re: Come suddividere in classi di frequenza dati acquisiti

    Il codice va tra tag CODE, come da regolamento, altrimenti non si capisce nulla.

    Per curiosità, perché devi realizzare questo programma? Perché proprio in C/C++?

    E l'istogramma/grafico come lo dovresti realizzare? Con della vera grafica?
  • Re: Come suddividere in classi di frequenza dati acquisiti

    Chiedo scusa, spero di averlo corretto bene...

    E' un esercizio per un corso di C

    Non devo fare nessun vero istogramma: solo visualizzare quanti dati si trovano in ogni classe. Ad esempio:
    "Nella classe 1 ci sono x dati
    Nella classe 2 ci sono y dati
    Nella classe 3 ci sono z dati
    ..."
  • Re: Come suddividere in classi di frequenza dati acquisiti

    E perché sei bloccato?
  • Re: Come suddividere in classi di frequenza dati acquisiti

    Non riesco a capire come implementare l'algoritmo che, leggendo i dati uno ad uno, li inserisca nelle varie classi e infine mi restituisca il numero di componenti per ogni classe.
    Immagino che siano due cicli for annidati, con due contatori i e j ma non ho idea di come poterli scrivere; sono bloccato di qui da giorni ormai...
Devi accedere o registrarti per scrivere nel forum
4 risposte