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