#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;}