All pastes #793802 Raw Edit

cpp-average

public text v1 · immutable
·published 2007-11-22 17:04 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 ../Data/

int main(void)
{
	fstream inputFile;
	ofstream outputFile;
	string fileName;
	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];
	
//	float outputX, outputY;
//	float mittelwert[2000];
//	const float pi = 3.14159;
//	const float divisorRadToDeg = 2*pi/360;
	
	// 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 = "../Data/Front00000";	// i < 0 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 = "../Data/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 = "../Data/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 = "../Data/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;
					}
				}
			}
		}
	}
	
	// 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];
		}
		
		average = sumRanges / 2000;
		
		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
	fileOutName = "averageOfRanges.dat";
	outputFile.open(fileOutName.c_str(), ios::out);
	outputFile.write(outputString.c_str(), outputFileLenght);
	outputFileLenght = 0;
		
	// cleaning some variables
	castString.clear();
	outputString.clear();
	inputFile.close();
	outputFile.close();

	cout << "Fertig!";	
	return 0;
}