All pastes #794249 Raw Edit

average - seb

public cpp v1 · immutable
#794249 ·published 2007-11-23 00:15 UTC
rendered paste body
#include <string>#include <vector>#include <fstream>#include <iostream>#include <sstream>#include <math.h>#include <stdio.h>using namespace std;// files has to be in folder specified in (string) fileLocationint main(void){	fstream inputFile;	ofstream outputFile;	string fileName;	string fileLocation = "../Data/";	string fileOutName;	string fileOutNameHelp = "";	string castString;				// help-string for casting int to string...	string outputString;	vector< vector <int> > inputRanges(2000, vector<int> (181, 0));	int sumRanges = 0;	float average;	int outputFileLenght = 0;	int inputRange;	float initFloat;	char* charArray = new char[80];	int numberOfGoodFiles = 0;	int numberOfBadFiles = 0;		float sumRangesFloat = 0.0;	float numberOfGoodFilesFloat = 0.0;		// iterate over all 2000 input-files	for (int i = 0; i <= 1999; i++)	{		// creating input-fileName depends on the lenght of i		if (i < 10)		{			fileName = fileLocation;			fileName.append("Front00000");		// i >= 0 && i < 10 means there are 5 Zeros before adding i			stringstream castStringStream;			castStringStream<<i;			castStringStream>>castString;			fileName.append(castString);			fileName.append(".dat");		}				if (i >= 10 && i < 100)		{			fileName = fileLocation;			fileName.append("Front0000");		// i >= 10 && i < 100 means there are 4 Zeros before adding i			stringstream castStringStream;			castStringStream<<i;			castStringStream>>castString;			fileName.append(castString);			fileName.append(".dat");		}				if (i >= 100 && i < 1000)		{			fileName = fileLocation;			fileName.append("Front000");		// i >= 100 && i < 1000 means there are 3 Zeros before adding i			stringstream castStringStream;			castStringStream<<i;			castStringStream>>castString;			fileName.append(castString);			fileName.append(".dat");		} 				if (i >= 1000)		{			fileName = fileLocation;			fileName.append("Front00");		// i >= 1000 means there are 2 Zeros before adding i			stringstream castStringStream;			castStringStream<<i;			castStringStream>>castString;			fileName.append(castString);			fileName.append(".dat");		}		// open Input-File		inputFile.open(fileName.c_str(), ios::in);				// if read in of input-file successfull		if (inputFile.good())		{			// delete the two comment-lines at the beginning of input-file			getline(inputFile, castString);			getline(inputFile, castString);						for (int j = 0; j <= 180; j++)			{				getline(inputFile, castString);		// get next line of the input-file				{					if(castString.find("#") == string::npos)					{							// cast string to int						std::istringstream helpString("0");						helpString.str(castString);						helpString>>inputRange;												inputRanges[i][j] = inputRange;					}				}			}			numberOfGoodFiles++;		}				else		{			numberOfBadFiles++;		}				inputFile.close();	}		// create output-filename	fileOutName = fileLocation;	fileOutName.append("averageOfRanges.dat");		// create output-file	string castHelpString;	outputString = "# 181 points";	outputFileLenght += 12;	outputString.append("\n");	outputFileLenght++;	outputString.append("# average of 2000 range-measurements");	outputFileLenght += 36;		for (int i = 0; i <= 180; i++)	{		for (int j = 0; j <= 1999; j++)		{			sumRanges += inputRanges[j][i];		}				if (numberOfGoodFiles != 0)		{			sumRangesFloat = sumRanges;			numberOfGoodFilesFloat = numberOfGoodFiles;			average = sumRangesFloat / numberOfGoodFilesFloat;		}		else			average = 0.0;		sumRanges = 0;				outputString.append("\n");		// next 3 lines: casting (float) average to (Array of chars) charArray to get it in the outputString		// inputRange is used as a help variable to count the file-lenght correctly		initFloat = 0.0;		sprintf(charArray, "%f", initFloat);		inputRange = sprintf(charArray, "%f", average);		outputString.append(charArray);		outputFileLenght++;		outputFileLenght += inputRange;	}		// open and write output-file	outputFile.open(fileOutName.c_str(), ios::out);	outputFile.write(outputString.c_str(), outputFileLenght);	outputFileLenght = 0;		// cleaning output file	outputFile.close();	cout << "\nsuccessfull reading of " << numberOfGoodFiles << " input Files.\n";	if(numberOfBadFiles >= 1)		cout << "could not read " << numberOfBadFiles << " input Files.\n";	else		cout << "Read all input Files!\n";	cout << "1 File created: " << fileOutName << "\n\n";	cout << "Done!";		return 0;}