Se realizará un programa el cual lea un fichero realizado por el usuario con una serie de números como el que se muestra a continuación. Es importante que el archivo se encuentre guardado en la carpeta donde esté alojado el proyecto. Para trabajar con ficheros necesitaremos la librería #include <fstream>.
En primer lugar se leerá el fichero vector y se irán introduciendo todos los números en el vector v. Posteriormente se declara otro fichero como salida, ofstream histo("histograma.txt"); .En dicho fichero será almacenado el histograma final. Para obtenerlo, será necesario crear un vector histograma con el mismo tamaño al de v. Finalmente, mediante un bucle for y un contador se irán contabilizando las veces que aparece cada número.
Además se ha implementado una función que calculará la media de dicho vector y devolverá con el fin de sacar el resultado por pantalla.
1 ///HISTOGRAMA DE UN VECTOR
2 #include <iostream>
3 #include <vector>
4 #include <fstream>
5 using namespace std;
6 double calcula_media(vector<int>);
7
8 int main()
9 {
10 vector<int> v;
11 ifstream fich("vector.txt");
12 int dato;
13
14 ///Intro datos de fichero a vector
15 while(fich >> dato)
16 v.push_back(dato);
17
18 ofstream histo("histograma.txt");
19
20 for(size_t j=0; j<v.size(); j++)
21 histo << j << " ";
22 histo << endl;
23
24 //Crear vector histograma con mismo tamaño al de v
25 vector<int> histograma(v.size());
26
27 //Contabilizar
28 for(size_t i=0; i<v.size(); i++)
29 histograma.at(v.at(i))++;
30
31 for(auto x:histograma)
32 histo << x << " ";
33 histo << endl;
34
35 double media=calcula_media(v);
36 histo << "Media: " << media;
37 }
38
39 double calcula_media(vector<int> v)
40 {
41 double suma=0;
42 for(size_t j=0; j<v.size(); j++)
43 suma+=v.at(j); //suma=suma+v.at(j)
44 double media=suma/v.size();
45 return media;
46 }
El resultado final para el fichero mostrado anteriormente es:
No hay comentarios:
Publicar un comentario