diff --git a/BSP_1_B/bsp_1_b.cbp b/BSP_1_B/bsp_1_b.cbp new file mode 100644 index 0000000..ae62cf6 --- /dev/null +++ b/BSP_1_B/bsp_1_b.cbp @@ -0,0 +1,42 @@ + + + + + + diff --git a/BSP_1_B/bsp_1_b.cpp b/BSP_1_B/bsp_1_b.cpp new file mode 100644 index 0000000..dd43282 --- /dev/null +++ b/BSP_1_B/bsp_1_b.cpp @@ -0,0 +1,102 @@ +#include "bsp_1_b.h" + +#include +#include +#include +#include +#include +#include +#include +using namespace std; + + +void meandevvec(vector x, float &a, float &g, float &h, float &d) +{ + a = 0; + for(size_t k=1; k<=x.size(); k=k+1) + { + a = a+x.at(k-1); + } + a = a/x.size(); + + g = 1; + for(size_t k=1; k<=x.size(); k=k+1) + { + g = g*pow(x.at(k-1),1.0/x.size()); + } + + h = 0; + for(size_t k=1; k<=x.size(); k=k+1) + { + h = h + 1.0/x.at(k-1); + } + h = x.size()/h; + + d = 0; + for(size_t k=1; k<=x.size(); k=k+1) + { + d = d + pow(x.at(k-1)-a,2); + } + d = d/x.size(); + d = sqrt(d); + + return; +} + + +// for reading a file and writing into a txt-file +// [Str10, p.364] +void fill_vector(istream& istr, vector& v) +{ + short int d=0; + while ( istr >> d) v.push_back(d); // Einlesen + if (!istr.eof()) + { // Fehlerbehandlung + cout << " Error handling \n"; + if ( istr.bad() ) throw runtime_error("Schwerer Fehler in istr"); + if ( istr.fail() ) // Versuch des Aufraeumens + { + cout << " Failed in reading all data.\n"; + istr.clear(); + } + } + v.shrink_to_fit(); // C++11 + return; +} + + +void read_vector_from_file(const string& file_name, vector& v) +{ + ifstream fin(file_name); // Oeffne das File im ASCII-Modus + if( fin.is_open() ) // File gefunden: + { + v.clear(); // Vektor leeren + fill_vector(fin, v); + } + else // File nicht gefunden: + { + cout << "\nFile " << file_name << " has not been found.\n\n" ; + assert( fin.is_open() && "File not found." ); // exeption handling for the poor programmer + } + + return; +} + +void write_vector_to_file(const string& file_name, const vector& v) +{ + ofstream fout(file_name); // Oeffne das File im ASCII-Modus + if( fout.is_open() ) + { + for (unsigned int k=0; k +#include + + +/** \brief Funktion zur Berechnung des arithmetischen, geometrischen und harmonischen Mittels und der Standardabweichung aus den Eintraegen eines gegebenen Vektors + * + * \param[in,out] x Vektor mit Eintraegen + * \param[in,out] a arithmetisches Mittel + * \param[in,out] g geometrisches Mittel + * \param[in,out] h harmonisches Mittel + * \param[in,out] d Standardabweichung (deviation) + * \return + * + */ +void meandevvec(std::vector x, float &a, float &g, float &h, float &d); + +void fill_vector(std::istream& istr, std::vector& v); + +void read_vector_from_file(const std::string& file_name, std::vector& v); + +void write_vector_to_file(const std::string& file_name, const std::vector& v); + +#endif // BSP_1_B_H_INCLUDED diff --git a/BSP_1_B/data_1.txt b/BSP_1_B/data_1.txt new file mode 100644 index 0000000..4599071 --- /dev/null +++ b/BSP_1_B/data_1.txt @@ -0,0 +1,500 @@ +141 +261 +87 +430 +258 +298 +425 +120 +496 +707 +244 +786 +75 +394 +4 +221 +2 +190 +143 +269 +175 +139 +599 +902 +940 +222 +483 +377 +524 +265 +69 +437 +174 +27 +955 +431 +962 +763 +8 +681 +706 +646 +553 +219 +773 +229 +371 +891 +857 +403 +319 +609 +911 +910 +592 +333 +854 +443 +905 +34 +533 +717 +180 +337 +188 +322 +404 +549 +49 +553 +275 +242 +244 +155 +957 +936 +819 +729 +176 +361 +189 +2 +317 +700 +626 +544 +440 +288 +502 +762 +763 +577 +748 +646 +124 +505 +348 +93 +148 +199 +673 +432 +695 +257 +10 +533 +280 +947 +907 +393 +25 +672 +838 +972 +57 +451 +583 +687 +720 +651 +727 +374 +582 +117 +58 +980 +285 +595 +963 +186 +194 +342 +933 +391 +274 +152 +398 +375 +132 +436 +92 +615 +11 +574 +790 +236 +449 +570 +62 +497 +643 +222 +838 +972 +847 +506 +279 +747 +237 +958 +621 +601 +173 +91 +256 +859 +912 +700 +726 +230 +577 +811 +404 +989 +90 +321 +512 +61 +726 +557 +530 +830 +859 +790 +318 +453 +753 +110 +110 +270 +525 +973 +711 +312 +292 +851 +912 +640 +256 +89 +839 +585 +949 +62 +585 +286 +828 +191 +443 +394 +827 +677 +208 +319 +134 +672 +571 +170 +148 +477 +909 +553 +33 +54 +806 +452 +383 +790 +365 +533 +712 +872 +329 +651 +975 +76 +588 +414 +310 +264 +759 +996 +187 +782 +196 +993 +803 +425 +729 +499 +809 +357 +74 +591 +911 +194 +433 +750 +40 +947 +764 +559 +184 +498 +518 +995 +855 +963 +679 +404 +935 +480 +232 +397 +706 +559 +757 +996 +963 +536 +964 +116 +52 +305 +581 +531 +902 +541 +432 +543 +713 +17 +801 +143 +479 +257 +370 +662 +170 +279 +199 +196 +327 +881 +472 +404 +180 +969 +408 +845 +616 +377 +878 +785 +465 +814 +899 +430 +335 +597 +902 +703 +378 +735 +955 +543 +541 +312 +72 +182 +93 +464 +10 +916 +643 +2 +31 +209 +455 +128 +9 +728 +355 +781 +437 +437 +50 +50 +92 +595 +242 +842 +858 +964 +489 +221 +227 +537 +763 +348 +462 +640 +918 +162 +716 +578 +434 +885 +394 +179 +634 +625 +328 +803 +1000 +981 +128 +233 +24 +608 +111 +408 +885 +549 +370 +209 +441 +957 +125 +471 +857 +44 +692 +979 +284 +134 +686 +910 +611 +900 +194 +755 +347 +419 +156 +820 +625 +739 +806 +68 +951 +498 +756 +743 +832 +157 +458 +619 +933 +836 +896 +583 +583 +855 +35 +886 +408 +37 +747 +155 +144 +606 +255 +325 +402 +407 +387 +610 +167 +189 +95 +324 +770 +235 +741 +693 +825 +828 +294 +310 +524 +326 +832 +811 +557 +263 +681 +234 +457 +385 +539 +992 +756 +981 +235 +529 +52 +757 +602 +858 +989 +930 +410 +1 +541 +208 +220 +326 +96 +748 +749 +544 +339 +833 +553 +958 +893 +357 +547 +347 +623 +797 +746 +126 +823 +26 +415 +732 +782 +368 \ No newline at end of file diff --git a/BSP_1_B/main.cpp b/BSP_1_B/main.cpp new file mode 100644 index 0000000..55298e8 --- /dev/null +++ b/BSP_1_B/main.cpp @@ -0,0 +1,32 @@ +#include "bsp_1_b.h" +#include +#include +using namespace std; +// BSP 1_B + +int main() +{ + const string name1("data_1.txt"); // name of input file + const string name2("out.txt"); // name of output file + vector v; + + read_vector_from_file(name1, v); + + float a, g, h, d, minv, maxv; + meandevvec(v,a,g,h,d); + minv = *min_element(v.begin(),v.end()); + maxv = *max_element(v.begin(),v.end()); + + cout << "Auswertung" << endl; + cout << "arithmetisches Mittel: " << a << endl; + cout << "geometrisches Mittel: " << g << endl; + cout << "harmonisches Mittel: " << h << endl; + cout << "deviation/Standardabweichung: " << d << endl; + cout << "Minimum: " << minv << endl; + cout << "Maximum: " << maxv << endl; + + vector ve{a,g,h,d,minv,maxv}; + write_vector_to_file(name2, ve); + + return 0; +}