From 1575f53c9b170ccace899560a0ed94e84d896636 Mon Sep 17 00:00:00 2001 From: Emma Nora Theuer Date: Mon, 30 Dec 2024 01:13:27 +0100 Subject: [PATCH] Implement Second preparation excercise --- Workbook/a.out | Bin 15416 -> 71504 bytes Workbook/test.c | 247 ++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 238 insertions(+), 9 deletions(-) diff --git a/Workbook/a.out b/Workbook/a.out index 034e5473e94f7396a48aa8fa3c74b287e00510f9..93f88f0f6494d76039188fb59971de1ba4bf7882 100755 GIT binary patch literal 71504 zcmeI0eQX?85y0o}+=KQl&@)NCl#4|7j(V2n{VosKtre$`VDGei73;$IRO| z_TJt(1O)%hJMGPzc{B6g`|aDeA4fZSwg&?N;1YzNgVN?0%H;k7j4YY)F`xzJg8{2y z70f}eDm>WF&^4A9bQsHd=u0Jp2gMx;l19=XF)ddr4S*&0PVx%f<_be=u6$#GtFi=l zHtL_oIzHvLk55Hag=LQ($1W{7j#P@fpyMv+IF@Jhz*zG9Xl``0=zJ|f12xhO60lAE z&q(s6vg=JJLG{u3N=0d?3dQ%Y8&ipfR5Cp{ z)L>b;c>kv6NIny3a$_it`_m!+RuF?_6})=U7Or5=&SHUmc3wAb zOPdlw%;Q}n^I*pA%~RvC)4JqR>#=+Hm9WR|y{^`I?0l_LuB~fBFHaqQ_Qz8pDBuhq znmYX4@n_L?I%K}WeUY3%p9vI8FLqAWoZngq2UowcIvjeLkD36CEDaiyH9=5qN}q%J zbsl{I>TMpq8uge*UxxZuJo?qBKjG@$u~6Nt3%z_T48ODrk2gc`)VYu`d44Sv-oklc z^9Y=&ErhVG3XeY)iw}?CK{4C$@~1I-=k1;I7|s#i?wm9LPX4x7TtOUoj$Vl;Zv@7m zfVZHLH7K_N{N*%2?>UTLGu}CAVf;iW@Dv~?#nR`$2H@A%eRT9}bkUc;x#pwjgU_M= zd5mqF=$wqH*x+=mJJw&RbM)>)n7k5m?R&}CG7PZ!b(~iihIj9K3AVhu(3qS${QUI! zqxqi4ITYLBcVly5>Rbq>F3vTkiXmg_&kK*P8f)LT3fl@azNy2{sQf_e#;z+I!@R0) ztSx+p>uCQr*GJbD9>)6EPXYzZ`;_uMy|!>aw~wtYJV5PF!c05V6~4yp;kv@tsr{>- zcB8IvH@EMrD;%Zvyr&)W-^uNxb%hMIXN+gC|MjZ>aD5?1HgBIsePIA?#Vd^|ny>O3 zt}pbH-)c|nSbZVRerR6>u~pBZKgFCt`)b3jyZwBka68%nxlbK_;W+V|Z9UOG<1One z7J&8P+iu$v-j&NF1`jxPGTmpz>@d!%ds}Om;_DM`mYvpsO_ut+tMAI$$vhhBQ~Q-6 znm%Opr`#Aa+&oKhqw%>VT%QOZS%A{bT%RY6>>bJUAv=|I^J99pa}ONXY3Hp0$L|+d z8TvHc>uImq_ffG(!yiRCgmMh!D9W0tV(}!(9+WSlyay%jF>oKsc>#bED8neJ@IDU31Rs~irTCHq!KYH)OV(}(&iq2hChvEi2!q^A3L9`)SUGrG*@j%<_uT`T)HY}8n z?yW88*GL8|Wb4PH7i}sZ)+yf+I?&dFQsoOjR`qzO?ZIHz>#v>FIhSM85AnDU{k;1t z*?)-##ZxZ8(R5Y=T!Yo$<8d$A4Vq)LI{R4l(#bG2Nd<*6z|)!3fZI?t<1`_0#q`@dLp=VNI9qSl$~gx1&Vb{+nI6Bji1|Fnaw zKHrxsDSu~sduw=I=gwQN4>vVOHbk1j8yYt>H*RU#5MH<2PK3KGM>jNVydI)^Tbr{@ z8#Zl$-FsVegXwfK-52hQ$NjO;wzt(vr!%o+x?*$ZZLN(%n-iNFKecH?*oq|^(iz8& z#9_~_){U^Iy|oG2x3@NVTekPKHhT5WC_3%xZf%A=9j%REwYBCQE1j@%2`EXPOeY;o ztkUVaN~P;1zL>#D#v5{WDie1H(-`*IR34vA<@4Eq)?5t%#zoW_tqW|lngI0mdXtuw zd~VlmsZ03qb$z=&-<9(4wf=p5%~$dn)_vTd_mfIKoQLIq>%(JBTw=^T*5i82gm1PI zLa;4CqpUduLAax$Jp@N8+N-AbF>kUE?rOY$mD=Y_?{lU0xln0;2;oZLeWlcYKJflj zYF_}nkCoaN0-yI%`y$}$z0{7ozCORD_G;jBS!!PbmAHp+6_3t0ysoMqf~7D~(Y_4$ zzTyoE!Ii-GlT!O~sI=dO;3{}g@BgL#R|DS{O6@D45!$>aRS!WeG*`6qU9dDH1bp}N z+gC!1FAv=xs^IU%QcqCVK0rBt_rA9nntkWRy?-r*ss%<#D%W1Vo@s;u&pHq5DA&LI zJkm8w<1uFGx7OEh9eQ7CUc5)CwD|W)Jc5{??RF$uDyI6wp_B`g}{3V_se;B z-(dUJOXgV&!#)n5MSmK<-`=C`Cw%_Q`GjwuGPOTHm!Yc4ApQqD>yV!-+&tyi#g~FAJ7mUqiFxxrh95UGaIO z>z~RaI=_Ek{Sn&3%A@q}r)XaqTmt^<;(4@J;&Yb#VP?Oo(&^66;{OiXiI1PdKgd5g zv%m3k{SQ>0nSJ;soqq|wP*lpZLfifK3mQA|*`=S849rVqE&5lQ*Ue~O8eCB}&Th1a zRb=U3e3m?eWDl0_pAgSEO_2=L4S{Lim9w(ufR#)`T>@2nm^K}&k6e=I61P$*^Df&u zVD3+oElswZ6SMo0R8819tmPd$XF3CBJe5h?c}$YXn0={C%u1OFCzH#Y*5DAtGXvR_ z?bwM(V`UF>KR#2NRxW29H0`vLI|%!8)_`p$1_uTXVu(jG>FK+~)w&CR_{@!Cv(pJ2 znQ3m{9o^AkcI@0{nqY4G!p`W9?shcetBTptrCYnU?FO^6=a#l;k9o`X?Rz?U&E9BR zPX|Vrsbnl};$wNvQFx5bp6<4Gb3q`$tVuQ(4q9K`p zh%!anx*KRoMlhwF%R+>F`mKCFL=p$nn9r3?&TYBV&gGMtbcteO8&2J#0A0(b9Lk7e zia7QV{?qcqwv0Mq5xZY6xc&sjvgSs(E6Ske&1=)2HvN2Gv513O9WMKJiiy+ zq2t4)?q%_`U(!~`{qy_N5pCe_Mw~`(i>$&ntbKsrPB{Kp&`@p1wBZ`1&3r#{@2}d3 zVkaK-%*^qpf(B}U?`2BBtFC}KD5-CbuhsUwDCt`g$Mg585&eOQzej0zm4oXfzk~;U z3*vZwzgw?C^WM+jzu1rE0gR__ORV#IprPX%sS_;z@w--lLs%hKj_3Eqtd8%}j@-Y0 z{`ctkHtomnm8Wz(e@~x#@1I?|Lq30Qt2Ui#k-;a;$ z_z$K%-3s$#^KoB1zekVi50LbJ;Vu6De};`Te(s;&wzI{pkz4hyd@?w8lWIcy^rj_2g E0b&*c`~Uy| literal 15416 zcmeHOU2Ggz6~4Pk8q+56#P1))Azs1L4!l2k}2;i*Unm5N9%qTs42a!TdloO{o= z8Bf+hARYkCv1Yz|e(#+#cjnG|&U`g9(3?yo6lk6LykhQT%1F|pm~WE?L0TP9n`ysO zJ*e&?e!Z3%ecAwN4ZWFMjddblN63DS+^B&M7_kCkgpBOB7Fj$XBA}AvV80El5I%~Z zlyL%~ul8rLGm)kDRb0;oM8L2g4`sedtJQqRYJ5WaJ1Gc1X4&tG_+1e{;F9zQL_Rqu zyd98yMsbjIOu(q$8S#svrM;?$Th0CP>wfOv>2FZ{ED0P%Ofw+P^%uxbPOXgS&VbW= zO!`~vJUEhnprlvr9nYU?Z`(VbYZ}iNrly;w541P6x7p>Q-Ksn0aiwYFIn{UMgrYDD zER!^<p311$CBY`3;u{=D^7d6>Ko|q>ULZ0R(pT7y{}EV{X>V{oLBNj^JU*F4ISeOlum_@aT+C#_2riyeEj?LsHD6sqOiX@fq1CvR7aD9-W4yIwS{%>l@eA z!c6q4)v9t(+>5UP)e%G_QKa$Uo#5uR2#Bgxge~^aO&TSgn z*5Iv?Tedu&ixHmu4{HDYtqglsoXV2(`d{$0Xeiy6XAuR;~|Ms^C&l5Hi zULZ^p4iY~3UJxu0GTm!HB~BkxiRn~g$EJ;S=jkOR%lV!D;$MT{(`?hTQNLn)n3~+r zd6HX%YD=njOXFkp_k5*pRvp@Y@H6`!)~^xS|0&wekR9I5u{q0q+GZni?(3Vhy+C99 z5uwU#Nqr;Pz4@->w`fExh$+rMoPjt4aR%ZH#2JV)5N9CHK%9X%1OMF_Kz$+V3Aw(L ziE9>_HW{cEFm4w9UMcF_COqmEcL#2e*WPbfRVN)o?#RF}?gg=ZIW}GX#5|O+@dW?KPAD|WTV1)f&Mj?(;uAVa#Oz|c}i_ljcHgK z`~g9Os;_>}q5tPXva7VQee}3~C-yT^r>y^HLb5;5#^Z_Fze{q9wkT~()UNw}h~y1P zy85H@)c4B1J*?cGCy#U1t z>>9{WQFpYEJdHx}e^wms<+6TOam9IFs?DpeTx0IKtT)Buw^fq6xpL7R%NBB6W!`_3 ztaAB+J5}~_%JmAgb5E7a;w#ndRGIE(j`X;9szYC01HXDWG)(#rmtCHj@Uy1~{gS~k zw5VR*D@`i9Q1m@}v@m5)mWq>J$)6EXXIFodpB+_NHZlmCE^I zVHM+&uH=np*+E*9m~3j=qeWu5QTB$F?R(S2>de}uqRzAJjkzPG?1blz^ae z-4Eryi03gf(Zpj7Q-zqYza@TE3>#A$w_D(MBK~Pn0AYtP;DIki{0Bt=gxy;HKZ*FC z6bIm|kqHxx_j1G^>o5?{yXZffzn_ag&cCw6QV^_2^;|)l@fWo55aDlG#1H}73|rkt z`@ce(u>TX5F$MDRg$eTqvfogHuMs?7;yE7Qxkc^41AkAx^&x*e=PxvokO+2$yTwEP zCsOd-MgMqS!*`4LJ`wX9emIZcCtp5(_~ZF)elH1$90S!o{DJS2ChV`$V%lsF{fP9o zHjnSz>SEX-@+7O)jt3ZNU3fB diff --git a/Workbook/test.c b/Workbook/test.c index 03ff66b..9be4067 100644 --- a/Workbook/test.c +++ b/Workbook/test.c @@ -1,13 +1,242 @@ +#include +#include #include +#include +#include -int main() { - int a = 5; - int b = 5; - int c = a++; - int d = ++b; - printf("A: %d\n", a); - printf("B: %d\n", b); - printf("C: %d\n", c); - printf("D: %d\n", d); +#define ERRORRETURN 10787253 +#define ARRSIZE 4096 +#define EXITVAL 15326 +#define ENOCUSTOMER 692137 +#define ENOPRODUCT 691337 + +struct Product { + int id; + char* name; + double price; + int amount; +}; + +struct Customer { + char* name; + int id; +}; + +int find_first_free_customer(struct Customer* array[]) { + for (int i = 0; i < ARRSIZE; i++) { + if (array[i] == NULL) { + return i; + } + } + return -1; +} + +int find_first_free_product(struct Product* array[]) { + for (int i = 0; i < ARRSIZE; i++) { + if (array[i] == NULL) { + return i; + } + } + return -1; +} + +int find_product_index(int id, struct Product* array[]) { + for (int i = 0; i < ARRSIZE; i++) { + if (array[i] != NULL && array[i]->id == id) { + return i; + } + } + errno = ENOPRODUCT; + printf("Mit der eingegeben Produktnummer konnte kein Produkt gefunden werden.\n"); + return ERRORRETURN; +} + +int find_customer_index(int id, struct Customer* array[]) { + for (int i = 0; i < ARRSIZE; i++) { + if (array[i] != NULL && array[i]->id == id) { + return i; + } + } + errno = ENOCUSTOMER; + printf("Mit der eingegeben Kundennummer konnte kein Kunde gefunden werden.\n"); + return ERRORRETURN; +} + +int add_product(struct Product* products[]) { + int id, amount; + char name[100]; + double price; + + printf("**********************\n"); + printf("* WWS Produkteingabe *\n"); + printf("**********************\n"); + printf("Bitte geben Sie eine Produktnummer ein: "); + scanf("%d", &id); + printf("Bitte geben Sie einen Produktnamen ein: "); + scanf("%99s", name); + printf("Bitte geben Sie einen Preis für das Produkt ein: "); + scanf("%lf", &price); + printf("Bitte geben Sie die aktuelle Anzahl im Inventar: "); + scanf("%d", &amount); + + struct Product* new_product = (struct Product*)malloc(sizeof(struct Product)); + if (!new_product) { + printf("Fehler beim Speicher zuweisen."); + errno = ENOMEM; + return ERRORRETURN; + } + + new_product->id = id; + new_product->name = strdup(name); // Duplicate string to avoid issues. + new_product->price = price; + new_product->amount = amount; + + int index = find_first_free_product(products); + if (index == -1) { + free(new_product); + printf("Kein freier Platz für Produkte."); + errno = ENOMEM; + return ERRORRETURN; + } + + products[index] = new_product; return 0; } + +int add_customer(struct Customer* customers[]) { + int id; + char name[100]; + + printf("*********************\n"); + printf("* WWS Kundeneingabe *\n"); + printf("*********************\n"); + printf("Bitte geben Sie eine Kundennummer ein: "); + scanf("%d", &id); + printf("Bitte geben Sie einen Kundennamen ein: "); + scanf("%99s", name); + + struct Customer* new_customer = (struct Customer*)malloc(sizeof(struct Customer)); + if (!new_customer) { + printf("Fehler beim Speicher zuweisen."); + errno = ENOMEM; + return ERRORRETURN; + } + + new_customer->id = id; + new_customer->name = strdup(name); // Duplicate string to avoid issues. + + int index = find_first_free_customer(customers); + if (index == -1) { + free(new_customer); + printf("Kein freier Platz für Kunden."); + errno = ENOMEM; + return ERRORRETURN; + } + + customers[index] = new_customer; + return 0; +} + +int print_product(struct Product* products[]) { + int id; + + printf("**********************\n"); + printf("* WWS Produktausgabe *\n"); + printf("**********************\n"); + printf("Bitte geben Sie die gesuchte Produktnummer ein: "); + scanf("%d", &id); + + int index = find_product_index(id, products); + if (index == ERRORRETURN) { + return ERRORRETURN; + } + + struct Product* product = products[index]; + printf("======================\n"); + printf("Produktnummer: %d\n", product->id); + printf("Name: %s\n", product->name); + printf("Einzelpreis: %.2lf\n", product->price); + printf("Anzahl: %d\n", product->amount); + printf("Gesamtpreis: %.2lf\n", product->price * product->amount); + + return 0; +} + +int print_customer(struct Customer* customers[]) { + int id; + + printf("*********************\n"); + printf("* WWS Kundenausgabe *\n"); + printf("*********************\n"); + printf("Bitte geben Sie die gesuchte Kundennummer ein: "); + scanf("%d", &id); + + int index = find_customer_index(id, customers); + if (index == ERRORRETURN) { + return ERRORRETURN; + } + + struct Customer* customer = customers[index]; + printf("=====================\n"); + printf("Kundennummer: %d\n", customer->id); + printf("Name: %s\n", customer->name); + + return 0; +} + +int menu(struct Customer* customers[], struct Product* products[]) { + int input; + + printf("**********************\n"); + printf("* TH Warenwirtschaft *\n"); + printf("**********************\n"); + printf("Optionen:\n"); + printf("1. Produkteingabe\n"); + printf("2. Kundeneingabe\n"); + printf("3. Produktausgabe\n"); + printf("4. Kundenausgabe\n"); + printf("5. Verlassen\n"); + printf("Eingabe: "); + scanf("%d", &input); + + errno = 0; + + switch (input) { + case 1: + add_product(products); + if (errno != 0) {return ERRORRETURN;} + break; + case 2: + add_customer(customers); + if (errno != 0) {return ERRORRETURN;} + break; + case 3: + print_product(products); + if (errno != 0) {return ERRORRETURN;} + break; + case 4: + print_customer(customers); + if (errno != 0) {return ERRORRETURN;} + break; + case 5: + return EXITVAL; + default: + printf("Ungültige Eingabe. Bitte erneut versuchen.\n"); + break; + } + + return 0; +} + +int main() { + errno = 0; + int menuval = 0; + struct Customer* customers[ARRSIZE] = {NULL}; + struct Product* products[ARRSIZE] = {NULL}; + + while (menuval == 0) { + menuval = menu(customers, products); + } + + return errno; +}