Ciao a tutti,
premetto di essere alla prime armi con il c++ e per informazione lavoro da ubuntu.
Devo creare un programmino che sia in grando di prendere e leggere un file esterno (nel file esterno ci dovrebbero essere solo numeri, ma potrebbero esserci anche altri caratteri che non vanno considerati).
Una volta presi questi numeri devo creare un istogramma, per ora quando parlo di istogramma mi occorre solamente suddividere i vari numeri presi dal file esterno (ad esempio con numeri minori di 25, compresi fra 25 e 50 ecc) e incrementare ogni volta una variabile, come ho fatto qua sotto.
#include <iostream>
#include <fstream>
using namespace std;
void spazzino(ifstream &carolina, int &k) //funzione spazzino
{char c;
carolina . clear();
k--;
while(
(c = carolina . peek()) != ' '
&&
c != '\n'
&&
c != '\t'
&&
(c < '0' || c > '9')
&&
c != '.'
&& ! carolina . eof()
) carolina.get();
}
int main(int narg, char ** args, char ** env)
{
cout<<" Questo programma serve a fare un istogramma di dati ricevuti da un file esterno "<<endl;
if(narg < 2)
{
cout << "devi dare un nome di file\n"; return 0;
}
ifstream input(args[1]); //prende il file esterno
int i,n,a,b,c,d;
a=0; b=0; c=0; d=0;
void *punta;
double valore;
double array[i];
for ( ; ;i++) //acquisisce i dati all'interno del file esterno
{
if(input)
{
input >> valore;
if(input . eof()) break;
spazzino(input,i);
for (n=0; n<i; n++) // riempio un array con i dati trovati
cin>>array[i];
}
else {cout<<"problemi con il file in acquisizione "<<endl;}
}
for (n=0; n<i; n++) //riempio il grafico
array[i] < 25 ;
a++;
for (n=0; n<i; n++)
array[i] > 25 && array[i] < 50 ;
b++;
for (n=0; n<i; n++)
array[i] > 50 && array[i] < 75 ;
c++;
for (n=0; n<i; n++)
array[i] > 75 && array[i] < 100 ;
d++;
cout<<"a= "<<a<<endl;
cout<<"b= "<<b<<endl;
cout<<"c= "<<c<<endl;
cout<<"d= "<<d<<endl;
}
Quello che è scritto fin'ora è corretto? e se è corretto come riesco a dire al programma di prendere il file esterno?
Grazie in anticipo