From edb6ea0c0290a82175754156888ed531c68b76fe Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 14:22:40 +0100 Subject: [PATCH 01/31] ; zu : in menue --- src/WortSpiel.h | 2 +- src/menue.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WortSpiel.h b/src/WortSpiel.h index 1828867..90a17ac 100644 --- a/src/WortSpiel.h +++ b/src/WortSpiel.h @@ -4,6 +4,6 @@ void loescheBuchstaben(char* wort, char buchstabe); int zaehleBuchstaben(const char* wort, char buchstabe); void umdrehenWort(char* wort); -void testSucheBuchstabe_existiert(void); +int sucheBuchstabe(const char* wort, char buchstabe); #endif // WORTSPIEL_H diff --git a/src/menue.c b/src/menue.c index 913e885..0b520fa 100644 --- a/src/menue.c +++ b/src/menue.c @@ -54,7 +54,7 @@ int main() { case 6: run_bmi(); - case 7; + case 7: run_wortspiel(); break; From 1dd14852027b500c55c2955110c2615eb13d9a40 Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 14:35:29 +0100 Subject: [PATCH 02/31] Testdateien --- build/test/cache/defines_dependency.yml | 2 + build/test/cache/test_temperatur.c | 163 ++++++++++++++++++ build/test/dependencies/temperatur.d | 1 + build/test/dependencies/test_temperatur.d | 4 + .../dependencies/test_temperatur_runner.d | 4 + build/test/out/c/MatheSpiele.o | Bin 7492 -> 7492 bytes build/test/out/c/temperatur.o | Bin 0 -> 6698 bytes build/test/out/c/test_WortSpiel.o | Bin 9015 -> 8899 bytes build/test/out/c/test_temperatur.o | Bin 0 -> 7404 bytes build/test/out/c/test_temperatur_runner.o | Bin 0 -> 9332 bytes build/test/out/test_MatheSpiele.out | Bin 117640 -> 117640 bytes build/test/out/test_WortSpiel.out | Bin 122431 -> 122431 bytes build/test/out/test_temperatur.out | Bin 0 -> 120588 bytes build/test/preprocess/files/test_temperatur.c | 163 ++++++++++++++++++ .../preprocess/includes/test_temperatur.c | 3 + build/test/results/test_MatheSpiele.pass | 2 +- .../test/results/test_SchereSteinPapier.pass | 2 +- build/test/results/test_WortSpiel.pass | 2 +- build/test/results/test_ageinseconds.pass | 2 +- build/test/results/test_bmi.pass | 2 +- build/test/results/test_minirechner.pass | 2 +- build/test/results/test_temperatur.pass | 46 +++++ build/test/results/test_zahlenraten.pass | 2 +- build/test/runners/test_temperatur_runner.c | 95 ++++++++++ 24 files changed, 488 insertions(+), 7 deletions(-) create mode 100644 build/test/cache/test_temperatur.c create mode 100644 build/test/dependencies/temperatur.d create mode 100644 build/test/dependencies/test_temperatur.d create mode 100644 build/test/dependencies/test_temperatur_runner.d create mode 100644 build/test/out/c/temperatur.o create mode 100644 build/test/out/c/test_temperatur.o create mode 100644 build/test/out/c/test_temperatur_runner.o create mode 100644 build/test/out/test_temperatur.out create mode 100644 build/test/preprocess/files/test_temperatur.c create mode 100644 build/test/preprocess/includes/test_temperatur.c create mode 100644 build/test/results/test_temperatur.pass create mode 100644 build/test/runners/test_temperatur_runner.c diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml index b9300c1..e15f9ea 100644 --- a/build/test/cache/defines_dependency.yml +++ b/build/test/cache/defines_dependency.yml @@ -13,3 +13,5 @@ src/bmi.c: - TEST src/MatheSpiele.c: - TEST +src/temperatur.c: +- TEST diff --git a/build/test/cache/test_temperatur.c b/build/test/cache/test_temperatur.c new file mode 100644 index 0000000..e4db9e2 --- /dev/null +++ b/build/test/cache/test_temperatur.c @@ -0,0 +1,163 @@ +#include "src/temperatur.h" +#include "C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +void setUp(void) + +{ + +} + + + +void tearDown(void) + +{ + +} + + + +void test_temperaturRechner_CzuF(void) + +{ + +float result = CzuF(25); + +float expected = 77; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(19), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_temperaturRechner_CzuK(void) + +{ + +float result = CzuK(25); + +float expected = 298.15; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_INT); + +} + + + + + +void test_temperaturRechner_FzuC(void) + +{ + +float result = FzuC(77); + +float expected = 25; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(34), UNITY_DISPLAY_STYLE_INT); + +} + +void test_temperaturRechner_FzuK(void) + +{ + +float result = FzuK(77); + +float expected = 298.15; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_temperaturRechner_KzuC(void) + +{ + +float result = KzuC(298.15); + +float expected = 25; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(47), UNITY_DISPLAY_STYLE_INT); + +} + +void test_temperaturRechner_KzuF(void) + +{ + +float result = KzuF(298.15); + +float expected = 77; + +UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( + +((void *)0) + +), (UNITY_UINT)(53), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_returnUnit_first(void) + +{ + +const char *result = getFirstUnit(1); + +char expected[] = "Celsius"; + +UnityAssertEqualString((const char*)((expected)), (const char*)((result)), ( + +((void *)0) + +), (UNITY_UINT)(60)); + +} + +void test_returnUnit_second(void) + +{ + +const char *result = getSecondUnit(2); + +char expected[] = " Kelvin"; + +UnityAssertEqualString((const char*)((expected)), (const char*)((result)), ( + +((void *)0) + +), (UNITY_UINT)(66)); + +} diff --git a/build/test/dependencies/temperatur.d b/build/test/dependencies/temperatur.d new file mode 100644 index 0000000..6296cfe --- /dev/null +++ b/build/test/dependencies/temperatur.d @@ -0,0 +1 @@ +build/test/out/c/temperatur.o: src/temperatur.c src/temperatur.h diff --git a/build/test/dependencies/test_temperatur.d b/build/test/dependencies/test_temperatur.d new file mode 100644 index 0000000..ec6ff76 --- /dev/null +++ b/build/test/dependencies/test_temperatur.d @@ -0,0 +1,4 @@ +build/test/out/c/test_temperatur.o: test/test_temperatur.c \ + C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/temperatur.h diff --git a/build/test/dependencies/test_temperatur_runner.d b/build/test/dependencies/test_temperatur_runner.d new file mode 100644 index 0000000..ada394d --- /dev/null +++ b/build/test/dependencies/test_temperatur_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_temperatur_runner.o: \ + build/test/runners/test_temperatur_runner.c \ + C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/out/c/MatheSpiele.o b/build/test/out/c/MatheSpiele.o index fe5a11b340c7acc156d4c9cc2be02c2340e81b0a..40376e63a0481131ccf69a9148164bce649021af 100644 GIT binary patch delta 22 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 P@WMaf|4U+@nazIyyJDVK literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_WortSpiel.o b/build/test/out/c/test_WortSpiel.o index a88a13f6e88935b3868430c3d43672292d9b458e..63da72a47f0c982bcb85daccb567cbe3f0442220 100644 GIT binary patch delta 1513 zcmZWpO>7%Q82x7dyxv{g>#T9)G}v()cSV3S1vQW+4Ya5QLxDm?TR=$J#M{`gSyTTA zHG&#(Kp+8PH4;)KlnQZx8%VB*KoBHQka{WNP;ML$P`FY-5jVb>aW@2f`26O*_x;T5 z&aNN%`f#%LY8u$@fhf64`aB;^u1UWQN0*P>eq9H6F#+&Kf$LDhzk9(xv}f3%hJ z4LhkoFap^0^~BMhOthuC*Mj7eNXdF4XokyUJaof$V>$F|V~wzbin^t6LQ1sj%~oe@ zyG>EKs0g>fiT_wc4?#W}*H>!I?qcABtSG00riU$Ug|{5=rpE>(+F&R?v`qB4wjk*H z`U1)JmE>hYhNx%c=&wemXSKUab^j2CcE?-vA@Kp$T9W}Jf=4Q`twXB2Qfv8jKRk)M z0&ShCEP%=6^b=vDbM|1n?YBCI&vd=uk?zW(--3P8AI$g)E5idX7_eoRC0nbWU+)E5 zy+cr0^AQCdTh0Gh{&=U=2$$iQ^l)tC?zlXpf~Md8_pU-vo@Zu0Ip31f@!Or_-6i_7 zIdR7(YWfSfw>#m4!4^{VoND1HCzEU-DGESiSyxa>oJIij3#&-ycWSh0Iqq#LzBwAQ z#|#FgsK%2Y+nzi}FIuziTg=NUR1F5DXn}hl-0oeY<<#8hFK8Hyb)Uf&QWT0o{#5DN z)QojEHsy^E7@Kq>HB)$r5v=-M27^-ctnj}{?ex5L^@e@QxJsW&7p3bOT}?k^J%jg) zmzhBRyYz|aFB!qgj2jF}(UR_kt6n|W3zhAIev2|c5gin|F_x#dmQ8vt zo3c*dwO4j!z%1*GwkF9v1zF!;mS@eGvg#J9&Rl_@kfM9C`H}PuS(;U6%9>jcVrCNP zdvxe3dO!zzIY&=iF6=U=?B9YOGxtC+K5vvZKmhep=s_@FEVy-E; z9=7`^CclY|yYUH$QK9Mie4<{`{zoZ%KrcltQLR( delta 1590 zcmZ`(TW=dh82x7U;`OdC>+I%YTpYWxWvPfjLfa^Dn$|&WVAOxrqRRPIDRi!={@rFd(H!e@W3xA-ZkMPZovn@#V!}!dZ^L^*c z?Ckz<^y;y2^;``2@46SBq1vQ3yF>R+c{h$d90~)x9Rm0z>94~K{v82x^^v)Qf*6ez z0`M*?k%Ibb0^neZxn!>z9s^iQu}?@^$)Rq6{XuN@6S2rkhzjI27N!MdXajsPI6#jp zQ3=fyAR6zPVDE*V>{Fs{)}1zlPa#FMP_yN3W&EM%b{bo5t(s}LU0hM_uJ{BEb?U8l zH}hYatoVzvPzxOTpG0^F@|mE&Ty6C>nl+%Z{BpD9prtAMmLopu@PI@eh4MpFq6NJL z!9Lg4$=E;+-ypf)n&mAoSHie~2|(wNz)bes6PmovZz%r`S`GsShLR{X?X* z*KrGvK}F{i>bk@lNGC%O{3vnzj8zr)J0G!2DVBlbkZ4UO9DLw*>mJamf_yiHE$ zkb0Y%<8C|k<{adAGmFN*vr_zUY#+WEqo5CJLv}u1w);r=(I$0niw6uc`z$lT)-x8f zP0PN?1>7Ss^4J2C70o@wWG|Sxcn%C>#gI@WDNwf9`{wD&6sjY$=0_TbtBmnDUN`e#@pJxwdbE7@!(T_HKIG(OO$uSx#`;7AXp diff --git a/build/test/out/c/test_temperatur.o b/build/test/out/c/test_temperatur.o new file mode 100644 index 0000000000000000000000000000000000000000..5a1b4e8a698f77a9f279f75b3a21955b6279cbdc GIT binary patch literal 7404 zcmcgxZEPGz8Gh$>*LTUq_9c$eI0?-$J(8&mU(wbxjhJ7*aWB-`aQ0 z`E2&~T*pGF$far;A;nQCRTZfPRZ97RK!_g+ACeIj0Yoc=fczCL+h&Z0tGtJVTYKr9iNb?eQe%G;>-n^n@T4o>jq+>U5 z<-r|{xDD(EL1rQD2Z>25Vu<3d$v3+%5^5pB51 zfSR2tj~5J3Rdup3lff24DsR!|Hw7}(K~`sXig#LN0cl1MK27wBS`Lg14V)Ss8yOfn z)e(m`^+_~fbAozHf1yH=8eH2!56%BYOe&i2&W<#(CMNZM^+#C8_f5u5E0~KWdInAo zA5V^sojf&qymyQYZS|6L!e%cKZgE?@WbKE%P2%9TuUU@|snt`|2`!#7?8_ccA$G>w zD)wgonl;nCXF4J2CBg=~y=2&4kCzOaORp(QrIROMX-(0{(BRNBr-$GQG_3XfPJ!S|6fs)p%-TafY=mlcoK02O6zOW59hK~=?hlox#|;w>`<6&&k-ElIN@NHUeEhzpoI(yZSw{lj(m7}(kEGy9CPXi; zA6D6(q$z|>a-kF|riZW+H{InjeMFiTrYvK6)-W^J*AvD>4xQ&1pZPZO&lJW*hJAh0 zG1$(>>su=DzQ*lR&hFcq22=1DIe!WjgLfT+VVA+k0}b-$-AYc%Z7_*vW&xB+h|X88~lr7aJ$Q3^Lh;SK_hLrZi8`LE_}$FT?V&E zgBvX)WA@BEU&NQmuI=RP>c)~`jm*luT>^F$m<9uQ0QT(%C9o@qjl@A|=xSj{f=>ho znta=F8)}7M@MuuM?O2PjW6esSt3@I4zUG0ZCz~18u5);*)>5~xc{AJMPi+4(7y9?| z76RL_g{~H#FpRFmspC7M@jAlP#t4We+@=63sx5@-r4yLav;`yt%rH#K74sQ>jU zI~pX|6-0AE>Qn=7kQYg#k+Fd$;zKRipC}F$4q_DV6F+L$(J6=D}lw$F$I* z<`0Z&>{q^6)AO#3|$cGomY<$?vq{H!ry8Cf82 z7UeFj@@hvWAk}qt1l@g!r)T@k^6acpoHb{jGtOK3Kyh-$oX%MJ^JlG`Q7BKGzmO^9 zjbaI_MR_%zMm?)VYpPNERQE)A{6c#yJl_$I7V_g!6N}L)W4aV=kHjJ|0VfP2Tfp5X z9E-HKMcSfsMlm~MM$5ECMN8%cP+UEr)eNsOhNmdQEM^L&NDgZ`-VzJ_sZ^J~|LJ_O z|8)2?o-*;UIo1&mmnTdsJUdg$&xcD!?w~$i&KE3w{DR(XqKCEglbK=`=k1_w#t+!1 zSA5hM=&SQ13=G)3zR4eW%XV zAtpHk(W9JOklZ4o$2fOIayJnPy$>XJ8xeUQ75*i;1Go%?-cdyK38O+kqA*9Fm)s?( zM+-;jeFss5>s^=JKct=y9gWZnBBIZ16?RDO8APJp93mQ@3a=q*5jr=l)>K?0l;qAxbXH2wNiHirk~{~DN!#X>NA58 zOzHkF2+KIBg1d#Ng>$zh+Nn9xLx_YlAyGj}7bUkO(NCrH_mcawL=AXm5$!&LNLX%{ zXiQ4yB=@33-13_X;vyd9CSyjP-QQaUOTRt4PgaW+ z;D{#8%(PK^+I2ql`LwxxfxHIb)8!%K6Xz`(^lFb!rbj(~?Z9PKHz(qDqn5SrQ~qC* bM|U{YcU$)55Z;JY?yqWf?E5eGt=azofWZic literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_temperatur_runner.o b/build/test/out/c/test_temperatur_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..e5862f0eb54b1d4017128283e2c9ca2c3be0497c GIT binary patch literal 9332 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 Y%S8BHS@&Ok^%QZhU{fs1%DR5`AHewlLjV8( literal 0 HcmV?d00001 diff --git a/build/test/out/test_MatheSpiele.out b/build/test/out/test_MatheSpiele.out index 3fd5ca783548a89a4ad59f5c65b1feeda0ed3d58..c7bcde6a1bf726d986bf597052dc7a967318aa72 100644 GIT binary patch delta 41 wcmeB}&fYPdeL@HGtE)#QcKb3l{@r-1A(^Q(b#hFK4UlS{m9l+S3gf#p0F`(X6aWAK delta 41 wcmeB}&fYPdeL@Gb#qYxtyM39mFK)cmkj!*=&*YdC8z9v@D`oqv6vlUH0FQAKj{pDw diff --git a/build/test/out/test_WortSpiel.out b/build/test/out/test_WortSpiel.out index 46f9f99af23b3a336ebc838f0d5ce04b63359e1c..b7b416aa1cda66af8f43137ecaf3c08605c5cb6d 100644 GIT binary patch delta 2580 zcmZ8j4NOy46u#%(_u5Bap``@{CsG7K9bls}L8_<>BaS&G^LKL*q)S`PhXh`py0q7YF30Ya?o@h4?*6b#Ef6>CV$VnPUI zJwGOIrmEtt^VK-Svck8PP{~;Dsavzw(cr6JQR8!0IfPYK!aoB<+4w(-QTPTMRk^CJ zq0;LnRF#5Sy~TI2S(eG73{#L&vUd?6Zl$FY6K zl1uJ$;}#ww77^^_uz?fJ>nq$I??4$JQFxtUG7<*r#IfBSLks3g&-R;zuRj-w_13xT zqviUDyo!^BBv#fmY0NhW)mKpG1hT-yf#k1M%vft-46i8py~My(Ut+CI)3UM^9Iyf5 zTob>P{8fTGZ!p)z#xxgZ?c`jfl2Q}Dl>EyCclKcJezvFCHT-8JgjE!qIFS54z3u~r z{oY)VkdH-0;VEH}bwpo%$5b_Hg4cqGfZvlNXrQ5X6-FS3CVcI!%|aJ zyx>@$wvw-hJ1~63 znd2hRqh!A&3h6RdL?Fswu8tH)WJ@}#t-Qo^WlTSl^$6GR9V>Io(A6R5>6r;|W~V$! z7o&=;bwwcG%bT4kWqdE^<;jt~WFqXAr?rW*>I4VE9yvc=^fKR^jj&g?T@xa`X5O5O zvaJn&B)`YJmEG%1x4wYrSJ}Q&G-r{ynvLq(m&%1T%FbwE@5$pf2@VQlKXmDB*&h+_ zfJ_#9b_u#XXLZ+kI#Ca|qU)WrXGG4=sB@1st!EBN;2S!`i%g3;|cZoRS+ocK7E!Yu(Dsp;zmkLg;RMdaC zac|xTb0t?lC-m{fLjWbAIhSVQ4}0hGGF?ip%8ShuRmp!;%347V1?;6v%Cm|>7 z0sR%Sh9t(E5L_>E?Ket9ykX2he9etqWhg$BG<;z@L!CFa%5Z?qy;WlQ2*b8NT`hu% za)2GWwF*6nw->-i%zHZxuXo;FTXX>ZnL5dX&q_r63!pZJ5YX_M(p*KR;k`)42XVQK z|058=t4$W2w>dQZ$2KclCC9hiH%c~zl-lvtoIx~gszyf|(9s1>9sS;?h#S2Ca@c96r6m8_fN*q41n@aY=7Kjf+P$@pOs52IAOMpK_i zjR%|2IuswpGECJpt<*kQD^vOd%@(3&0+57Jwn(azQyH`qL5v&PtG5kGP=P0CxhGVn{b< z;JaUsI86O%34!urD1*e-_lw~n;OAH1-4YlHU4bu3pcZxoib^59b@oiCl3+uiX%?hw ze2jYh^LoWUXTcme(2C5IB>ZFxyi|b+Y6GuTz~2xIY^;PUsBQjoNQcd>>z2c}>;D6Q CcUBw# delta 2559 zcmZ`*du)?c6u;+tv|YclJ~uYqV0B~i-0E1vo|cD$6;MH7sDN3wbt|mfgl$oYiXtQ; zjM!YmhiJBhXdFh@Z51Yh45I=YunmZUh|1H%s0k(nhzRlA@3y1<;ga2czjJ=)oZmg? zevkfx`u>CZx8D@64}2Zk`nd3IS?+8XRz^%(@AC(O{@Jb7f#w!pmA{dQvdjt?C8TI%mI`xi z7#Lf)NGKgOYrfHJBr(|JZ>|o+XOb!zSrbK9hG*m-Mre2el};xWMh1jXz5F01U!K4! z3ZbBh?T}q7gy>k^5qdB@vp7%2_UjNXGO|k{RHKD0{@<|K$kNwhfSy){lhn!sV5AGW z?Rgz65t@nD$S#FYrIu*^|0W94&D|wwH<23^KF7#_5NhQ5bUOM|ccH_J;xvJ!(S0=$ zi7xION6UNcS=*VD6`f&ZmqKU_k8MYwiIkDNwljlv^w>?eVwqgVTl7%RI6<$cKldy! zHR_`kCZpZmTVWbu29`C;I6~Flad46D>-8j0HjGM5H}D=aE!I6bv@l|KY(TdrbgYq8 z!U3Rj)}Bdp3p$6Hlcls8S#}{*M=Z2Ek_HxfGV%~CiCm9twSbSl{7oVFBKy865ON+v z_Ajz)vyIUSv?070g9dmU;U(GiC!RJTWP#Uc+R=1N78^2^wp!= z$Fpp2%kKDWAvyOC2V)vAe9AE%{*GM0!!t1a>0_U1fdP5yTUsG5V|5Io3_4{X9kQr* zpw_}l%#tUKGHJi&`e~pcX9c4g2L1A?GIB!dPOne5o=|9JxMc48Z+%+WT^Kc8gHk~-8 z<=ij2c4$fXX1|C*mb3mO>)4i)t5&c+Y!S-`A7DCpZ{LbR91423iuutI>l&Kt@X<7l zw>Je?f7-+uyfh9A;dar@8#2*UOlJ*!s43YfPJSa!$wsl1L#9L?Uc7;6(2IHT2g4A9 zTtkAG7q7u6PKno`h|#fPXE2pXEao%9{ll7N+rmVF&5fQ+z5%gy?OMf>ZhYRF%dI3)%Na zJNYylL;2}vwIjYwm>%DPwiq-Z=d07JG)}$X89m&%w_psi+o1H!03>W#+vYw(YT6Ettq*N-sT+9_exg?4>I%JMsFJ%PpQT z`m;GHfX_)p>>a)f-{qj-Go`zR%*1<<N48vaj11h0k7oYxg`UFo;<-p~tl%Uwm1 ziPuh(Z#FDVL8d7OJgH)0krRrYgQU>u@Y+jK@gSLr;xu^egd}PNLy=P~RtlZEhf_;Z z0nO%^Styp{%of^nBl*eon89j=2?o0&j(>2x6>NITSVC+PJgO*)*IuMxkiyc~lZj~H zkQH-8)hJjCdAw8-?YNU1$-LEN_zX;0iOu+ezyEITQ?lS!*q06Wk|yY}ADOtP|Nfcq zp~b#-645L|g$fm5S6zjmQ%g$VDfMPP*g`Hzbyb1X*I5F!I=HQx=Rl@u34T@ZppV3m z)1f{!2NptBU&kD{1^A_hVHm-~72yBS4!PE{9Bo&6~$BrWIfy3%6Rd5yx)MeF>30-|JRl||>{{pTIL`MJs diff --git a/build/test/out/test_temperatur.out b/build/test/out/test_temperatur.out new file mode 100644 index 0000000000000000000000000000000000000000..7931f51310e40909c2c199a2f43c9cf926ff4618 GIT binary patch literal 120588 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
+)r z`o*lj6H`vA+MgDyRFQI6hb!8CAtH?xV#+RDSRoQLJdThWB8Bg+5H|unUm@nwpUv{m zv(Xq#(V%C%%JLZ|Ium+tB;C_YUi29DBJu}O!q4r;{@#h)a!c#M^4?vot>y2oz2%l@ z1Z8j4W#>2gU!%0!@gmw?_@|712z!whI_#vq6ZC^({$u-%&;Z_oaDI&q*6mA7n-m|^ zwppTU$J4n>^>Nko;zy!eiVBl2fEXClg}*PvbeltT;SUw%qYHoXi0PU_<%K_-#B_T@ zbm31nF2>u>}!HIGVo7p*x-)hL_8YuMg^h=)#|e$VV6c2nEwcAN1=@ z<%Pd~k&iC?*^PX3&7se82AS+d_+%FrBWR zr|0mRC`=dqm|0$U;T4bWF_SL5-it>!XwrpOpz-KJdJeCW+gAVkC=SJt08)Hr(%Y@;RPK%xq{G- zXaC?eZQrX-d*`Dmvp(Tfez~0JXH2^AQo>AkudX-q4KG&AbkVF?UU<=CkM3KFZnXB{ zEp%*nxJbiJ+W7i(pgu$wUetl<+z?%Oy$GfYmls}&g6X0)zI?&jxktCzqzk{v&U9UhOtx24zwkTqOt(Em7k>Yq=?;YG!teDnU2TXi zyj}p)?GDj}S0D(}<+Iar#6$w?_Va*|S0Kdor=nHUOZ#J8(~F0zrpLb~!{{7!@8ACCt8oUca_yU`|du39Z+P}RrEHcvo2ovZ%rL)ZE9MvYE9YdvhqVmXjuRk z%gD7JKh%d8Mb=fUIF5f3ShM<&D%_#P2&(E6tIH}@{f1iV-=|tz?mmP?L(&=fduT_x zx2Gr7h2;|7n>w0J;OiaT>CR-f{pg`=TdJeC>F9}MM|-L(<4C2h#EK)?l~}6^--pl0 zgTUvYU4@r5Ia}^tDOt$hm3djL9Fql=B+a(2Vx?`#m2f5cDl}2;>pgN}P5FvG5W>Ew z;*k?8TT`8xm21k%%gWVmQ!3RAZ*N^uUbbdc*{YStQeDm6>6N{-g8s@(y2&Bwatf69 z1U?gik3E#NIkFJAaW<94IxiU@QdOY~rEVsq{t2p-_`hxH$)O?$WQ&+f7o9z+bQ0e% zhhp9)Ybm?E;~IUNYClfTma2q|{C5<8QzUH;qPGoN&Sab0yXkMb34!XVpMvw9bU^YM zsB9cTY*f-XU{U^Us&DGVa$gkYE9Kt*V~*q1ew^B58I8Y2erm#kW@tX)B5zlVI!g2H zyzR|*n3-zTSHrCP?p~RrgRs)?Agl~@5OOsux`Pnn;DnB;tAa9vofOBf1oc^<+SVf- zD`*uWY7qRB|2_@-I7=;)%lkUce$fBxuQ8sDzzb4+DQM2ylId1?Q~-qLwPOyDV{{q= zM~$Sqj`a|NR{(t)e3ct7zT<``5t*l~{HUjqMpgo>u|zK`_dXqkb02uHL< zaBWP_VJO7^{XBN@gubGY@E_xsMlE>g8COy5{Yx?FD!0F+-=fiJ{str?W0XU+8lacz zK%0-(O3)<6;I#uZ^!&Y)6n|kWAmw9R)d8AoW7P12p!tO^SxNsXAb1#DYNgOA>u}L0 zI_}74{XvIYd)R&t=V?7Xs!xL<*NXaMqTA#p$0C8uKFU5sNTL5U&m4Z7&ZJc zXa>fhnSrWb9)spq&iiX{Gv%VfT-M2JfJb>KpVGv7Rw_y$Tv< z44PkprVmc&YrY6aq-qM7c-nkp9Fx>pY1gWgVi~p%O0b z>a79fm$eRac`uPQf#w%XBd_ZL@-GJR+dvASEagdTWI?jG+Ei@gy)r6!44QuhP5&4)x5IP;W6U*MSg;7lzDLHDxpC4V%G?K+(aNlGg4*?l8kh4IdXh!@P zd=^Nvfsn_&U?4vQvJBDfUloTd(dUnS{_x^T0-aCZLl=u4A z^B#L|0W^h*f>#fp^8T{-UIU`Mw-0;xNKIg4@2x~R%6rWm&!ptN5RbWso`4dSpQ(^(;^A26Dnc=;^?I1EHq` zKWrfM$l#!XJPc&mKt2ZKih-O1a?L=7fW+aUetm|4%rua10ZACht3WCZwHnG<3rTvH{5V4P+~j5d*0Ma?LT zB_Pzz^UL`*kYWS53M645{{*DmK#Jh33Ai_9iF|#M8$k1trh$0aZUZs}!R6J z$ZjA}1cguY9w3_xgK%X=7ke>nh36hy#@~?rEEDF*rK#rfYIEbtU@|J4HKY48f1^Bn`31LT^4+zbRO>@$jId1o zee3utZW&cvpw5x_osM%RBArJ6Tu;k5jBBLqkp`m-DvDdQ!#E>jIkJTQ7#p{ql#S6y zpguJFVs6}eQVXJ5&sVV5YZBpzTE<5Zr}!V`OurS+U|2NNGX4|nrCP>6uP|J82 zf1yg019NL1#*Vj9zwQ~-LbZ%PM{zKFXrq=9!L3`ylcBTfkXptMpgyW)?6PDhDry;t z5&elpb`fN4)c2#OGl^d;lEBd(gN9qi1K_}Yzrf8FNh?3^g1vG)S|q(UM{VR+V?fi& zG>-iA43G~85n0Kvd5HWZ4rod?upi2=>;O6KAvkc_pz=j`F%2QTK;B~@r-7XJ5cX$P zXOevyGGiHC>TTEK&k2s@9I~^oZh#@6VDO?bh`F(^ZUl|;)eaDtvmzW9gPg-7%+)N5 z{P}TY3FXf#Q6hP*xsg8);vb!fMZRgC)JNpc1K5Y+K$G8}=|fb?pU*;iifVHsU!{*& zDPMirJgJY!S7`}H`~k20zDiGaDPQdeFDlXB*jGP*Gs;)_?vPJId!K?ptU2Q6IDZJF z4S!)oSp&!UGax+%@(Pg3cjfnR5Ie7f=7&r}fb-8lzO^yvnME+m-T0W4pXZkX`GA4k z1LRo)c>u^)4I~5P`v&r1AU`pXCxQIRL)hn)6r|^GLtr%0fz9@L(#zBU1)@aHD0(`K z6!aSeIAC8LhV7M2dteoFJAVaa5H6$aPP*|`P1n)(&!DM1#r+@GRWogW?v=y7s_H|wpf(vo1~&H9 zeqgdbq5EG%%D(FHia_C^js5Vao*&x2!+uC(2jz!EgU)hjBYRyN#a^7Fp7dp4d`bOqJ963(OSW#?Y5^B;P3K8^>_nv&_} ziPd=!JXM`@*h1%)@zi->9Cg0v)w#K&gKqNrRd!rVS`no5oWR?Cqz!YkZDHm@qGnqR zVPDB*mLX}zAs720jaZQyV0SyOupe&q{7_~piy_%`WE}eWhNmC5D|NiHyE$;5oMm_J zQ4u_vA6}pAw%thps&hF~OU9KX3M_)OB!mc%0VM_n9C0pP2Z9*GmU^+1@R{g6jvbm6$(O@beQLLCFzN%71vX8ywGx=G zACrd2$)Eej;m`kwOO-$ObzvcP1flQI>_5d|MjZaFG1%kzPyQIZJdQfk_X~9&yB(7S z#`86Acb)saI+Iq-P1&NlsuZwqi<~r#%f_VHQbkveUe1>HJBGexE+x6s@QT422x!;TBO7Jqrdfa|(@M6%s zb3(P^7|ePxn7{q%8HWz(IT#%~*|z46?xuhmSwH2lDk?k9*s%2N6`ME7UtIGXK;}9<}q_V2cx$Uk=9FN9pWqe7=Kh2FjVHhwfkXswNmol29Y-O5B z9;=tqKMpGwW69dFBBj#Pn0(OI#iRRp-a1o860(&m$6@7R(2rks+Y^W%S^4ld>P+{& zm1p*3QoYUHE7B>$J$Im=pz55+X$youI;c&Vfm1w6BJTI$sseg|`6G{m%=GE&(X&^dQF>pW z^K?kBX+LWLI-XD%kLM!-A^Lxidf8)R${9N<^>)w(F5=*pmw( z7}_{4p7(5O_AH2;<169C`*NV6`snA-e(Kphe~Ujj4jq2h(;#>(7SA@nV=EnBAqxJTsdd#yzwQk&cx_u*vsFpr_Psg8H&oCTX=@t zt20sB8`XJW9CfC7dfk^m=ddZLW?ASONHHY!oI7t2(RR=*uM2wb0U+NnkoN-l@V!Br z4+8mtft&+!=e{7#7lC}wK)wcKYJHIAhd>_k5L?gZVR*C8%5iZSbstO5<({6UI*cEV z3-Wo@U+pl?(*eiDGE57onE|3P@4gWo*=uAR_Ik~;S4;9}imo&_x?8awcZDzs4*yw( zU%MToyA{Jo%jj}}2EmwPqr1uUadM;~&>X@q)!yG&&xiMuEr@2de^T$gU3#YC=#B=h z#YR1&Sfo>PF#pgUmTQ10>*Tw`LU&L83(jLA0yHP^Yj1StI)OsqSfHW)m>FZ-Pk76- zh5dpO>u1o@kIiRd`bpRY0U^70d3OIJm<>XNHnKZ?O%3O~v>Q3txKZjJD6PjTUh!43)ljg=b;c?JVR4E$Lg1M1?`p2Q4 z`JR5-GhNB9plUEjt+3()I%npnv!Z~%GmY1~Pzco!k2i$2w_9U9=HtiXQezutU$utEb zK^{PoLH2M{Y@G4!u4u^a4+0HkerV7Kb(IOo_?qg7K%YD{}7G6QC=Myhg{Eia#3DAlFX!B`et#GODuyFs?Ld= z_wk8tBWNn`*RkWc-Cgpv%wZ29nq8pznSmSxav0qMQ~=sAGcC*f+n`A_aLH88e+JTE zAfEwJ$r>XP=V>5Y4di(sbq4ZHAcqa)uYfdrh?_l$y9Ibh&fxX8peY`u&iW$fv&L0Z z&<*^OhuEG_4ROse5qm;8*C)~sxoA}5Z#;fK%svL%@W%ZyYGqWUw1r8$G1{wMq;!BL zR3Ckps?M8_qMoh2k=Hr%*`_(Njh?qDKB#g7?&Is6FvOC2PZoJ{Ic4ocv}AohZmg4^ z;3|cz9Y)8)Kq`iyO9NSV42K%g+)F3K{b7qc%?KI1DlS;uAGWwBCdB=W#r?9yec0mu zaf|!133303#r=xK{gTD~37@-OJK}jS+t}mxHn|=cvX)m)OSY}I>nQS%&r4gdoTbR+ z^I?z5MWeH*=VQ5Ol#i_*gvUuM%eew_aDUT&XnS4IGqvnjMv|`kz zS@!~_pmbblZ`sM-a$VeKTig#@-0LjvS1j&z6XITKac{G@H(1=?u(&r&i2Dr|_a2M; zVT=1OEbfOV#64kg@3XkKS=@{LY@_YoHX-gyEbjdl_a2M;9TxYV32|R$aX({m@3XjX zx48FBi2HJj`+&v0-{Ma1-{ODji)zjHPl$WD#r>?s{fxz(9y8V4b*8PtRrxY4w=#a- z;8rG(TeK7dEX6y}%Jhw+mGSG$txTZKTJ{%4k)5sc4$4(A!1l`Df~*~6E9a+KU%|c+ zNkCKPX32G3dHyNf64d^qdwQ49OEHj&3-AB~S@&rSAvL1CC_YYaz zoyLjG7LHilH(1=4S=^ttxZ?wt4nl)^df`#_D07vsS==iv?&TKuXD#l<6XO1c#eJv6 zeS^jQd7r!PS&(5% zK%KShw2E9l*}3=i4$4(g$@a?MV_aLuR?bhe{-^94ky}ER@b3b9a$T3tXSrm~;cEx2 z7IwgDW$v@u_hsxY*Tuch;{KGy{j9~k%i>->A?^=Z+=ndggBJHkEbbd7#J%6*e!=2S z@2?v@kae`irbe{SPs2T+d_K>kNZ*1S?*S|8c&}tBz%#tP-SJ)r24ls$UuTZ@K%KSh zi$;;1)2x4(ePfh(_vE^+h^yn0y?7ts`Y=+_&r&e5ZnNce zD@V~hd!1hndtHE+_PV-v(ChH9;h0|M*O|R8P-pFR2S<^ez3v^9tKtmXE5AprJ^g%j*(cGJDk8Hm(mN6%8x}BkSh+UZ=gKfxYFrxG%A|_gLHyTilmg z+z(HP`!b7rpT)h+;$CiXZ<`SJDU}bH=9+m<; z!`s{4$}Ag4y!&#MZ4^s%>G7x%xnxHnkbcUs&FEuVjM6uYy} z`%N=e3nwA4V$5Sqethy>9vZnF(>fVsYPKabIR}f5qZH zFd^>rj)v4K%eA)L;-0X$zhH4cJ0b3uE$+)K?xhy@uUOm%C&c}m7Wah3z1ZST&%tVq z=`8Wogt%X_xR+Yo;}-V;i~G=oxPRT^UTkr9Ebe_4_X`u^K5TK1TioB`e8`@;?vTZO zctYHtx41hNcY5j`WH_NS?YbI^`=tqSzhH5Hi|3k{SH&9^_jMNc%M;@Mti}DB#eKx$ zzSQD=WkTGCEbebu+^<;NOD*mr6XO1~#eKx$e%a#gSlr*35cj7n?pG}Cmn`mY@EoJ} zEfRWbE?@i3eH*_V?%M=->8y2)r9hO2x3{}LPvt{=Jb6yN90Xfn)A3c|*O~h^fjaBH z&5fhT&i(m!P_Bv%oFVh~Th{L6+>)PW{Rot!^kY7CPHN&eKr1}i@s&RQLJ+{ zCkUv7eD6HAfF}NczTYIRWAnNO>($Li8L}Mv8GEeM*W{j5@9$zz=0u&2?ygpRZPqE* z@fCG?db3S!$+Xia@9W{s4q4p{xId+RLm?jpGN^ee&C}aT;+UQ6jw*x8F`ccRRAT;OT)9e5;h%0b2OJ8*m z2+tC$tIiOOrwtG~p93;v$o@qj{OvP!)hj@H44S_N(x&sFqIna@C4(l01jAn%QZ%;# zp;;O_Qb+|5YTtdNlF|}3JOZR?_EI_e-4k_H7Z7!4Hlb;L7s#MjGCZM!)@&?C8Ojr= z#7}{Szci%Exd7y{p^a|<;k)FD<_#*@@PuCh8PV^9L>;$DeTz*!6~pzJKgW@8+5Gy~ zEX67y^lG_})BxdU$Q7?XqQT}{@S_q*1g?4t2t|@#&ewsMl71HmXKd7vw1M1IiK~2V zyh&Gi7Id-n34O_sGM}&cd3dLGClIQgs^M}VgTCx|S%_X8i*;^V?g-LDOH~@02xA}M&Y`Ke+h(MWA~At5rWN^>n$M5fGD{- zQ=LscClIHy&Iw)4jCol1%F_>BzZ}Tt@YlD_CLk0SKCit%5?+0fZ8CIazoDPQpc(db zNar5`(gfN4avmd^Q_QO~*@2b55IbHCU0UdE_kL#>S1T!~oTqWsfT8&dKq|fZ5Y2ai z(B@0=8jwM-Cfh5m{+h}$WG{lT%qS=aa@nA{hYV_X`29e744Pgb+{;zG&JbeQ>oY)# zjjR3)NVBI6s{Idu@C>jj=XD@MS^|aq5(tk66%t1rUo#|K41{_PbY9V{2hwTSVmlC? z)mJoGAU&Qfs6HP6k}#zBG?0!{K|TKwkTZsLz6J!zB%t|!0CL5UJ-R^Ua6fWq11UD7 zSP3Lyl)M#4gO*9v`FJOS zg6z6fQXnI}02&kd0g$r?seNZ&uLI$?2^6onc=c|iQS|{7awm|>D2R>}vJ=QzLqGLE z>f}{iauUd}Cn?pV2S~pWas5E}PL?Y9X&`Wz0I#nBi5tAW4aD^D*MJNdSN#eI-+7EW zO*(QLj2f=E!Eq`PZZM*jYdsJiU#R+Q0Wyg5epGe?xnS7+A)W$YDdzUjQ<#0ep8>uP8nr=(5z+!t`&)fSD%FF-vxas44p)_XxrN@Ir8U!dJy<10 z^hRjkqoER)0vR$qY7LMxhMp^dI1g~0>8d?I+6>u`0HGZ2>*u3D`i+u5OXV0e&jYz+ zNbxNoJ*Qb4Xe-;P4@o8a5%+!2JPw3pQgZzr5Ym%R6S)a~Xn5T%gc!D10i@rc*#%?- zMfy^-0I5XDzID<-4xeHq)85*Z?0_2@9`&E-DudVW(p8>ZDA4&F5ZY9oGud=k6Z*y* zjH|u`njRxkzD`#en*Tl_hIQTma@n{lj+-Gn4V%sZ@)2CW4*{W-2SBEIJqx5< zA1Pih0U7bMA$zBYxSgO;yj<#t>NW+SF6Vo=s^5_G7eEqTIYe1{3wT9>HCzg0*wENo zApS^7#(Odx%UeLRL355$!A=7Z^(1OS*QXW8GJ|^t$dJbiB{$I+gf?G?XFxMxTy+iz zH7dThTmVuD8vL($eG5pPQO*xF67^{Q9td5b%5hsL7o$F>IB(#T6I~4bfXI)g*+3c$ zWEqf3DFsV<7m!Pa=4*hA7;*XlkYYpg?LaOV-uv4?h_kPaj{!Msl>AvB($AY>iC zhFKtqf*|rRkU^9~wNo`50Md3UXp8?!R~a;41;TH>sH^^#t^y;l)8!Q23STuOEderU zNU;{kH6t6>0^$4A7!T_2GSnIMISCr|q&L~U<#-xPeV{Eccs&f7p@N{K9|z(X+@A!} zV9@*t(O~mE{4XqI1PHGwr)2*bkhar7jm4HCOBnSj2IBXB)HocqGrac}&`^m!_f0@( z^O5_2EHmnS6v$him0ex*WrO>}RF2{Ej{+h8A%04Vr+^F^{_`h54jVKt16gL&c?8H) zpz-?ve+Oj9u^2FON|< ztw07*GXB?codEKNLGv*nBSy(j6OB=y7lAaR3_o_>0^(bccr924Z5Ud;69~;3`P?@E zQCkB2RT|LZbZFZHnju5>2Z5Y5NHN zAV}lVac8nC*_vuj_VhSy$&B07l`|?su#A z)bFpVt#!9<+k9Y$ySr-t&TaelS+shYHdQ&Wr)7vNBAwJMyt$jdE#%za-nAPaslwDr zJwDTu?d@^OI-oS{9*5qH6Rw*LAz{H>d}gWr7*-I4B8%V zt!bOCy|c&lmWpzk+EPtN@$Cuel`grZRZI5B_H0Ks)12gdwV+Cn_wQdrw4(AC_!k3T-9gy6Pxfec?zb4^@>Ve&vG z*|Hl>=T=iVsNMTgX)Kbd54NI;>FyJb{QSdy95~11X}KE`P0b60K=Y&Q>3ylDwk}j! zew}mNq`O!foJjJND!<-2zEVLt-csfFKF3$8{19j^(sU}@o9-eFxh?H!sBsJ;tf$3G!ZdbnRq$%=TCv~6aoK$xH zbK4a^OP%tH0BY)w8a3&i_1W~E-i{9MpuQ*Bl=9DQ>+8Wf)~ROi{Qb#{x4$Fn?biCc zd(+$A*NeFnulVk)32f^~b*8%f3pSrX_Gaqcsm|{73GZ-gsw129j_SIxNGEcHUj?eW zL{sVQ-D#_~=IN@YY^Y*h$<O+CyC(=A*FHK2}GI zm~Npvv64g{26k)FyY)}(>Fqp{N^d?CMRR0aqX6a3R9}F2cQSJ{ za45BdZa|-lRYN;c&1I_{v^RXP%0ZcKb9-xhHiM5=%DR!3v<@~Sq3aq4P|{f7%$Dx1 zrjFj`6j7)Ws+ya3XIiUU>fyTWE$v2?*+Z(jnw2-e|7D}(>m?tFr@iXT-mX+tI-NY> zM^04+9|*~Ah8(&M@>u$PP@jry2mAx=)ZTP0Tv>;UO(id`?#fC|s#K}X%>C`zHr9(O zP?E}%0b+G3-z5^48sbn@^r{{?c<2+7L7o~YU0MoIu&2I2mDL%m&QhFUBDlA=z3J!{ zT1PUiJr%Xt-(AN^ObQb`hKs0bs4!CdyP<7#P1M2GR7(;;DgCNfJ6U~79&c~wcu;QE zn#yjc7K&WN!9l%jiR2O53U_~sKeVk|2;EWGf!mbs=H8YTWCGQX2q5+CCsRRmJH|UC zPJj>!*poUQLJ-_AeVD3`dn%FxF2pzC_qJHHJ5pK129iw%xiVA;CE?7LB(gs~DWB^c z)i4)+AcFuiD@3GKXj5!-dppgtEOHeLOr7=&_R~k{<4&>* zPjffPBXA8U5XGci%mvEy!W1NioZxXgRU-x|)iWB>t*hU5VC!CY-?rMlTa+TU?b!-tT*n12#;mYcdN)2= zw=GSYP@R9YURbD=2ZW4b!P3BIj~qAmh(=T63omXHX+V~!j?|FyXzGNtvfF{)ISAb2 z>nePzWOK926xPW!^oYS=;JjBlMIPfGTX%nLy*D5We$HzJ@kW=d%fFmR}(ZG9=Q2Tk3!0PpI|p6)Jo ztm>{Uz3DW1Mv}lQH`UeK>0`{n)Zk$<>%Nb2teTRuJW6>9{Jpm$g(dLm?zH13J2S0{o=SGRd$V{j zg9e50BaTr0Bujbdcva{);~yg~PGZGh4`@!F=xA?kvxWx{lt#pAgW0kwgEyn~2n#}`U>LXdr+jzzUjVQV}x^n!)AP-hKp2#=N*$GuQ ziebu^THBCJO@jphO!T!jA@`|iG_+k=Hydtt&=bdhQWd#Ht`aikl_JjzpY zp*biuy+oFV#^nT`i;jqz;qxYTmM|B!SvwCJQUe#z=aU-=aa!%_+8|94EOh zX+0y`5M5o51)|!XJc0S~_y|3bnZ(#FjnvoPl#zarL6hlrw~)*TcA7=R@S7aObFYxG zWjn=|_8cx}K5)&#(MqP$NZwR>XY#$>X*bh*By$22G@UMHOfobpCS8+!3XjsU8I&S1 z?!yG?7Bsn-J?ik1vvP>hEg^dys%MEFRb4s-*AD0_*pIlc9rKmRj(dAk7;=W3i!!G4 zcT6Libqi)bk3`*EWq)J`H&Z5`&Eu_ls)W6eGmTE)o~x>El@f3Z0wvYFEt&4{>mN!k z%GXtptBI_=X-s~pUa(3wvit0-i2DIt-O&>pC#||9hUF}`HJ`b^BLlZb>)T5+kb$5L zgom02a$PLW64to8#m%VETvI6G_|fB0)30g?*ud)PO4OAd7U`}h7z|4DAw7DH3!ODW znB_sQ)|(X9yaHj}l|;NB4+XXgqm-UP`R;kDh#=33PksA9*(^jJ%KE9MeZ20?x# z7pB^ptvee`4~_E2KKX%{<-OPsG&7#yx*O@;#9%kjg87rhI^gOs9gSYKgAc@x($MJE zjB=n?4HlN$eHEcSA%Ce&C6DDu9yy#SkSvfU_8h3K_1u$%uzcAUJAZ?3dYsui;X137 zA=w~1c4v&V2sKj^M<&ddn=^9i!c&d5(6%n5d@FH|c4J66iF~S7HgdSIvA zc3jGz7|zguvASx%ei&wS5sb!9R~AD%daQZ$oM`p%R1z*bj(I`c@(XoIX)e304H_p) zM&7->VIYY-V3^@^oi?X|)q>f8__Yt?Hw~K5RDp&U!bq4_h1-he&9uHSU zreVz(+CWNd@<)`0W%vqMGBDHO-+5G)(@!vtZn99y2!SIwM0M9ng=%r2W)mohdOocaTh6p)q_#kNtNO0B7)o;KO}Zga z>JRn5{Lwv~t{-#E$=?mKVkjHxApJ@|*U;s0)4LTwP0cke(jHMd0{mF;Xy?xlj60zIHoTZ_fyLnpLh=o$+2_xbF9Vj;PEWTm^XEM?ay=#F z%l?)b^GL1l+WX_nz;hb;D`T|sTo+${=}O4F@~L-LduX~Q+)}D^qn;B9P6gmjDl&-M z(vfUc(-oM*IGV}gK^M|isD0J#w&88T_6K&wMX*TTnFn>wu7(%Q;T)hHIXG3S0!5Dv z19slqo88-j8!>b*+tZ4Ab~!+`yFG($a#I^BiW|4#8AUZ_mpMt#75Q Date: Thu, 8 Feb 2024 14:55:44 +0100 Subject: [PATCH 03/31] Einfuegen stdlib --- test/test_SchereSteinPapier.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_SchereSteinPapier.c b/test/test_SchereSteinPapier.c index aa5b429..80a348d 100644 --- a/test/test_SchereSteinPapier.c +++ b/test/test_SchereSteinPapier.c @@ -4,6 +4,8 @@ #include "SchereSteinPapier.h" +#include + void setUp(void) { } From 64fb1ce7d59b13c84fd4623826f2d055c993de5f Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 15:25:30 +0100 Subject: [PATCH 04/31] Hinzufuegen von Name in Team.md --- team.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/team.md b/team.md index 95cd163..3608da4 100644 --- a/team.md +++ b/team.md @@ -1,4 +1,4 @@ fdai7754, fdai7754 fdai7103, fdai7103 -fdai7852, fdai7852 +Lennart Goetze, fdai7852 fdai6407, fdai6407 \ No newline at end of file From 306dfe1da5f57c00bd5516051b343d3cafb07579 Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 15:39:17 +0100 Subject: [PATCH 05/31] mathespiele in menue eingefuegt --- src/menue.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/menue.c b/src/menue.c index 0b520fa..75e2b40 100644 --- a/src/menue.c +++ b/src/menue.c @@ -19,7 +19,7 @@ int main() { while (eingabe != 0) { trenner(); - printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\nZum Abbrechen 0 eingeben.\n"); + printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\n<8> Mathespiele\nZum Abbrechen 0 eingeben.\n"); trenner(); printf("\nEingabe: "); scanf("%d", &eingabe); @@ -58,6 +58,9 @@ int main() { run_wortspiel(); break; + case 8: + run_mathespiele(); + default: printf("Bitte verwenden sie eine der gegebenen Ziffern"); } From 44f447adbf6a2aad2e4b60fdcd37dab28b58d956 Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 15:42:24 +0100 Subject: [PATCH 06/31] ergaenzen von break; --- src/menue.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/menue.c b/src/menue.c index 75e2b40..f4c4881 100644 --- a/src/menue.c +++ b/src/menue.c @@ -60,6 +60,7 @@ int main() { case 8: run_mathespiele(); + break; default: printf("Bitte verwenden sie eine der gegebenen Ziffern"); From 9ede26b5a06b2b340b4ca18d99fb441dc5d3860e Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 16:17:59 +0100 Subject: [PATCH 07/31] Faktorial Datei hinzugefuegt --- src/Faktorial.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/Faktorial.c diff --git a/src/Faktorial.c b/src/Faktorial.c new file mode 100644 index 0000000..bee7c10 --- /dev/null +++ b/src/Faktorial.c @@ -0,0 +1,24 @@ +#include + +int factorial(int n) { + if (n == 0 || n == 1) { + return 1; + } else { + return n * factorial(n - 1); + } +} + +int run_factorial() { + int num; + printf("Gib eine Zahl ein, um die Fakultät zu berechnen: "); + scanf("%d", &num); + + if (num < 0) { + printf("Fakultät ist für negative Zahlen nicht definiert.\n"); + } else { + int result = factorial(num); + printf("Die Fakultät von %d ist %d.\n", num, result); + } + + return 0; +} From 7028456a41c10da6a34607ca1de83559984b7641 Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 16:22:48 +0100 Subject: [PATCH 08/31] refactoring: Rekursiv zu Iterativ --- src/Faktorial.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Faktorial.c b/src/Faktorial.c index bee7c10..4461e57 100644 --- a/src/Faktorial.c +++ b/src/Faktorial.c @@ -1,11 +1,17 @@ #include -int factorial(int n) { - if (n == 0 || n == 1) { - return 1; - } else { - return n * factorial(n - 1); +unsigned long long factorial(int n) { + if (n < 0) { + return 0; // Fakultät für negative Zahlen ist nicht definiert + } + + unsigned long long result = 1; + + for (int i = 1; i <= n; ++i) { + result *= i; } + + return result; } int run_factorial() { @@ -13,6 +19,8 @@ int run_factorial() { printf("Gib eine Zahl ein, um die Fakultät zu berechnen: "); scanf("%d", &num); + unsigned long long result = factorial(num); + if (num < 0) { printf("Fakultät ist für negative Zahlen nicht definiert.\n"); } else { From cb642100e756d41181ad0f54edcb03672dd4c04f Mon Sep 17 00:00:00 2001 From: Lennart Goetze Date: Thu, 8 Feb 2024 16:36:04 +0100 Subject: [PATCH 09/31] refactoring: Benutzereingabe verbessert --- src/Faktorial.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/Faktorial.c b/src/Faktorial.c index 4461e57..9660957 100644 --- a/src/Faktorial.c +++ b/src/Faktorial.c @@ -14,17 +14,27 @@ unsigned long long factorial(int n) { return result; } -int run_factorial() { +int getPositiveInteger() { int num; - printf("Gib eine Zahl ein, um die Fakultät zu berechnen: "); - scanf("%d", &num); - - unsigned long long result = factorial(num); + while (1) { + printf("Gib eine positive ganze Zahl ein: "); + if (scanf("%d", &num) == 1 && num >= 0) { + break; + } else { + printf("Ungültige Eingabe. Bitte gib eine positive ganze Zahl ein.\n"); + while (getchar() != '\n'); // Leere den Eingabepuffer + } + } + return num; +} +int run_factorial() { + int num = getPositiveInteger(); + if (num < 0) { printf("Fakultät ist für negative Zahlen nicht definiert.\n"); } else { - int result = factorial(num); + unsigned long long result = factorial(num); printf("Die Fakultät von %d ist %d.\n", num, result); } From ec8cc6072eae47f2e395d1f09ca79e59afccabf2 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 17:42:46 +0100 Subject: [PATCH 10/31] Ausgabe angepasst, run_factorial deklariert --- src/Faktorial.c | 2 +- src/menue.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Faktorial.c b/src/Faktorial.c index 9660957..df0d625 100644 --- a/src/Faktorial.c +++ b/src/Faktorial.c @@ -35,7 +35,7 @@ int run_factorial() { printf("Fakultät ist für negative Zahlen nicht definiert.\n"); } else { unsigned long long result = factorial(num); - printf("Die Fakultät von %d ist %d.\n", num, result); + printf("Die Fakultät von %d ist %llu\n", num, result); } return 0; diff --git a/src/menue.c b/src/menue.c index f4c4881..05dc39c 100644 --- a/src/menue.c +++ b/src/menue.c @@ -7,6 +7,7 @@ void run_zahlenraten(); int run_scheresteinpapier(); int run_bmi(); int run_wortspiel(); +int run_mathespiele(); void trenner () { // Die laenge der Abtrenner kann hier fuer alle 3 angepasst werden From ef70d6f73b831d4d2706f2faafbabc3bef036adb Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 17:51:03 +0100 Subject: [PATCH 11/31] =?UTF-8?q?tempraturrechner=20in=20menue=20hinzugef?= =?UTF-8?q?=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/menue.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/menue.c b/src/menue.c index 05dc39c..cbf9c07 100644 --- a/src/menue.c +++ b/src/menue.c @@ -8,6 +8,7 @@ int run_scheresteinpapier(); int run_bmi(); int run_wortspiel(); int run_mathespiele(); +int run_TemperaturRechner(); void trenner () { // Die laenge der Abtrenner kann hier fuer alle 3 angepasst werden @@ -20,7 +21,7 @@ int main() { while (eingabe != 0) { trenner(); - printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\n<8> Mathespiele\nZum Abbrechen 0 eingeben.\n"); + printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\n<8> Mathespiele\n<9> Temperaturrechner\nZum Abbrechen 0 eingeben.\n"); trenner(); printf("\nEingabe: "); scanf("%d", &eingabe); @@ -62,7 +63,9 @@ int main() { case 8: run_mathespiele(); break; - + case 9: + run_TemperaturRechner(); + break; default: printf("Bitte verwenden sie eine der gegebenen Ziffern"); } From e6c9a2785e6719bde16d684a1182bd8983d35aeb Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 17:55:09 +0100 Subject: [PATCH 12/31] =?UTF-8?q?break=20eingef=C3=BCgt=20um=20nach=20bmi?= =?UTF-8?q?=20von=20vorne=20anzufangen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/menue.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/menue.c b/src/menue.c index cbf9c07..af0b587 100644 --- a/src/menue.c +++ b/src/menue.c @@ -55,6 +55,7 @@ int main() { case 6: run_bmi(); + break; case 7: run_wortspiel(); @@ -63,6 +64,7 @@ int main() { case 8: run_mathespiele(); break; + case 9: run_TemperaturRechner(); break; From 91463166489d5fd93f4428072c9d8ab43b27364c Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:01:41 +0100 Subject: [PATCH 13/31] refactoring: besserer variablenname --- src/temperatur.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/temperatur.c b/src/temperatur.c index 7c6929e..05f26b4 100644 --- a/src/temperatur.c +++ b/src/temperatur.c @@ -49,7 +49,7 @@ const char* getSecondUnit(int input){ } int run_TemperaturRechner(){ - float var1, var2; + float var1, ausgabeTemp; int var3; printf("\nTemperaturkonverter (Celsius, Fahrenheit, Kelvin)\nAchten Sie darauf, Kommazahlen mit einem Punkt anzugeben!\n\n"); @@ -71,26 +71,26 @@ int run_TemperaturRechner(){ switch(var3){ case 1: - var2 = CzuF(var1); + ausgabeTemp = CzuF(var1); break; case 2: - var2 = CzuK(var1); + ausgabeTemp = CzuK(var1); break; case 3: - var2 = FzuC(var1); + ausgabeTemp = FzuC(var1); break; case 4: - var2 = FzuK(var1); + ausgabeTemp = FzuK(var1); break; case 5: - var2 = KzuC(var1); + ausgabeTemp = KzuC(var1); break; case 6: - var2 = KzuF(var1); + ausgabeTemp = KzuF(var1); break; } - printf(" = %.2f%s\n\n", var2, getSecondUnit(var3)); + printf(" = %.2f%s\n\n", ausgabeTemp, getSecondUnit(var3)); } From 8c7efc34f74f6322764baa05bdd24bda3be3ca5f Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:03:44 +0100 Subject: [PATCH 14/31] refactoring: besserer variablenname --- src/temperatur.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/temperatur.c b/src/temperatur.c index 05f26b4..5372681 100644 --- a/src/temperatur.c +++ b/src/temperatur.c @@ -49,7 +49,7 @@ const char* getSecondUnit(int input){ } int run_TemperaturRechner(){ - float var1, ausgabeTemp; + float eingabeTemp, ausgabeTemp; int var3; printf("\nTemperaturkonverter (Celsius, Fahrenheit, Kelvin)\nAchten Sie darauf, Kommazahlen mit einem Punkt anzugeben!\n\n"); @@ -66,27 +66,27 @@ int run_TemperaturRechner(){ break; printf("\nGeben Sie die Temperatur in %s ein: ", getFirstUnit(var3)); - scanf("%f", &var1); + scanf("%f", &eingabeTemp); switch(var3){ case 1: - ausgabeTemp = CzuF(var1); + ausgabeTemp = CzuF(eingabeTemp); break; case 2: - ausgabeTemp = CzuK(var1); + ausgabeTemp = CzuK(eingabeTemp); break; case 3: - ausgabeTemp = FzuC(var1); + ausgabeTemp = FzuC(eingabeTemp); break; case 4: - ausgabeTemp = FzuK(var1); + ausgabeTemp = FzuK(eingabeTemp); break; case 5: - ausgabeTemp = KzuC(var1); + ausgabeTemp = KzuC(eingabeTemp); break; case 6: - ausgabeTemp = KzuF(var1); + ausgabeTemp = KzuF(eingabeTemp); break; } From 96a08a9ba2193bee96b84c9b2050bec48eee97a2 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:12:54 +0100 Subject: [PATCH 15/31] refactoring: kommentare hinzugefuegt --- src/bmi.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/bmi.c b/src/bmi.c index b915b22..a76b3dc 100644 --- a/src/bmi.c +++ b/src/bmi.c @@ -1,13 +1,14 @@ #include #include "bmi.h" +//Body-Mass-Index nach der allgemeinen Formel berechnen (Gewicht / (Groesse in m * Groesse in m) float calcBMI(float a, float b){ if(a > 0 && b > 0) return b / (a * a); else return 0; } - +//Bewertung des BMI zurueckgeben const char* retResult(float points){ if(points < 16) return "Starkes Untergewicht"; @@ -30,13 +31,13 @@ int run_bmi() float var1 = 0; float var2 = 0; float var3 = 0; - + //Groesse einlesen printf("\nBMI-Rechner\n\nGeben Sie ihre Groesse in m an(Bsp: 1.8): "); scanf("%f", &var1); - + //Gewicht einlesen printf("\nGeben Sie ihr Gewicht in kg an: "); scanf("%f", &var2); - + //Ergebnis fuer ausgabe und Bewertung berechnen var3 = calcBMI(var1, var2); printf("\nIhr Body-Mass-Index liegt bei %.2f - %s\n", var3, retResult(var3)); From c205bc0ac7b0718df436a08750deb7b80960a2fd Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:14:43 +0100 Subject: [PATCH 16/31] refactoring: lesbarkeit, klammern von funktionen vereinheitlicht --- src/bmi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bmi.c b/src/bmi.c index a76b3dc..2a892e2 100644 --- a/src/bmi.c +++ b/src/bmi.c @@ -26,17 +26,19 @@ const char* retResult(float points){ return "Starkes Uebergewicht"; } -int run_bmi() -{ +int run_bmi(){ float var1 = 0; float var2 = 0; float var3 = 0; + //Groesse einlesen printf("\nBMI-Rechner\n\nGeben Sie ihre Groesse in m an(Bsp: 1.8): "); scanf("%f", &var1); + //Gewicht einlesen printf("\nGeben Sie ihr Gewicht in kg an: "); scanf("%f", &var2); + //Ergebnis fuer ausgabe und Bewertung berechnen var3 = calcBMI(var1, var2); From bef6f5eda5c361756ec33aafdd4feb99b0a5a99b Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:22:28 +0100 Subject: [PATCH 17/31] refactoring: kommentare hinzugefuegt --- src/temperatur.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/temperatur.c b/src/temperatur.c index 5372681..e87c03a 100644 --- a/src/temperatur.c +++ b/src/temperatur.c @@ -27,6 +27,7 @@ float KzuF(float tempK){ return ((int)(tmp * 100 + .5) / 100.0); } +//Gibt die passende Einheit zur Eingabe, fuer die naechste Eingabe zurueck const char* getFirstUnit(int input){ if(input < 3) return "Celsius"; @@ -36,6 +37,7 @@ const char* getFirstUnit(int input){ return "Kelvin"; return ""; } +//Gibt die passende Einheit zur Eingabe, fuer die Ausgabe des Ergebnisses zurueck const char* getSecondUnit(int input){ if(input == 1 || input == 6) return "° Fahrenheit"; @@ -58,6 +60,7 @@ int run_TemperaturRechner(){ printf("Waehlen Sie: \n<1> Celsius zu Fahrenheit\n<2> Celsius zu Kelvin\n<3> Fahrenheit zu Celsius\n<4> Fahrenheit zu Kelvin\n<5> Kelvin zu Celsius\n<6> Kelvin zu Fahrenheit\n<7> Zum beenden\nAuswahl: "); scanf("%d", &var3); + //Abbruch bei zu kleiner/grosser eingabe if(var3 < 1 || var3 > 7){ printf("Eingabe nicht zulaessig!"); break; @@ -68,7 +71,7 @@ int run_TemperaturRechner(){ printf("\nGeben Sie die Temperatur in %s ein: ", getFirstUnit(var3)); scanf("%f", &eingabeTemp); - + //Passende funktion nach gewaehlter umrechnung aufrufen switch(var3){ case 1: ausgabeTemp = CzuF(eingabeTemp); From 06c82777bf88da03e8f9787cdce8125c967a5ba4 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:27:48 +0100 Subject: [PATCH 18/31] refactoring: variablenname und lesbarkeit durch klammern verbessert --- src/temperatur.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/temperatur.c b/src/temperatur.c index e87c03a..6d7c9c3 100644 --- a/src/temperatur.c +++ b/src/temperatur.c @@ -52,27 +52,28 @@ const char* getSecondUnit(int input){ int run_TemperaturRechner(){ float eingabeTemp, ausgabeTemp; - int var3; + int eingabeAuswahl; printf("\nTemperaturkonverter (Celsius, Fahrenheit, Kelvin)\nAchten Sie darauf, Kommazahlen mit einem Punkt anzugeben!\n\n"); while(1){ printf("Waehlen Sie: \n<1> Celsius zu Fahrenheit\n<2> Celsius zu Kelvin\n<3> Fahrenheit zu Celsius\n<4> Fahrenheit zu Kelvin\n<5> Kelvin zu Celsius\n<6> Kelvin zu Fahrenheit\n<7> Zum beenden\nAuswahl: "); - scanf("%d", &var3); + scanf("%d", &eingabeAuswahl); //Abbruch bei zu kleiner/grosser eingabe - if(var3 < 1 || var3 > 7){ + if(eingabeAuswahl < 1 || eingabeAuswahl > 7){ printf("Eingabe nicht zulaessig!"); break; } - else if(var3 == 7) + else if(eingabeAuswahl == 7){ break; + } - printf("\nGeben Sie die Temperatur in %s ein: ", getFirstUnit(var3)); + printf("\nGeben Sie die Temperatur in %s ein: ", getFirstUnit(eingabeAuswahl)); scanf("%f", &eingabeTemp); //Passende funktion nach gewaehlter umrechnung aufrufen - switch(var3){ + switch(eingabeAuswahl){ case 1: ausgabeTemp = CzuF(eingabeTemp); break; @@ -93,7 +94,7 @@ int run_TemperaturRechner(){ break; } - printf(" = %.2f%s\n\n", ausgabeTemp, getSecondUnit(var3)); + printf(" = %.2f%s\n\n", ausgabeTemp, getSecondUnit(eingabeAuswahl)); } From 539537d9cdf4b42127eaabacd1e1e8572125cfdd Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:44:52 +0100 Subject: [PATCH 19/31] Passwortgenerator angelegt --- src/passwortgenerator.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/passwortgenerator.c diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c new file mode 100644 index 0000000..1a19863 --- /dev/null +++ b/src/passwortgenerator.c @@ -0,0 +1,18 @@ +#include +#include +#include + +int run_passwortGenerator(){ + printf("\nPasswort Generator\n\n"); + char zeichen[] = "abcdefghijklmnopqrstuvwxyz"; + int tmp = 0; + printf("\nIhr Passwort: "); + srand(time(0)); + for(int i = 0; i < 10; i++) + { + tmp = rand() % 26; + printf("%c", zeichen[tmp]); + } + printf("\n"); + return 0; +} From b5c96080a3d5248efdbb115ae0f392dcbfadbad0 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:53:00 +0100 Subject: [PATCH 20/31] Passwortgenerator klein und grossbuchstaben --- src/passwortgenerator.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index 1a19863..fe3f685 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -1,17 +1,20 @@ #include #include #include +#include int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); char zeichen[] = "abcdefghijklmnopqrstuvwxyz"; int tmp = 0; + int GroSSklein = 0; printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < 10; i++) { - tmp = rand() % 26; - printf("%c", zeichen[tmp]); + tmp = rand()%26; + GroSSklein = rand()%2; + printf("%c", (GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp])); } printf("\n"); return 0; From 3ac61e2e56ceb779b6f7ec4ed93039739c2ed205 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 18:56:26 +0100 Subject: [PATCH 21/31] Passwortgenerator buchstaben + zahlen --- src/passwortgenerator.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index fe3f685..60d7d5e 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -5,16 +5,16 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); - char zeichen[] = "abcdefghijklmnopqrstuvwxyz"; + char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789"; int tmp = 0; int GroSSklein = 0; printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < 10; i++) { - tmp = rand()%26; + tmp = rand()%36; GroSSklein = rand()%2; - printf("%c", (GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp])); + printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); } printf("\n"); return 0; From f55147b0b37d7bce5e8453b3bc5b18612aa5f057 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:02:58 +0100 Subject: [PATCH 22/31] Passwortgenerator Sonderzeichen --- src/passwortgenerator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index 60d7d5e..d822ca0 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -5,14 +5,14 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); - char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789"; + char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#"; int tmp = 0; int GroSSklein = 0; printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < 10; i++) { - tmp = rand()%36; + tmp = rand()%46; GroSSklein = rand()%2; printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); } From a57fa70c7b33e5a66d96e52141e7b518f79a9d09 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:16:42 +0100 Subject: [PATCH 23/31] Passwortgenerator Loop um neues zu erzeugen --- src/passwortgenerator.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index d822ca0..2749d58 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -6,8 +6,14 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#"; + while(1){ + int eing = 0; + printf("Tippen Sie '1' ein, um ein neues Passwort zu generieren: "); + scanf("%d", &eing); int tmp = 0; int GroSSklein = 0; + if(eing == 1) + { printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < 10; i++) @@ -16,6 +22,9 @@ int run_passwortGenerator(){ GroSSklein = rand()%2; printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); } - printf("\n"); + printf("\n");} + else + return 0; + } return 0; } From c6f9e86d35a4c49685034f27031b8e6f2900ddfe Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:22:14 +0100 Subject: [PATCH 24/31] Passwortgenerator Programm beenden --- src/passwortgenerator.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index 2749d58..c9f1189 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -8,12 +8,11 @@ int run_passwortGenerator(){ char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#"; while(1){ int eing = 0; - printf("Tippen Sie '1' ein, um ein neues Passwort zu generieren: "); + printf("Tippen Sie '1' ein, um ein neues Passwort zu generieren\noder '0' um das Programm zu beenden: "); scanf("%d", &eing); int tmp = 0; int GroSSklein = 0; - if(eing == 1) - { + if(eing == 0){return 0;} printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < 10; i++) @@ -23,8 +22,5 @@ int run_passwortGenerator(){ printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); } printf("\n");} - else - return 0; - } return 0; } From 788ce6a605a23430c974bb6460bdb95a224443d0 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:25:50 +0100 Subject: [PATCH 25/31] =?UTF-8?q?Passwortgenerator=20l=C3=A4nge=20selbst?= =?UTF-8?q?=20w=C3=A4hlen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/passwortgenerator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index c9f1189..715c128 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -8,14 +8,14 @@ int run_passwortGenerator(){ char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#"; while(1){ int eing = 0; - printf("Tippen Sie '1' ein, um ein neues Passwort zu generieren\noder '0' um das Programm zu beenden: "); + printf("Tippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); scanf("%d", &eing); int tmp = 0; int GroSSklein = 0; if(eing == 0){return 0;} printf("\nIhr Passwort: "); srand(time(0)); - for(int i = 0; i < 10; i++) + for(int i = 0; i < eing; i++) { tmp = rand()%46; GroSSklein = rand()%2; From 43644ab8faa6f8ed17e81bab6bce85a336db74db Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:29:00 +0100 Subject: [PATCH 26/31] Passwortgenerator keine negativen zahlen als eingabe --- src/passwortgenerator.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index 715c128..fab574f 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -13,6 +13,7 @@ int run_passwortGenerator(){ int tmp = 0; int GroSSklein = 0; if(eing == 0){return 0;} + else if(eing < 0){printf("Negative Zahlen sind nicht erlaubt!");} printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < eing; i++) From a4ba21c688b080fa9148064303d482983b8bcfbe Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:36:05 +0100 Subject: [PATCH 27/31] Passwortgenerator mehr sonderzeichen --- src/passwortgenerator.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index fab574f..f21ba5d 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -5,20 +5,20 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); - char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#"; + char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#'+-_.:,;<>"; while(1){ int eing = 0; - printf("Tippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); + printf("\nTippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); scanf("%d", &eing); int tmp = 0; int GroSSklein = 0; if(eing == 0){return 0;} - else if(eing < 0){printf("Negative Zahlen sind nicht erlaubt!");} + else if(eing < 0){printf("\nNegative Zahlen sind nicht erlaubt!");} printf("\nIhr Passwort: "); srand(time(0)); for(int i = 0; i < eing; i++) { - tmp = rand()%46; + tmp = rand()%56; GroSSklein = rand()%2; printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); } From 962f1495321e7a8dab75398361ce7836c94c25f8 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:40:24 +0100 Subject: [PATCH 28/31] =?UTF-8?q?refactoring:=20einr=C3=BCckungen=20und=20?= =?UTF-8?q?einheitliche=20klammersetzung=20f=C3=BCr=20bessere=20lesbarkeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/passwortgenerator.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index f21ba5d..b1c5f8e 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -7,21 +7,26 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#'+-_.:,;<>"; while(1){ - int eing = 0; - printf("\nTippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); - scanf("%d", &eing); - int tmp = 0; - int GroSSklein = 0; - if(eing == 0){return 0;} - else if(eing < 0){printf("\nNegative Zahlen sind nicht erlaubt!");} - printf("\nIhr Passwort: "); - srand(time(0)); - for(int i = 0; i < eing; i++) - { - tmp = rand()%56; - GroSSklein = rand()%2; - printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); + int eing = 0; + printf("\nTippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); + scanf("%d", &eing); + int tmp = 0; + int GroSSklein = 0; + if(eing == 0){ + return 0; + } + else if(eing < 0){ + printf("\nNegative Zahlen sind nicht erlaubt!"); + } + printf("\nIhr Passwort: "); + srand(time(0)); + for(int i = 0; i < eing; i++) + { + tmp = rand()%56; + GroSSklein = rand()%2; + printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); + } + printf("\n"); } - printf("\n");} return 0; } From 27561b4437005ede9dd8432f16277a99e05c3a3b Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:45:04 +0100 Subject: [PATCH 29/31] =?UTF-8?q?refactoring:=20bessere=20variablennamen?= =?UTF-8?q?=20und=20abst=C3=A4nde=20f=C3=BCr=20bessere=20lesbarkeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/passwortgenerator.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index b1c5f8e..1ed589c 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -7,24 +7,24 @@ int run_passwortGenerator(){ printf("\nPasswort Generator\n\n"); char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#'+-_.:,;<>"; while(1){ - int eing = 0; + int eingabe = 0; printf("\nTippen Sie die gewuenschte Passwortlaenge ein, um ein neues zu generieren\noder '0' um das Programm zu beenden: "); - scanf("%d", &eing); + scanf("%d", &eingabe); int tmp = 0; - int GroSSklein = 0; - if(eing == 0){ + int grossKlein = 0; + if(eingabe == 0){ return 0; } - else if(eing < 0){ + else if(eingabe < 0){ printf("\nNegative Zahlen sind nicht erlaubt!"); } printf("\nIhr Passwort: "); srand(time(0)); - for(int i = 0; i < eing; i++) + for(int i = 0; i < eingabe; i++) { tmp = rand()%56; - GroSSklein = rand()%2; - printf("%c", (tmp<26?(GroSSklein==0?toupper(zeichen[tmp]):zeichen[tmp]):zeichen[tmp])); + grossKlein = rand()%2; + printf("%c", (tmp < 26 ? (grossKlein == 0 ? toupper(zeichen[tmp]) : zeichen[tmp]) : zeichen[tmp])); } printf("\n"); } From 0a570897cf96dacd7369751ac7c3e9cdb8ca0987 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:48:40 +0100 Subject: [PATCH 30/31] refactoring: kommentare --- src/passwortgenerator.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/passwortgenerator.c b/src/passwortgenerator.c index 1ed589c..45b5426 100644 --- a/src/passwortgenerator.c +++ b/src/passwortgenerator.c @@ -3,8 +3,9 @@ #include #include -int run_passwortGenerator(){ +int run_PasswortGenerator(){ printf("\nPasswort Generator\n\n"); + //Verfuegbare Zeichen char zeichen[] = "abcdefghijklmnopqrstuvwxyz0123456789!%&/()=?*#'+-_.:,;<>"; while(1){ int eingabe = 0; @@ -19,10 +20,12 @@ int run_passwortGenerator(){ printf("\nNegative Zahlen sind nicht erlaubt!"); } printf("\nIhr Passwort: "); + //Aktuelle Zeit fuer zufallszahlgeneration srand(time(0)); for(int i = 0; i < eingabe; i++) { tmp = rand()%56; + //Gibt an, ob Buchstabe gross oder klein geschrieben wird grossKlein = rand()%2; printf("%c", (tmp < 26 ? (grossKlein == 0 ? toupper(zeichen[tmp]) : zeichen[tmp]) : zeichen[tmp])); } From a5c79f463d1dac5b0d78331acd0d7525b475c117 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Thu, 8 Feb 2024 19:53:13 +0100 Subject: [PATCH 31/31] Passwort Generator in menue hinzugefuegt --- src/menue.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/menue.c b/src/menue.c index af0b587..1fc4b16 100644 --- a/src/menue.c +++ b/src/menue.c @@ -9,6 +9,7 @@ int run_bmi(); int run_wortspiel(); int run_mathespiele(); int run_TemperaturRechner(); +int run_PasswortGenerator(); void trenner () { // Die laenge der Abtrenner kann hier fuer alle 3 angepasst werden @@ -21,7 +22,7 @@ int main() { while (eingabe != 0) { trenner(); - printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\n<8> Mathespiele\n<9> Temperaturrechner\nZum Abbrechen 0 eingeben.\n"); + printf("\nWelches Programm wollen Sie starten?\n<1> Minirechner \n<2> AlterinSekunden\n<3> MagicEightBall\n<4> Zahlenraten\n<5> SchereSteinPapier\n<6> BMI-Rechner\n<7> Wortspiel\n<8> Mathespiele\n<9> Temperaturrechner\n<10> Passwort Generator\nZum Abbrechen 0 eingeben.\n"); trenner(); printf("\nEingabe: "); scanf("%d", &eingabe); @@ -32,7 +33,7 @@ int main() { case 0: return 0; - + case 1: run_minirechner(); break; @@ -68,6 +69,9 @@ int main() { case 9: run_TemperaturRechner(); break; + case 10: + run_PasswortGenerator(); + break; default: printf("Bitte verwenden sie eine der gegebenen Ziffern"); }