From 87288717a221d84e0798c4cdefa0b93fadc0f427 Mon Sep 17 00:00:00 2001 From: RinRi Date: Tue, 20 Sep 2022 23:51:53 +0300 Subject: [PATCH] week3 --- week03/.clang-format | 2 + week03/Makefile | 13 +++ week03/a.out | Bin 0 -> 20856 bytes week03/ex1 | Bin 0 -> 20880 bytes week03/ex1.c | 33 ++++++++ week03/ex1.sh | 2 + week03/ex2 | Bin 0 -> 20672 bytes week03/ex2.c | 28 +++++++ week03/ex2.sh | 2 + week03/ex3 | Bin 0 -> 21240 bytes week03/ex3.c | 195 +++++++++++++++++++++++++++++++++++++++++++ week03/ex3.sh | 2 + week03/ex4 | Bin 0 -> 20880 bytes week03/ex4.c | 155 ++++++++++++++++++++++++++++++++++ week03/ex4.sh | 2 + 15 files changed, 434 insertions(+) create mode 100644 week03/.clang-format create mode 100644 week03/Makefile create mode 100755 week03/a.out create mode 100755 week03/ex1 create mode 100644 week03/ex1.c create mode 100644 week03/ex1.sh create mode 100755 week03/ex2 create mode 100644 week03/ex2.c create mode 100644 week03/ex2.sh create mode 100755 week03/ex3 create mode 100644 week03/ex3.c create mode 100644 week03/ex3.sh create mode 100755 week03/ex4 create mode 100644 week03/ex4.c create mode 100644 week03/ex4.sh diff --git a/week03/.clang-format b/week03/.clang-format new file mode 100644 index 0000000..5bf2f83 --- /dev/null +++ b/week03/.clang-format @@ -0,0 +1,2 @@ +BasedOnStyle: LLVM +IndentWidth: 4 \ No newline at end of file diff --git a/week03/Makefile b/week03/Makefile new file mode 100644 index 0000000..9dc6271 --- /dev/null +++ b/week03/Makefile @@ -0,0 +1,13 @@ +all: ex1 ex2 ex3 ex4 + +ex1: ex1.c + gcc $< -o $@ + +ex2: ex2.c + gcc $< -o $@ -lm + +ex3: ex3.c + gcc $< -o $@ -lm + +ex4: ex4.c + gcc $< -o $@ -lm diff --git a/week03/a.out b/week03/a.out new file mode 100755 index 0000000000000000000000000000000000000000..35d4d400257d0eea6af140f37898e813baafbf6e GIT binary patch literal 20856 zcmeHPeQ;dWb-(ZJu6E_Mq_rh~VH>Z(b_{e^mTY7hBfS1tdlmeJEyFMqc&vAyq#ahf z@_rcE3EMF;Y7c4_NKtJ^k#=LsZcN#g zC>z9bMRhzG6Kkg{Zb0Qg+pJi_+JWbujJyX(9Q$)VEvN1%lFzsHT75 zz(P}9-*vEKTz=c6ck>=q-*o$7m5RTnDy*V4o!Z~ArZt@mrBj*WP-v*LBh;}boX>{a zWfR!0RoFPDw(Z;}%p+oyn6@{BF-bO+3>BHE+k%Z@r~Q|5@82}?!0Mf^jP7==zT%0; z-|30mPaXDyKB>b*jGIm@)0@VA8#)_G+^W+&08`;Brorz89>i9i*ruucY?}su40sS* zby@;oDnC1?!Jh>l#8#a;0bEiIQnsvoA)dI^O7!1q^~O_a(VMevF<2}l`r|n<5KpJG z2`FJWB&eAySOf7?21sHkZuO=z@pS4i^mD09p%-W>pG~Y=XXO*|Os}93hfIgqw!M4P zW~)8Cw#2O|ajVO0d-zIWb@%MBl6KDSOXUl8u4l*QbT(u6#P_Fd`0pFYW>h;YM|Da? zbj-w`3uD6#YGCuoobpX5)yK!YRH}iaxKCj%Qg(|2N`CSyU&UeP5?@qu@uE~cecuh4 zNuSsB`Q*qf2S20ETN+=b@Xm-+u5m4oZg6l^CXWe665><^UODbhSK#WDFHO!=;4`!n z(6I{KUxDirB7Jbo>g0+4muNa{80a8Z@6j6A3;Qe zk98da5gXW#fp+NybLp%U8-u zq93-6o{XO2yf$_$dMY*?J@XuIBFF#w!o&omv6Io4A&PU6k?6~@`(wvi?xGkQiH^mL z(@;1+vhNh6^TPq=vEdgHw+op6$A(XSmzv`{;OJ=dW#j1WFT3w}`Z?A#z5v+C=xLUp zYaNN6p29KxJYDH$x%6`yeonjZ`2NZ0Yts7Kk?3nvSVzavn(+}ad~*C(?8wNz@nKUz z^qi>l{OEtNg|ET$YwkO~4XrUWe%uBsdjR7Pld&sWWW)-d@iYov!cZ=a^U}y>i)yJB zfm#G=5vWC=7J*s>Y7wYKpca8z1ZolZ{}Tbe8CpIV6w8zN58`HZp=&+gz48VaC-;RxvO@AUU} z`kOX>^T#yPA*Bxh@oG(`arKeq0wwG3`W7mg_gqXDIYj91`*@$mq{~0JFp;G^$~V49 zrElaEqrZ(CQ{{Za$n?5Hg#I>fzLMuCs);faQRN>gS+`qN^Lr=y`|;|E zJLFxt5L*?!UeR7f4=Q@MqS{`6x4CWe=Bt7$@pbZL!M65rdw7*rP?XOSoPFd(TCXdR z&jhM;DRMlSVl8sLXNZ=QQ{I5+PF;RAR86t7T&~(ZSGmyRd}?bU9Qy+$`?<0XYBNgd|Vb0s$8h`AZ0T=oMzZ=u;zppAcmfGwulE^It-U54** zICGianJ99(z3V9XylY5|x+g$9dyp9`=3Pv6)ALmj&j>PO<)Y=}zli~8T-K5X-{kh- zV`bs#W%1>6xrban&kD!a)AaQyl+BBpZ$XKthxq*FjpUC}bwNuH`F`>jwdBdah|Ilo z_TwOdneK6S{RMEoQ?PXZySwpO2*UScO6MHO?Teuw?w>i5Pt2N)?z?~PcD)2m^s5!R z^>>561k4PE)Ws$)h2(O($EA|{FDL~(eAwg)xW5kKd4$;_*zuLF@)9Rnk)Y7hoNlYsXmEZtuNXD~A#Cboi&eUun8^Y4i* zVSk<@#>{+)*m`2G5@Tk*iOgTeR(U^I$u>NL)_8xdT6GkN_rs=V82P$Cr1?iJ53}+* zI`n?hd^Ie6!u@ZM3}$8s7PDUgx5(=@d>k{r_o!NDI4*tvLjPXF@##B2$!9cjC%JvU zp=P}?=MsALeT!u?oU-}Cy%xR%(sc%NxgH#n3-I0<2{JXJwc3_S&yC@+;wI%xd+KDCifk3pCk7Ixi)fV z$gL;Gu$obF42QXk+(YDUB=;n_1i4e>2FSfZ?lyAg$$goe8<{zR%+m(Ud$AnX{-dbH z?OnnhRLA&xmp1(wcxXKV;{D?6N5D4+yl;Ab0eR;8$ljVE*{#qX^P7nD%vXWF?dND0 z^V86QqL2?KY~$hoBIiB^lfv|k-OgYpllXYy0G!A#s{==mn^;v9M5V$ z!e*|6x-rkc9z1q<5CqBPoSoc!NGz6Mqk}Kg!7OAm0mNWdK9OpbKcxzXOb9CRNh+`m z%$sG*ZgMp)Y+T;hjB~dc7Out(3kX8pXcGRVzV2q=YXymGneh9s@w*z)pA{1E%!R>K z{`LNKek#;8REV9Jw0N5VT#eb2PnCG6$dY=)=x#P(Gh-<{wF2=s8?HvbUwT{WW6?}$ zwA8EJH>`xWMNn;=WuU=+*OG-x0+`A)sdnM=5@74n`s{Z{NIf z_@_W_gmVwhaQI+O7>4n2BhJG}lqA42tPq@zn#K~d$>eS}WG3oOeIa#q8oOM9@TNt~S@qLcfWXSjJ%}(|L|YQ#r5apyVa(Hf(oc;|RYG+mqN{!1jG?vf>$Az!^WL z_%1TnFPXW}Mt40jR|_)FVq|sH^YQ}bYX`^LF9)5nc7wG$-QocvWR_4?zimKP!P1Z! z0;1RVxHcHuw->uwO{@Vjfa~dx>j%QP7H1#BxcPrr&01C?Gq}^UBiHBPje!QHXGpFq z6c!G*<`3nQ_F%phtLQAOs*~%e!h1#Q{$eVfZ0+MZsn&chp}0i8$n|c)jeCRb;nnLf zr*u|439PNUHJ(i7xXP+R$i#DlSQ=HttY&q)RS@}9ro-w@XKzbodMosbT(w1|whk)w zXLE%hCqiYfgF}vOK9L=?tyGc{7KII@(uYJe-P^Iox*?lOicEhp=O_-s2N!*zzM?>l z@q*a1H+r45d9Sr~`^Ih7&Ry1?=-!@^O>d4cs^eL&L@aERXD+SVkUW6G2AEPg}91( zse(!2Po{;nDVt3T)mrW(y~FKn1~nB94ced8q4mv7KPdn zGuhB!x&X!=O4x&iR5p``AQu#d66tupKQx%j7VHE|P>|@Ykh^+|=`_FrJJ)B2u+A`) zfO#RFDbPnQTg)U=nLf0z&|mVYyk&D}RF0!YHX)H6z^XvHf^Nvpw9{RwOsbHIr$hFT%~g)rAMyyo9$>h*2lTio?+Xm_(qLTOE^>MMfR)JOfQ$F# zt^KKr(oQJG_ou8vysvDI#goplv{N2NY7dvoe1q{kU zrY!M1M-f#LR8dx}T>z6}F?XKiQw4NT#S?_lTdb}OAXuiT@1wo?65^Yzpf3d;uf70a znl*jmWzH?$pQzU01dnS}^&B#&6nOtWl|CCe6}}RnZ7H zwm1{i9?Ep8IGmLFb42y?pVQI|^Ri&sp4`7;Gw{?*KVQ?OAAwPiJ~Slh392uMI2n`_bYup z(_Nto-c|Z~d}{q)DE$YNWBH8?3V$tetyQK0Ot0CmYCnsB2g_;bUe9h72CM{^zUOfjNoK9SbasC{Z6yoY9Htt@ zA%V-@VA?L&Nlp-_(%|y^loikA;)g6dQ^*~{+J4MntYmRu;1EnIBwYDYg-NRRP+KUD z23gkDJsWpKt?14z7FOJExpC*l9o?G&V=7@qW2!W^Wsk77ZQr#CGp=1*x9*MhSUnpz zZI4>==L8~p`9Ih9tDhE_gnjDw1xls(ae&YKK>%A$t7K2nCOPvc{ggq;$r|gDV zCVtpJ2bI5gpm%%K?;TYB%0kIpHlKS;h;aVUKq0;#w2*UXzvgfSv~gn)mRD~~+`^bW z4cfWFp$bUefP^s9ceFNc>JD+T5~g}T=5HdLJd{Bd4lU%Il7n_Gj~U%0!9rQiPRD7W zI7|&iST-|Uu!q2NJfbWs_gUEPS0j+~ppxWRI788~&^#PtTAe_xS@=R0mK8Y85O)#g zL=XcVjpYOdcJWLf4j(1TyCGe)e}B$Cs7pAT)jXo7S;E+vB{`SDomw7Kn*W8w8+n|H zaIJLGeD%yoQ$FXfOw_GRmqOsX9BtpJ>@|&4Duc(9bkE!-+8dL#eAIWNa{az~t zj3&B%JfLurqOU7alj`^%Kmp%B+%Bo)sb;cZi_OewLRYyRoX{_j<%+ZZ)MW^Ph+ow!P8xN3=q@r zyY=rxRqJb6)3;#5KB~j6bRTdgL~rHs;z(s#+n+-L$Bwqw^Yha0ez9{%YB-k0pWcsr z>_`=DuYW&hw3SvutaL~z*Y#@3`Fy3lp6`z<`&h}+VYHp5c-l9~UeBLbt#b5rJGC2a zSCU~*Ot(K0aY`b}zFMDctxOH7ex+V2()QJJZf&pWTxDM}RLm{P;rXh9K$X0F8vEUC zj^cg#e5&kpz1mINH1_ZC!i2|Us{NNjY{sU? mlfEw11Jh&Av2gPKEe^e*%6WDDv!=0sZmVN|u*#rH6#os4>cVdT literal 0 HcmV?d00001 diff --git a/week03/ex1 b/week03/ex1 new file mode 100755 index 0000000000000000000000000000000000000000..de6b5ff780ce02f6ac970283ec8598160251a589 GIT binary patch literal 20880 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 jczWzP7EXR-ivzE#a9&wH=eOzXf4J4LKUiT +#include +#include + +int foo(int age) { + int result; + + time_t t = time(NULL); + result = localtime(&t)->tm_year + 1900 - age; + + return result; +} + +int main() { + const int x = 10; + const int *q = &x; + const int *const p = malloc(sizeof(int) * 5); + for (int *i = (int *)p; i < p + 5; ++i) { + *i = x; + printf("%p%c", i, (i < p + 4 ? ' ' : '\n')); + } + + for (int *i = (int *)p; i < p + 5; ++i) { + scanf("%d", i); + } + + for (int *i = (int *)p; i < p + 5; ++i) { + *i = foo(*i); + printf("%d%c", *i, (i < p + 4 ? ' ' : '\n')); + } + + free((int *)p); +} \ No newline at end of file diff --git a/week03/ex1.sh b/week03/ex1.sh new file mode 100644 index 0000000..1192c72 --- /dev/null +++ b/week03/ex1.sh @@ -0,0 +1,2 @@ +gcc ex1.c -o ex1 +./ex1 \ No newline at end of file diff --git a/week03/ex2 b/week03/ex2 new file mode 100755 index 0000000000000000000000000000000000000000..c46d35d1f62fcbf7ea358c9206546790b880735d GIT binary patch literal 20672 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 +#include + +typedef struct Point { + float x, y; +} Point; + +float distance(Point p1, Point p2) { + return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)); +} + +float area(Point A, Point B, Point C) { + return 0.5 * fabsf(A.x * B.y - B.x * A.y + B.x * C.y - C.x * B.y + + C.x * A.y - A.x * C.y); +} + +int main() { + Point A = {2.5, 6}; + Point B = {1, 2.2}; + Point C = {10, 6}; + + float f = distance(A, B); + printf("A -- B distance is %f\n", f); + + + float a = area(A, B, C); + printf("Area of triangle ABC is %f\n", a); +} \ No newline at end of file diff --git a/week03/ex2.sh b/week03/ex2.sh new file mode 100644 index 0000000..c30d5a0 --- /dev/null +++ b/week03/ex2.sh @@ -0,0 +1,2 @@ +gcc ex2.c -o ex2 -lm +./ex2 \ No newline at end of file diff --git a/week03/ex3 b/week03/ex3 new file mode 100755 index 0000000000000000000000000000000000000000..71970d27da50ddef55dfc05f5ea2509a659a1dfe GIT binary patch literal 21240 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 +#include +#include + +struct Directory; +struct File; + +struct File { + int id; + unsigned long size; + char data[2048]; + char name[64]; + + struct Directory *directory; // The parent directory +}; + +struct Directory { + int nf; + int nd; + char path[4096]; + + struct File *files[256]; + struct Directory *directories[8]; +}; + +typedef struct Directory Directory; +typedef struct File File; + +// Operations on files +void add_to_file(File *file, const char *content); +void append_to_file(File *file, const char *content); +void pwd_file(File *file); + +// Operations on directories +void add_file(File *file, Directory *dir); +void add_dir(Directory *dir1, Directory *dir2); // given to you + +// Helper functions +void show_dir(Directory *dir); +void show_file(File *file); +void show_file_detailed(File *file); + +void init_dir(Directory *dir, char *name); +void init_file(File *file, char *name); + +int cur_id = 0; + +int main() { + + char content1[] = "int printf(const char * format, ...);"; + char content2[] = "int main(){printf('Hello World');}"; + char content3[] = "//This is a comment in C language"; + char content4[] = "Bourne Again Shell!"; + + Directory home, bin, root; + init_dir(&root, "/"); + init_dir(&home, "home"); + init_dir(&bin, "bin"); + + // Example: the path of the folder home is /home + + // Add subdirectories + add_dir(&home, &root); + add_dir(&bin, &root); + + File bash, ex31, ex32; + init_file(&bash, "bash"); + init_file(&ex31, "ex3_1.c"); + init_file(&ex32, "ex3_2.c"); + + // + + add_file(&bash, &bin); + add_file(&ex31, &home); + add_file(&ex32, &home); + + add_to_file(&bash, content4); + add_to_file(&ex31, content1); + add_to_file(&ex32, content3); + + append_to_file(&ex31, content2); + + show_dir(&root); + show_file_detailed(&bash); + show_file_detailed(&ex31); + show_file_detailed(&ex32); + + pwd_file(&bash); + pwd_file(&ex31); + pwd_file(&ex32); + + return EXIT_SUCCESS; +} + +// Helper functions + +// Displays the content of the Directory dir +void show_dir(Directory *dir) { + printf("\nDIRECTORY\n"); + printf(" path: %s\n", dir->path); + printf(" files:\n"); + printf(" [ "); + for (int i = 0; i < dir->nf; i++) { + show_file(dir->files[i]); + } + printf("]\n"); + printf(" directories:\n"); + printf(" { "); + + for (int i = 0; i < dir->nd; i++) { + show_dir(dir->directories[i]); + } + printf("}\n"); +} + +// Prints the name of the File file +void show_file(File *file) { printf("%s ", file->name); } + +// Shows details of the File file +void show_file_detailed(File *file) { + printf("\nFILE\n"); + printf(" id: %d\n", file->id); + printf(" name: %s\n", file->name); + printf(" size: %lu\n", file->size); + printf(" data:\n"); + printf(" [ %s ]\n", file->data); +} + +// Implementation: Operations on files + +// Adds the content to the File file +void add_to_file(File *file, const char *content) { + if (file && content) { + strcpy(file->data, content); + file->size = strlen(file->data) + 1; + } +} + +// Appends the content to the File file +void append_to_file(File *file, const char *content) { + if (file && content) { + int sz = strlen(file->data); + strcpy(file->data + sz, content); + file->size = strlen(file->data) + 1; + } +} + +// Prints the path of the File file +void pwd_file(File *file) { + if (file) { + printf("%s/%s\n", file->directory->path, file->name); + } +} + +// Implementation: Operations on directories + +// Adds the File file to the Directory dir +void add_file(File *file, Directory *dir) { + if (file && dir) { + dir->files[dir->nf] = file; + dir->nf++; + + file->directory = dir; + } +} + +// Given to you +// Adds the subdirectory dir1 to the directory dir2 +void add_dir(Directory *dir1, Directory *dir2) { + if (dir1 && dir2) { + dir2->directories[dir2->nd] = dir1; + dir2->nd++; + + int sz1 = strlen(dir1->path), sz2 = strlen(dir2->path); + if (dir2->path[sz2 - 1] == '/') { + memmove(dir1->path + sz2, dir1->path, sz1 + 1); + } else { + memmove(dir1->path + sz2 + 1, dir1->path, sz1 + 1); + *(dir1->path + sz2) = '/'; + } + memcpy(dir1->path, dir2->path, sz2); + } +} + +void init_dir(Directory *dir, char *name) { + dir->nd = dir->nf = 0; + strcpy(dir->path, name); +} + +void init_file(File *file, char *name) { + file->data[0] = '\0'; + file->id = cur_id++; + strcpy(file->name, name); + file->size = 0; +} diff --git a/week03/ex3.sh b/week03/ex3.sh new file mode 100644 index 0000000..c56587a --- /dev/null +++ b/week03/ex3.sh @@ -0,0 +1,2 @@ +gcc ex3.c -o ex3 +./ex3 \ No newline at end of file diff --git a/week03/ex4 b/week03/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..ce1f90850ab15baa871b7a70d67d664e4e28a1e0 GIT binary patch literal 20880 zcmeHPdvILUc|Z5=u6AWv4_khMjn{yQA<@b*#>g?k>&M!wM1Ek)AuxpN_3o9llhv-+ z2gnc##32(!aZ8#f6Q*PSpmCZ>Lk3dJBSjPfh9()4N9#5aL?&tFI3W&�eDj_dAc> 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 literal 0 HcmV?d00001 diff --git a/week03/ex4.c b/week03/ex4.c new file mode 100644 index 0000000..8cc5256 --- /dev/null +++ b/week03/ex4.c @@ -0,0 +1,155 @@ +#include +#include + + +void* aggregate(void* base, size_t size, int n, void* initial_value, void* (*opr)(const void*, const void*)); + +void* addInt(const void* a, const void* b){ + int *result = malloc(sizeof(int)); + *result = *(double*)a + *(int*)b; + return result; +} + +void* addDouble(const void* a, const void* b){ + double *result = malloc(sizeof(double)); + *result = *(double*)a + *(double*)b; + return result; +} + +void* mulInt(const void* a, const void* b){ + int *result = malloc(sizeof(int)); + *result = *(double*)a * *(int*)b; + return result; +} + +void* mulDouble(const void* a, const void* b){ + double *result = malloc(sizeof(double)); + *result = *(double*)a + *(double*)b; + return result; +} + +void* meanInt(const void* a, const void* b){ + double *result = malloc(sizeof(double)); + *result = (*(double*)a + *(int*)b) / 2.0; + return result; +} + +void* meanDouble(const void* a, const void* b){ + double *result = malloc(sizeof(double)); + *result = (*(double*)a + *(double*)b) / 2.0; + return result; +} + +void* aggregate(void* base, size_t size, int n, void* initial_value, void* (*opr)(const void*, const void*)){ + + void* output; + + if (size==sizeof(int)){ // base is a pointer to an integer + if (opr == meanInt) { + output = malloc(sizeof(double)); + *(double *)output = *(double*)initial_value; + for (int i = 0; i < n; ++i) { + double* res = opr(output, ((int*)base) + i); + *(double*)output = *res; + free(res); + } + } else { + output = malloc(sizeof(int)); + *(int *)output = *(int*)initial_value; + for (int i = 0; i < n; ++i) { + int* res = opr(output, ((int*)base) + i); + *(int*)output = *res; + free(res); + } + } + }else{ // base is a pointer to a double + for (int i = 0; i < n; ++i) { + double* res = opr(output, ((double*)base) + i); + *(double*)output = *res; + free(res); + } + } + + return output; +} + + + + +int main(){ + + int* ints = malloc(sizeof(int)*5); + double* doubles = malloc(sizeof(double)*5); + + double *init_mult = malloc(sizeof(double)); + double *init_add = malloc(sizeof(double)); + double *init_mean_int = malloc(sizeof(double)); + double *init_mean_double = malloc(sizeof(double)); + *init_mult = 1; + *init_add = 0; + *init_mean_int = ints[0]; + *init_mean_double = doubles[0]; + + // Addition + + int* result1a; + + result1a = aggregate(ints, sizeof(int), 5, init_add, addInt); + + printf("%d\n", *result1a); + free(result1a); + + double* result2a; + + result1a = aggregate(doubles, sizeof(double), 5, init_add, addDouble); + + printf("%f\n", *result2a); + free(result2a); + + + // Multiplication + + int* result1m; + + //; + result1m = aggregate(ints, sizeof(int), 5, init_mult, mulInt); + + printf("%d\n", *result1m); + free(result1m); + + double* result2m; + + result2m = aggregate(doubles, sizeof(double), 5, init_mult, mulDouble); + printf("%f\n", *result2m); + free(result2m); + + + // Mean + + double* result1mean; + + result1mean = aggregate(ints, sizeof(int), 5, init_mean_int, meanInt); + + printf("%lf\n", *result1mean); + free(result1mean); + + double* result2mean; + + result2mean = aggregate(doubles, sizeof(double), 5, init_mean_double, meanDouble); + + printf("%f\n", *result2mean); + free(result2mean); + + + // free the pointers + //; + free(ints); + free(doubles); + free(init_add); + free(init_mult); + free(init_mean_double); + free(init_mean_int); + + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/week03/ex4.sh b/week03/ex4.sh new file mode 100644 index 0000000..a8c4a2c --- /dev/null +++ b/week03/ex4.sh @@ -0,0 +1,2 @@ +gcc ex4.c -o ex4 +./ex4 \ No newline at end of file