Enunciado:

Codigo:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
using namespace std;
void CARGAR(double V[100], int &n)
{
char nom [20];
int i;
ifstream A;
cout<<"Ingrese nombre del archivo"<<endl;
cin>>nom;
A.open(nom);
if(A.fail())
{
cout<<"error no se cuentra el archivo";
system ("pause");
exit (1);
}
A.setf(ios::fixed);
A.setf(ios::showpoint);
A.precision (2);
i=0;
while(!A.eof())
{
A>>V[i];
i++;
}
n=i;
A.close();
}
void MOSTRAR (double V[100], int n)
{
int i;
cout<<"El vector es"<<endl;
for(i=0; i<n; i++)
{
cout<<V[i]<<endl;
}
}
double PROMEDIO(double V[100], int n)
{
int s,i;
double prom;
for(i=0; i<n; i++)
{
s=s+V[i];
}
prom=(double)s/n;
return prom;
}
double DESVIACION (double V[100], int n, double promedio)
{
double s,desv;
int i;
s=0;
for(i=0;i<n;i++)
{
s=s+pow(V[i]-promedio,2);
}
desv=sqrt(s/n);
return desv;
}
void SALIDA(double V[100], int n, double desv)
{
int i;
double nro;
ofstream A;
A.open("salida.txt");
A.setf(ios::showpoint);
A.setf(ios::fixed);
A.precision(10);
for(i=0; i<n; i++)
{
nro=(double)V[i]-desv;
A<<abs(nro)<<endl;
}
cout<<"Distancias en el archivo salidas.txt"<<endl;
A.close();
}
int main ()
{
double V[100];
int n;
double p,d;
CARGAR(V,n);
MOSTRAR(V,n);
p=PROMEDIO(V,n);
d=DESVIACION(V,n,p);
SALIDA(V,n,d);
cout<<"Promedio "<<p<<endl;
cout<<"Desviacion "<<d<<endl;
system ("pause");
return 0;
}
El "archivo.txt"
45
455
44
54
4
El "archivo2.txt"
0.215
0.142
0.2455
0.144
0.154
0.1
Nota: pueden probar cualquiera de los dos archivos
Recordar: p=(double)s/n; se pone double por que si s y n son enteros dara un entero por mas que p sea un double, para evitar esto ponemos un (double) adelante de la operacion y tenemos resuelto el problema.
Ayuda Memoria: "sqrt" es para calcular la raiz, "abs" para el valor absoluto, ambas pertenecientes a la libreria cmath.
Agradecimientos Emiliano Ortin