#include #include #include #include #include #include #include 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 > inputRanges(2000, vector (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<>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<>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<>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<>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; }