From d6adcd16f4b66851af394e0a7c712722a1f540e3 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Mon, 25 Feb 2019 17:37:11 -0500 Subject: [PATCH 1/8] create array method finished --- arrays/arrays.c | 56 +++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/arrays/arrays.c b/arrays/arrays.c index 48c23e7..3550b76 100644 --- a/arrays/arrays.c +++ b/arrays/arrays.c @@ -3,13 +3,13 @@ #include #include -typedef struct Array { - int capacity; // How many elements can this array hold? - int count; // How many states does the array currently hold? - char **elements; // The string elements contained in the array +typedef struct Array +{ + int capacity; // How many elements can this array hold? + int count; // How many states does the array currently hold? + char **elements; // The string elements contained in the array } Array; - /************************************ * * CREATE, DESTROY, RESIZE FUNCTIONS @@ -19,32 +19,36 @@ typedef struct Array { /***** * Allocate memory for a new array *****/ -Array *create_array (int capacity) { +Array *create_array(int capacity) +{ // Allocate memory for the Array struct + Array *arr = malloc(sizeof(Array)); // Set initial values for capacity and count + arr->capacity = capacity; + arr->count = 0; // Allocate memory for elements - + arr->elements = malloc(capacity * sizeof(char)); } - /***** * Free memory for an array and all of its stored elements *****/ -void destroy_array(Array *arr) { +void destroy_array(Array *arr) +{ // Free all elements // Free array - } /***** * Create a new elements array with double capacity and copy elements * from old to new *****/ -void resize_array(Array *arr) { +void resize_array(Array *arr) +{ // Create a new element storage with double capacity @@ -53,11 +57,8 @@ void resize_array(Array *arr) { // Free the old elements array (but NOT the strings they point to) // Update the elements and capacity to new values - } - - /************************************ * * ARRAY FUNCTIONS @@ -69,18 +70,19 @@ void resize_array(Array *arr) { * * Throw an error if the index is out of range. *****/ -char *arr_read(Array *arr, int index) { +char *arr_read(Array *arr, int index) +{ // Throw an error if the index is greater than the current count // Otherwise, return the element at the given index } - /***** * Insert an element to the array at the given index *****/ -void arr_insert(Array *arr, char *element, int index) { +void arr_insert(Array *arr, char *element, int index) +{ // Throw an error if the index is greater than the current count @@ -91,13 +93,13 @@ void arr_insert(Array *arr, char *element, int index) { // Copy the element and add it to the array // Increment count by 1 - } /***** * Append an element to the end of the array *****/ -void arr_append(Array *arr, char *element) { +void arr_append(Array *arr, char *element) +{ // Resize the array if the number of elements is over capacity // or throw an error if resize isn't implemented yet. @@ -105,7 +107,6 @@ void arr_append(Array *arr, char *element) { // Copy the element and add it to the end of the array // Increment count by 1 - } /***** @@ -114,7 +115,8 @@ void arr_append(Array *arr, char *element) { * * Throw an error if the value is not found. *****/ -void arr_remove(Array *arr, char *element) { +void arr_remove(Array *arr, char *element) +{ // Search for the first occurence of the element and remove it. // Don't forget to free its memory! @@ -122,25 +124,25 @@ void arr_remove(Array *arr, char *element) { // Shift over every element after the removed element to the left one position // Decrement count by 1 - } - /***** * Utility function to print an array. *****/ -void arr_print(Array *arr) { +void arr_print(Array *arr) +{ printf("["); - for (int i = 0 ; i < arr->count ; i++) { + for (int i = 0; i < arr->count; i++) + { printf("%s", arr->elements[i]); - if (i != arr->count - 1) { + if (i != arr->count - 1) + { printf(","); } } printf("]\n"); } - #ifndef TESTING int main(void) { From 4be4716d624d1d1aff4311e8846061f4dda2adca Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Mon, 25 Feb 2019 17:56:21 -0500 Subject: [PATCH 2/8] added delete array functionality --- arrays/arrays.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arrays/arrays.c b/arrays/arrays.c index 3550b76..98a80e0 100644 --- a/arrays/arrays.c +++ b/arrays/arrays.c @@ -39,8 +39,10 @@ void destroy_array(Array *arr) { // Free all elements + free(arr->elements); // Free array + free(arr); } /***** From feebdc0964e717dce21d22f4c7ff9f5aa310ab1e Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Mon, 25 Feb 2019 18:56:03 -0500 Subject: [PATCH 3/8] Finished resize method --- arrays/a.out | Bin 0 -> 8760 bytes arrays/arrays.c | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 arrays/a.out diff --git a/arrays/a.out b/arrays/a.out new file mode 100644 index 0000000000000000000000000000000000000000..1411563a3a84f1c36852a1db4acefc7ee5827449 GIT binary patch literal 8760 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 = malloc(capacity * sizeof(char)); + return arr; } /***** @@ -53,12 +54,20 @@ void resize_array(Array *arr) { // Create a new element storage with double capacity + char *doub_arr = malloc((arr->capacity * 2)); // Copy elements into the new storage + for (int i = 0; i < arr->count; i++) + { + doub_arr[i] = arr->elements[i]; + } // Free the old elements array (but NOT the strings they point to) + free(arr->elements); // Update the elements and capacity to new values + arr->elements = doub_arr; + arr->capacity = arr->capacity * 2; } /************************************ From 934f9cf4a141c451bb79935f513f6b95e8aeeb42 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Tue, 26 Feb 2019 16:52:46 -0500 Subject: [PATCH 4/8] Added array read and array insert methods --- arrays/a.out | Bin 8760 -> 12896 bytes arrays/arrays.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/arrays/a.out b/arrays/a.out index 1411563a3a84f1c36852a1db4acefc7ee5827449..7b1525588394f1513c09caa26230f2d0bd961398 100644 GIT binary patch literal 12896 zcmeHNeQ;FO6~CKJAo8(U5D*3BVWEPSH6VmUrDj7myl8?E6K$*Exyf$G+GID~eQOg2 zDV?BYjnPcUcIb@lMBC|9{X>~)r;N5kVyHl;orz8zot9d3w38@~sK7)U*#6Fa_w2rX z*=XD8pSd${&pp5ManC*XW8cU9UZAd~z~vHL+~VtkxWQQ#QmF*mb*chVDayqq_`Omr z7o=7wF-u-)5lF2vpm8Go>74@<^ECM=xS8{oU|G;Dojb2O2d0*i0XfuE7>V@ zj|B^+Y^J!*-EG^OWJ@&OoLY)`5iY_={?vv~jXRe4|L{yQee=8HUo}Vi{mo>{7pnhp zse|UiJlcz=!JC0=dGsm%e12#eOwdnjdoV7#;*qG?COU&19kEtn7_Hqwqb(8*c0_iE!IG(wFoSW^ z=nO`pqAeZ{i*0qaRa=b>z74)j!l-SmH$vffcvmE0hU1O(TRURWaAUBggUokz#-hsH zuvGIZ(tMy9LBCA1bHs(wr}5``n!F-%2}$puzM=5C<@Gi=+rkg3^~v~s3NO|)slYh% zZ?3R#T01l!xty}$_H{L8!j$;PBGQ}UfYPf?{Fbb! zM2+}%vKv2@Mp=D7@zjO!QOUOuPoa+wN&Z{JQ)^feF1YFwxg^I_0Ixu}b7c zh`zvS{h*#YHuk7gdYMFessTeBm^d+_TzU1>gVI{>t1Kqv6{IXRkBwc5`aniigX$PW zV|~IkWO?48nm-meOD%p-N@DWV*K}5IeN7*J$E~|Y^**7ehWi45P)881(bOLgczXk9 zUD91;VMXBVo}+9_QT*hBi~_!zIA%24zetc$%9{;J#-B=_CBJ>r(cU>nXeN&R(sF^$ zO${g0r&8IcRPt1+>0~CBlkB2ZMbXz#D21Zp<-Hg-bP*x`6Ma7xn2`Ohkf3a6g8SV+ zj|M|!L!!MeyR3|0C|r7~pf@m)O~Az7m!N(s6`1S`Oj?PuZ0k?ztta&1w~@)?x*Xs! zbhN)gnx+~GITtjJspOe~W@~62EG7+g^~gPxn%gER^hp_dZ8k_Wn=@puU?J>BE)SF9 zSQ(5+7mfFhxheva=A0v6Bf*7#rPIBE$!u39_dEy7dRUHq3>gR5d)jM_Oc|wBP1+a9 zH&)t8Xj4{0JpKANEm6=_nD}UTf>mcJyh5qI2%cP=Cju8M*#+uC*+Tq=62D~=ziq33 zfd0vzo*2n)1#}TC`Un$f}RHb3+NM| zZ(&dhk+ikw@hZ?p&}z_e&=BYvjL&}1bD+NfEku@%g3@;IF6fUz3$eR5BDt$TkAil9 z()}D2*X|v{)$MgHn>V|7z%|=T_;Ot3XrJy?xa8LtVigof|G;PIbQdXmyfvPsx0cNP zZt*^G%M~|Wd&8=$2_}1Nk75*h_Ww7sy%*POXzw;q;rDnSF4#JMRzVFSvV89We1YR( zd7Bi=wx5K&7Lelz6PK;CP&FW8&$e=p>ZK>mD={8=fdob7>}#yL##Dv$T^f-29_$J_yr)?ZlV zS@UR-?kRnEmhLIISOO_fK39`vg`#qz$4=0yYiVEAXsOa^8$Fq46q z49sL;CId4Wn90CQ24*ralYyBG%w%9D1OG(^_&WxFx4;Abc-j&R{>HIX@$}uz zUX&X#puR)!y90jV&+mo!+sb9ixLXCn_~AlJ!0&#BlpcT6;P$UlIP2lHjO-usDIvVh zviht1;dK_vrR5pL?^bfWZjy5DhjRaaBm7<2>99;CzDCiz6m3)V0Yx8H)M@`^Jbw?{ zwsq@`+M1@8WYkP*n|(LN)F{9WI!?#4S!{vMu- zyM@UU!X|Lzi!#qg8w~$Ng6Cl_K1=X?&BbR69>-j~SR7R2n~Pr}c%J3ra|F-FTzszJ zb(xFL6Iz~eaf|t4ATRF8oWIERQzCes=i**5$P3RVaEk?*^8+>*d0QxS-bic$x41O( zUDXCdf05w*A{Sqba}k;yl6ALOl3Cw&p<7@zYx(q-3U6MVceAV)+6N28$LTC$)u=lK zc=J8#$S1uEC)~>$hcaBLaNcJXEHGRdT_b&CgMB-D|*WPLT|8N@okn;Zz^+zP%(Zl~sz$qT*{67v{v$~k``-bv!PR-lvl=MB| z3koh1ykE1?CxoK~-UoO)b73H8Tr@Q<@|{177D$|}vvjr6A64;}DA7xxUaX6ynwC{Y zZCJ%QsMa0FS*rXDJN(=PocuV)Wt-A(Q8yIUJQku(;b+x&$!{uX_il;jgd&*;aLSL< ze-gMhRb4y|{OUaTT;L0FH{;yTpOd&p{6@tizX8Gi*9w1Djn{4Lvo&re%w$`euT^AE z%ot{;(Mo4#5;!jtiW$2)VlBZABV@+n2_u;77Ok<)u8y!74*52hRg~pdq9Z#IBN&ed zdyH_@jQ8N6POvjNb}D5|Wq zpD0o%lXAf?I%Y)YnH<{TP|ysDcsPMmOjcjjK_`cv^L$gT7>P0D`6xt94y}_+U~-N% zg~ACl9_vxfKr<0D+Jn&$9e}F69X6pz)JP`6NMN?_GzjX@)zmiQ;m+6tVL{CYySlWheg3N2b!Kpv;&w%ozLsPJ=K~`l;Ulg+m}nQiP)`*8 zENaFr$phhdA`*+{Fa~7ta7T~~RIRJS6h4_lAF94xF|cO18^5#=pcIo6z!z>;Q@=d~ zC(K!_-Gt!EfX#V(+bm7DL>%^MkMf|^0dj7%|iF*XA@cl4Te*RKosmpbu zU%^FN3fuF2GgA#Rd*OYbvGu6f?fL$i=_*!K)M;N0{5+m{xP874XUg&ObE4W7GhVl& zMt?nQe^^zRYLpxl`um_N+w=3=UBKvBi|zTop6Sz&*^6?Qfp(%s&vb0h_y0_}9gd&% zn0_1f^o+S8 z&(Cd4i#agmhx5j6PoP4N4zz}-@O?g?_jc+t&-8WJ&^;jA^K;-qItY!zdKQ=E8GjoB z8Zx%$=S4nG&*$bd^HVwEair%ZntyE1?~MjlSc+Xrp9#0i^nD2I_L=){&9dNjoc7G0 zL4|yA`+Q&N)hrEe$KtHExK8vOE^5D&7+YccYi$@+NtcS9I)+%vD>X@krtUZCe}?Y8 oIUe5EXnu3-mWB0u-!&E;b~xvDS$6>{`RrG!z%R0*qE7pN1IccU;{X5v delta 3136 zcmZ`*4NTKV6u)b!?Z39tBG5vxA3!BlX{i}hSlH-9{FAVWZm9c^u+2DTVm1vX;9{6| zTT&Sr+cQ~NBx7b-h}ohUS>jhBRWiqx7)a(ejak^Du`HP3G#f#%dw0F71-5H?zk9#; z?%lhucmMI7r)zucSuINlFEvRZ)A=8+`XbbCN{SK*adCoT%{oNQTtsy7hQxMFl7Abl z)Rr|MtOkVDfElW2b5?;dY4ix;1Z{TzpU+m|vlYCW7qiQ~AFTgrll%6?Ya>@n4jw-B z!%}4!qMCJdBaCTm(CEv60&O2(fU9kp20uD@@lQWI1<(kX!W0M!%S~g>TMJrSTYPs!XTxVhgzL6ytGx!kn-jmgThQz<99%wnDx? zRwKWw;hR&9&oy-Gc4KF?+k6jws@>H=ghb9(>~ufVS<9&o6q?j--Cjhsa$1etYRkh( ztx{leNr_U)*zWSR3KZy_n!5(5)_Yb>7+iRa{A#%RGHW%lJ|?xR`g@e(W{fMYV)d;q zW`Otgej0=G`eJ$ve$%gM@IOo>)UFLU%;k6ywtGe{vF>W*;54JVNOv}2jfkaZM@kdf ze?Lu9Bm1W!O_M!4U`PpQF3!O{#p`(s*YGr3f%sQ*e1v#cO-49QD>uxx88571incij z8FM;o(K6nOMsn!zq~!wJfp{N_ErPM(_-C0foVXn|ELJB@h{xSsZWfe7P||dc^+416 zVv1*(Q*?1h@HaRQSB+MB1#TOiHCvG2F^^o@#djmLEwr^h@^h#uggfWS&EOkT%JA7x zWUfB)cZ2s9KXb7;ZQMT#o0dkN|M5X0F^nTTHk(LHBGw`vMSKQln1K=WA{HYKBeJRg zintST67e0xhlrmenlYGR!~(>dh@V2h6x0knfZZma&VYloK%c27zXn?dbT3N*HeSO2 zQ?qd0DsEH!o>2=~*vkeIEb&P`?Z@rLTXazkzfM>a)`I zPe0PnBEJPX%uX7DUaZUD4AwAs&HM&cWbSf7?+Rz(sJO%;jgy-qo8&RqSfXaQzQUpD zH^a;d9~}a(!%6#~-r=`K#f_I)qa7j+r**sVCzDka&Nw#Fc2Jy7+6-RjYg&9MV2tLt zmxw%Pa))b=lDSU004)AyIIl3XIUWj=4ix6PGK@wS%OiNyj(3hQVOj1}7QM#b7o zOE)$&WEpV*Ewa}O4|wu zVGxdZ-a*|q arr->count) + { + exit(1); + } // Otherwise, return the element at the given index + return arr->elements[index]; } /***** @@ -96,14 +101,29 @@ void arr_insert(Array *arr, char *element, int index) { // Throw an error if the index is greater than the current count + if (index > arr->count) + { + exit(1); + } // Resize the array if the number of elements is over capacity + if ((arr->count) > (arr->capacity)) + { + resize_array(arr); + } // Move every element after the insert index to the right one position + for (int i = 0; i <= arr->count; i++) + { + arr->elements[i + 1] = arr->elements[i]; + } // Copy the element and add it to the array + int new_element = element; + arr->elements[index] = new_element; // Increment count by 1 + arr->count++; } /***** From e1126e2aa1f823682c6179935a8efb049d2fd738 Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Tue, 26 Feb 2019 17:39:34 -0500 Subject: [PATCH 5/8] added append and remove functionality --- arrays/a.out | Bin 12896 -> 12896 bytes arrays/arrays.c | 36 ++++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/arrays/a.out b/arrays/a.out index 7b1525588394f1513c09caa26230f2d0bd961398..edc821fc25e04cbfbaa74a7975147cd5ed10cec3 100644 GIT binary patch delta 1214 zcmZvcZ)g-p7{+J+G`;NY=5is`_G*%=y^B@S3kcO*W8qe_I;ldf_R?ad{gBgANn?2&Ebj7KyS}p<)lacV65+bGK)tbYS;4 z^UgcZ`^@YgD`lldW|eaRQfcP`$L20Hb!gSmBH0;Xu6gs}JtvIb_a1bQnrGXFu08Dg zY3+}>F)<`JuBs!1X0_Zi9B=$1=cemqX+!#6n3`YM)ZA~;jA3U;+K~>byi3iz-SyaY z(YH*aoH5F@f3`A_p}tCPLZ)MM%3`PL!%Lsi$r}Z3?anRS*k<1gtK)_hIC2`Jyiw*e z8KVHfs#L<4Nfv1TRXTN3qQWfA^8~&u6wcd69=R^+nuc>XzL@Ut^z^jA-mYKD2I@n7 zpP%>aWVdp+wz*Zly99f@DG*}Ep)rXLu|GsFZ4?AAIc^jJU;ACx9hte9q~w2wR5=PelaSN45I4%h%47$hI9X!4^4y_5UTh3Wi*k+Cx;Idl zVh^b6OmHoleQg!8`2qVEDyj}bZC>a%FH}nncyX&-O`X7)OSl}6xLk>|-<6>3;n5AGcf@7}wAFvY(2uQ(*UD0P2|Y7Mvwj_Y0mQ$^Rk2M&YZ zfM4P;WSE@+BVYmS0ZrISftSI<;J4VoNzef=fhu0QdGIJGi-h#x8AZUK!2z(DzaMIg zc+FvZ)R_2+!;Y)%p&_{Np=zxyLuV(heML5>wu;{sSqT^~vXIs)wv^cGz`7FKp|$FF zV6307(;FJU5;tgd;s@%p(BcxyV59>^o53gZQb6Dde109`VfL%mCZySQ+@EJfZIh75 z=?#BrY^0@2oL6&KT5d~k&a24&Pm@R^x&OcMAgO)VPcM;36B*ZXrI*eM;tv6K=H&xo zhsKsiVxpz8ZIKHo#+srV#V$YF5j_y9Nz0ywfWvFTBO6lLpV62SQL6D~fh}*}DD< z(K$oAh2%!N<@Un3ZPu9o`a?R(ER+oI{Bh=Rnecj~TW(%nbzPo{2wl=Wwp43f&=Mj> z%;$4xd7zOdby`h*xHl<=yT3-erUGJkMf~eCl&FF!K5-JY;s-O-Z*-gb8A4ttwc`yL zdfm9KFPoO-kT=7K1K#++UTu>%bM2`ZX*q@aODm@4JGNe$H%>`nR5zT}vqii9-<(5O~5Feim%xaSM*#SQKc z8|I%gvYcDk^wb5Ov-cyM5YFC8h;Upu<_pgY0inYmah|qSk$@PfS9nwi+p@m!n%})5 zh7x-5RaO&!o}v#;0je{*`UqjlG<&W>M>)HWlq|=<7?=RxfrH>8Hc5*$xY2+E>;PNA zRWJzFVZZvppWtIqi>71XW^ft23u;;9VXY1@23`V7=!n_QHm2x|nP+dV)0Ej&I=3#% zdel@$IVPv@yiL*FmP$68qMd*~O?!aeG#vu&r|FobQt+W2PRSE2)*I|Tv+jUtlOm-^ zl%tKt|M;8Xucg~LJ9CRR;ax{haQm5dX_)(BmR@pa85*rAX^^s^fy>27@iM;oz!_^ple}%oXL$9HBL?Hin}YUA62vgLKEm>)G#GI?3|}wQ&fi g_=aLtQKg#-9*;ro7QOU%8VsT-uPd6QG0zkBH)S7AAOHXW diff --git a/arrays/arrays.c b/arrays/arrays.c index 7730327..318b047 100644 --- a/arrays/arrays.c +++ b/arrays/arrays.c @@ -134,10 +134,17 @@ void arr_append(Array *arr, char *element) // Resize the array if the number of elements is over capacity // or throw an error if resize isn't implemented yet. + if (sizeof(arr->count) > arr->capacity) + { + resize_array(arr); + } // Copy the element and add it to the end of the array + int new_element = element; + arr->elements[arr->count] = new_element; // Increment count by 1 + arr->count++; } /***** @@ -146,15 +153,36 @@ void arr_append(Array *arr, char *element) * * Throw an error if the value is not found. *****/ + void arr_remove(Array *arr, char *element) { - // Search for the first occurence of the element and remove it. // Don't forget to free its memory! - // Shift over every element after the removed element to the left one position - - // Decrement count by 1 + for (int i = 0; i < arr->count; i++) + { + if (arr->elements[i] == element) + { + int element_found = 0; + element_found = i; + arr->elements[i] = NULL; + free(arr->elements[i]); + + // Shift over every element after the removed element to the left one position + for (int i = element_found; i < arr->count; i++) + { + arr->elements[i] = arr->elements[i + 1]; + } + + // Decrement count by 1 + arr->count--; + } + else + { + printf("Element not found\n"); + exit(1); + } + } } /***** From 4532484aa0588fe66b5305890283e48734c88bbe Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Tue, 26 Feb 2019 18:47:00 -0500 Subject: [PATCH 6/8] changed malloc to calloc for resize function, fixed pointers for insert and append --- arrays/arrays.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arrays/arrays.c b/arrays/arrays.c index 318b047..9b61bd4 100644 --- a/arrays/arrays.c +++ b/arrays/arrays.c @@ -54,7 +54,7 @@ void resize_array(Array *arr) { // Create a new element storage with double capacity - char *doub_arr = malloc((arr->capacity * 2)); + char **doub_arr = calloc((arr->capacity * 2), sizeof(char *)); // Copy elements into the new storage for (int i = 0; i < arr->count; i++) @@ -119,7 +119,7 @@ void arr_insert(Array *arr, char *element, int index) } // Copy the element and add it to the array - int new_element = element; + int *new_element = element; arr->elements[index] = new_element; // Increment count by 1 @@ -140,7 +140,7 @@ void arr_append(Array *arr, char *element) } // Copy the element and add it to the end of the array - int new_element = element; + int *new_element = element; arr->elements[arr->count] = new_element; // Increment count by 1 From ab9721f5f0da1aaa287f98d439f2656202c4384b Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Tue, 26 Feb 2019 19:07:52 -0500 Subject: [PATCH 7/8] updated insert for loop --- arrays/arrays.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arrays/arrays.c b/arrays/arrays.c index 9b61bd4..4b0f105 100644 --- a/arrays/arrays.c +++ b/arrays/arrays.c @@ -113,7 +113,7 @@ void arr_insert(Array *arr, char *element, int index) } // Move every element after the insert index to the right one position - for (int i = 0; i <= arr->count; i++) + for (int i = index; i <= arr->count; i++) { arr->elements[i + 1] = arr->elements[i]; } From 706a2a8007ff41494de8a7dba38b4b991c99c10b Mon Sep 17 00:00:00 2001 From: Riley-Brown Date: Tue, 26 Feb 2019 19:55:54 -0500 Subject: [PATCH 8/8] updated insert function, all tests passing --- arrays/a.out | Bin 12896 -> 12984 bytes arrays/arrays.c | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arrays/a.out b/arrays/a.out index edc821fc25e04cbfbaa74a7975147cd5ed10cec3..bb0a35dc70ea07328ca13c6f67a7c0f520c6653a 100644 GIT binary patch delta 3514 zcmZ`+3v5%@89v94*iPcarpc}y2)4_Q1=H3c_>^l%g&3LZAp(SxJM*0AP!L(skSBU+OdjB5V6Tws1!P@b6A4+pL5S~ z3{r38`*?Qb`qW?;39_@I6y7{{mZnHF`OD z0B)FSt6m=OwW+Z{T8;V4O#8`lCZk4ay&_6my9N(w74%R^|QZ0d{ z!C#16hl9ND(V!uIG_UK*rTuaLZvU?K=->Puemvb( zr)~V~)-n95Kf2r={cKw;YmQk>7?$W>vaUO9WVg+{SCB$2ZXApN|MU#kbO!p?@j}Z;{xO)<- zt3;ecJd9WZqgI#Bu?SPvdZU`g-ovuBf}RCWk+SaB7(9rj5 zFZsILDh5tXO~UZ^au+=Ti{)OO*#PU;uEk!pul3r);*G^#DeM}D=vtS3jJ+`Ml5f5= z{C@2YdKD}#7afCI*8v)b5ts7FPejP=(}QNa*QvXC@*Jc?7Mp(Uf;^`wCG!%mNaDeUx=K4c|snPrZf9(Seu?8;FSJt-zz z;fAMFZzDmDb~1>l&@`7Gz)soMDcC9dx>9{9iGv@dFzi{^XaB~1af-lSp;$afufu2y zKr6gBZ)1hxlxrg+58!|j#vQ6?qf0Pa;dRQ78R;|5eOScX$RIy~q?PS8LRhYzN~KIL znzR~mqpZRld{%g(au=O}(aIfVSHx!$-`?n1%$=}&E3B&eiv3OTeG(BQ??9+hasCCJ zY(&8W=$7OhuQ4lKfRRe2J0qffR|NQy@U-F{vg;ILzHe?B(<5t8>`D2NRf~F-^|bhQ z>lQpMOb;{kfzWp0@qzfp;s*u2-oc-ZIEdrENFR#Ku19=T-{Wwu zrgo2>2I0jodhKS>XNmYdi`p@vmAD3Io!4?zXs<#`U9%-Eq%;iFHD{j%@-U7=0%yqL z`eCuI8IIQ5@HqPGz4`Jmx=rwW{lnRRedLO)f&@CrrxR|)JLn`ghQwO%d%c#Ge{2T4 zn3LE%_#{F}9*;0Aq9l*f3213(w#3WbyyI~gXlTwp-@-0!8N!fg$Y6&O8_}~y)6D^G QY_<%n*QC4f;s)3M0R>sGf&c&j delta 3430 zcmZu!3rt(r8NSEHV1teA5PEG2*t|yy7&0ZqOQOOSCpSx~&~(tUXa&lnqoN7Rpm`{T zMQ+;MxhSUpDiNuhXjN^Ynbu_Kq^Q{xNU{ObCc&hsRB9v=C6ie)sfk$Uw4~m5?mgE8 zwqx1f`5)(ho&Vf>e6e%BBkFOFrb^nV(?RkNm;cIp&Z$!dN|Ik=Fe+d^+fPio^dz~N z>>kb2snI-LXOx1h#a-dhxk;ok)>04^x>2EPV6U*)OXa40Yj?f&(mSD@&)whrmiilC z@7xznzpXt_Bc@GkH_e&?><7fmJJ`1{m)Q}_Wok8hXx!{!Cu!LHI4zntWxw3k({rF* zYH4Xd+}6_7y}zxe`)DWaNjcOkNhW;wuRfT>Ka%7Ubbn5_jZ2>vv=O3J(4%SkWJIK3 z@LQ?CvX7eSVGNWzL}M7TLkQ8RHzyT4eI1+8rqd3ph?JRVF3XPFqs# zgEPVccZ|@ILkZutDiO=yy?#kKG2UlN%qZb&)~ixt!$GhTC4KmH`sy&_^bh&Eh4}#39$X z7rFh@@j{N_guVeAdX<*p`i*bT3(Nd@9RWDiG<*1GM0sTbowe^kBa&g_0VJxrFq%ABg9L_*26L#5eQ?&`#Q02un+K`f8VU@avzgf1+up`bm9bJ)ROJ znQrYNP|5L`diCK>^^4u*{7_nziHGLci}ba<$sOwHe7SRfpMU>>K7ZGN{{0>FjH7Ij zJ#OB7816IiU5qCZ*MJ=l5{bLOKH$%Q11MDrGMNSz0~dkYfGWc308Rm41HO&y-Ur5k z*MN4Ua0_?}n1ZL|He_53{0P_sT#M%W%8_T9i&IW!mE{|7-%C$r7O`IXQKtODLAc)q z_fmbP>vhw29I2-5_B6aTa=|)=@6REB;!$~*Cf4NdfPV(^w;z?8qRI8Y2S4vi`XDo> z^D|7hAfvyoP@PJuE`h%QdHV|a^GSIwGOR!a)&i5Enw^X*{6749m9@>g_uwTaZ|!iH?`ZY>I}9<<3upy?=}Rw1We^+u*xRvSju9#VQ@{b3X2N zMxFT`h7X4J;&Jtg`giJV*Z`kqSyo$#&?pv{Iqh6P>k_^$$s>7Id76MHZqc|;8@6)FZGCMmKkjQg*mq&DyxEM#{pm(fYoLdkD+9I>!5yLD%34w?T{Kr&ojlCOQHqkcDqu50#zCs8 zb^ApE2KLhFssNp=f`zK;(H)zvoR1R(6{THEp;o7w8x arr->count) { - exit(1); + exit(0); } // Resize the array if the number of elements is over capacity - if ((arr->count) > (arr->capacity)) + if ((arr->count) >= (arr->capacity)) { resize_array(arr); } @@ -180,7 +180,7 @@ void arr_remove(Array *arr, char *element) else { printf("Element not found\n"); - exit(1); + exit(0); } } }