e llamado al archivo "18.txt" por ninguna razn en especial.
Lo que quiero hacer e
s leer los nmeros en el archivo y realizar algunas operaciones matemticas con ello s. Como estn en formato de texto, primero debo convertirlos a nmeros decimales. Para ello uso la funcin "atof", pero hay un problema: mis nmeros usan coma decimal , y la funcin "atof" considera punto decimal. Debo leer los nmeros, lnea por lnea, y ponerlos en el formato con el que puede trabajar "atof", as que declaro un aray de caracteres llamado "palabra". Ninguno de los nmeros guardados en "18.txt" ocu pa ms de cinco caracteres, as que "palabra" es declarada como: char palabra[6]; Luego recorro cada caracter dentro de "palabra" y si encuentro una coma, la reem plazo por un punto. El array "beta", separa espacio en memoria para 150 nmeros decimales ya que slo qu iero operar con 150 nmeros en total. El cdigo fuente es el siguiente (el ejecutable compilado est en la misma carpeta q ue "18.txt"): #include <iostream.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #pragma hdrstop #pragma argsused void main(int argc, char* argv[]) { FILE *fp; int i; double *beta, c, promedio, rms, desviacion; char palabra[6]; beta = (double *)malloc(sizeof(double)*151); i=0; fp = fopen("18.txt", "r"); if (fp==NULL) cout<<"no existe el archivo \n"; else { do { c = fscanf(fp, "%s", palabra); for(int j=0; j<6; j++) if (palabra[j]== ',') { palabra[j]='.'; break; } beta[i] = atof(palabra); cout<<beta[i]; cout<<"\n"; i++; } while (c != EOF && i != 151); //valores estadsticos: promedio=0; desviacion=0; rms=0; //Promedio for (int j= 0; j<=150; j++) promedio= promedio+ beta[j]; promedio = promedio/151; cout<<"Promedio "; cout<<promedio; cout<<"\n"; //Desviacin Estndar for (int j= 0; j<=150; j++) desviacion= desviacion + pow((beta[j]-promedio),2); desviacion=pow(desviacion,0.5)/pow(151,0.5); cout<<"la desviacion estandar es: "; cout<<desviacion; cout<<"\n"; //Valor Cuadrtico Medio for (int j= 0; j<=150; j++) rms= rms + pow(beta[j],2); rms=pow(rms,0.5)/pow(151,0.5); cout<<"El valor RMS: "; cout<<rms; cout<<"\n"; fclose(fp); } system("PAUSE"); } Pero si quiero operar con todos los nmeros en un archivo de texto sin importar cun tos sean, usar este cdigo: #include <iostream.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #pragma hdrstop #pragma argsused void main(int argc, char* argv[]) { FILE *fp; double i; double beta, c, promedio, rms, desviacion; char palabra[6]; //valores estadsticos: promedio=0; desviacion=0; rms=0; i=0; fp = fopen("18.txt", "r"); if (fp==NULL) cout<<"no existe el archivo \n"; else { do { c = fscanf(fp, "%s", palabra); for(int j=0; j<6; j++) if (palabra[j]== ',') { palabra[j]='.'; break; } beta = atof(palabra); cout<<beta; cout<<"\n"; i++; promedio = promedio + beta; rms = rms + pow(beta,2); } while (c != EOF); promedio = promedio/i; rms=pow(rms,0.5)/pow(i,0.5); i=0; rewind(fp); do { c = fscanf(fp, "%s", palabra); for(int j=0; j<6; j++) if (palabra[j]== ',') { palabra[j]='.'; break; } beta = atof(palabra); i++; desviacion= desviacion + pow((beta-promedio),2); } while (c != EOF); desviacion=pow(desviacion,0.5)/pow(i,0.5); cout<<"Promedio "; cout<<promedio; cout<<"\n"; cout<<"la desviacion estandar es: "; cout<<desviacion; cout<<"\n"; cout<<"El valor RMS: "; cout<<rms; cout<<"\n"; fclose(fp); } system("PAUSE"); } Ambos cdigos han sido probados con el compilador gratuito de Borland. Cmo usar el compilador, lo explico aqu. En este link hay informacin sobre "fscanf" y "rewind". Y aqu hay un tutorial sobre lectura y escritura de archivos con C++.
Inteligencia artificial: Lo que usted necesita saber sobre el aprendizaje automático, robótica, aprendizaje profundo, Internet de las cosas, redes neuronales, y nuestro futuro
Excel para principiantes: Aprenda a utilizar Excel 2016, incluyendo una introducción a fórmulas, funciones, gráficos, cuadros, macros, modelado, informes, estadísticas, Excel Power Query y más