diff --git a/ex1B_data-IO_and_vectors/Makefile b/ex1B_data-IO_and_vectors/Makefile new file mode 100644 index 0000000..b854f57 --- /dev/null +++ b/ex1B_data-IO_and_vectors/Makefile @@ -0,0 +1,30 @@ +# +# use GNU-Compiler tools +COMPILER=GCC_ +# alternatively from the shell +# export COMPILER=GCC_ +# or, alternatively from the shell +# make COMPILER=GCC_ + +# use Intel compilers +#COMPILER=ICC_ + +# use PGI compilers +# COMPILER=PGI_ + + +SOURCES = main.cpp ../ex1A_mean_values/means.cpp +OBJECTS = $(SOURCES:.cpp=.o) + +PROGRAM = main.${COMPILER} + +# uncomment the next to lines for debugging and detailed performance analysis +CXXFLAGS += -g +LINKFLAGS += -g +# do not use -pg with PGI compilers + +ifndef COMPILER + COMPILER=GCC_ +endif + +include ../${COMPILER}default.mk diff --git a/ex1B_data-IO_and_vectors/data_1.txt b/ex1B_data-IO_and_vectors/data_1.txt new file mode 100644 index 0000000..0cc4bb8 --- /dev/null +++ b/ex1B_data-IO_and_vectors/data_1.txt @@ -0,0 +1,501 @@ +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 + diff --git a/ex1B_data-IO_and_vectors/main.cpp b/ex1B_data-IO_and_vectors/main.cpp new file mode 100644 index 0000000..0acb48f --- /dev/null +++ b/ex1B_data-IO_and_vectors/main.cpp @@ -0,0 +1,53 @@ +#include "../ex1A_mean_values/means.h" +#include +#include +#include +#include +#include +using namespace std; + + +int main(int argc, char **argv) +{ + // read vector from file + vector data_vector = {}; + + ifstream input_stream("data_1.txt"); + + int line; + while(input_stream >> line) + { + data_vector.push_back(line); + } + data_vector.shrink_to_fit(); + + + // calculate minimum and maximum + vector::iterator min_it = min_element(data_vector.begin(), data_vector.end()); + vector::iterator max_it = max_element(data_vector.begin(), data_vector.end()); + + // calculate arithmetic mean, geometric mean and harmonic mean + double am, gm, hm; + calculate_means(data_vector, am, gm, hm); + + + // calculate standard deviation + double sd = 0.; + int n = data_vector.size(); + for (int i = 0; i < n; ++i) + { + sd += pow(data_vector[i] - am, 2); + } + sd = sqrt(sd/n); + + + // print results + cout << "minimum: " << *min_it << endl; + cout << "maximum: " << *max_it << endl; + cout << "arithmetic mean: " << am << endl; + cout << "geometric mean: " << gm << endl; + cout << "harmonic mean: " << hm << endl; + cout << "standard deviation: " << sd << endl; + + return 0; +}