// pocita histogram ze souboru random.txt
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
#define POCET 10000 // cisel na radku
#define MAX 100  // pocitame histogram do 99

// definice globalnich promennych
ifstream fr;             
int histogram[MAX], data[POCET];
int maximum;   // bude obsahovat maximum z data[]

void cti_radek(void){   // precte jeden radek, nezavira soubor
  int i;
  for(i = 0; i < POCET; i++)
    fr >> data[i];
}

// pocita histogram a nalezne maximum
int pocitej_histogram(void){ 
  int i;
  for(i = 0; i < MAX; i++) 
    histogram[i] = 0;       // nuluji histogram
  maximum = 0;
  for(i = 0; i < POCET; i++){
    histogram[data[i]]++; // dalsi vyskyt hodnoty data[i]
    if(data[i] > maximum)  
      maximum = data[i];    // nove maximum
  }
}

void hvezdy(int n){   // kresli "n" hvezd
  int i;
  for(i = 0; i < n; i++)
    cout << '*';
}

void kresli_histogram(void){
   int i;
   for(i = 0;i <= maximum; i++){
     cout << setw(3) << i << "  ";
     hvezdy(histogram[i]/50); // hvezdicka = 50 vyskytu
     cout << endl;
   }
}

int main(void){
  int maximum;
  // nejprve nacteme data
  fr.open("random.txt");
  cti_radek(); cti_radek(); cti_radek(); // preskoci tri radky
  cti_radek(); // cte jeden radek ze souboru
  fr.close();
  // ted data zpracujeme
  pocitej_histogram(); 
  kresli_histogram();  
}

