Problems while writing decimal doubles onto a .csv file C++ -
i have program reads test .csv file row row , gives standard deviation & mean of every row. goes on write new .csv file including sd, average, , original values of every row.
#include <iostream> #include <string> #include <fstream> #include <sstream> #include <stdlib.h> #include <math.h> #define rows 100 #define columns 11 using namespace std; void read(int data[rows][columns]) { string str; ifstream ifile; string filename="testdatain.csv"; ifile.open(filename); if (ifile) { int = 0; while (getline (ifile,str)){ stringstream ss(str); string temp; for(int j=0;j<columns;j++){ getline(ss,temp,','); data[i][j]=atoi(temp.c_str()); } i++; } cout << "finished reading data." << endl; }else { cout << "error reading." <<endl; } ifile.close(); } double* avg(int data[rows][columns]){ int total; double average[rows]; for(int i=0;i<rows;i++){ total=0; for(int j=0;j<columns;j++){ total+=data[i][j]; } average[i]=(double)total/columns; cout<<"the average of row "<<i+1<<" "<<average[i]<<"."<<endl; } return average; } double* sd(int data[rows][columns]){ int total; double sdarray[rows]; double sdnum[columns]; double sdtotal; for(int i=0;i<rows;i++){ total=0; sdtotal=0; for(int j=0;j<columns;j++){ total+=data[i][j]; } for(int n=0;n<columns;n++){ sdnum[n]=pow((data[i][n]-(double)total/columns),2); } for(int m=0;m<columns;m++){ sdtotal+=sdnum[m]; } sdarray[i]=(double)sqrt(sdtotal/columns); cout<<"the standard deviation of row "<<i+1<<" "<<sdarray[i]<<"."<<endl; } return sdarray; } void write(int data[rows][columns],double* average, double* sdarray){ ofstream myfile; myfile.open("testdataout.csv"); if (myfile.is_open()) { for(int i=0;i<rows;i++){ for(int j=0;j<columns;j++){ myfile<<data[i][j]<<","; } myfile<<(double)average[i]<<","<<(double)sdarray[i]; myfile<<"\n"; } myfile.close(); cout<<"done writing file."; }else{ cout<<"error writing."; } } int main() { int data[rows][columns]={0}; read(data); write(data,avg(data),sd(data)); return 0; }
the sole issue program standard deviation , average of each row, when printed onto .csv file, random decimal gibberish, odd exception of few rows. i'm not sure why, can't figure 1 out.
Comments
Post a Comment