From 632ee34b80ab18be3066914ae1876361516d9b6d Mon Sep 17 00:00:00 2001 From: Muhammad Ismail <muhis511@student.liu.se> Date: Mon, 21 Sep 2020 12:34:45 +0200 Subject: [PATCH] Lab1, part1 uploaded! --- part1/.classpath | 7 ++ part1/.project | 17 +++++ part1/.settings/org.eclipse.jdt.core.prefs | 12 ++++ .../triangle/InvalidTriangleException.class | Bin 0 -> 318 bytes part1/bin/triangle/Main.class | Bin 0 -> 2111 bytes .../bin/triangle/Triangle$TriangleType.class | Bin 0 -> 1307 bytes part1/bin/triangle/Triangle.class | Bin 0 -> 1320 bytes part1/bin/triangle/TriangleTest.class | Bin 0 -> 2506 bytes .../triangle/InvalidTriangleException.java | 5 ++ part1/src/triangle/Main.java | 37 ++++++++++ part1/src/triangle/Triangle.java | 63 ++++++++++++++++++ part1/src/triangle/TriangleTest.java | 49 ++++++++++++++ 12 files changed, 190 insertions(+) create mode 100644 part1/.classpath create mode 100644 part1/.project create mode 100644 part1/.settings/org.eclipse.jdt.core.prefs create mode 100644 part1/bin/triangle/InvalidTriangleException.class create mode 100644 part1/bin/triangle/Main.class create mode 100644 part1/bin/triangle/Triangle$TriangleType.class create mode 100644 part1/bin/triangle/Triangle.class create mode 100644 part1/bin/triangle/TriangleTest.class create mode 100644 part1/src/triangle/InvalidTriangleException.java create mode 100644 part1/src/triangle/Main.java create mode 100644 part1/src/triangle/Triangle.java create mode 100644 part1/src/triangle/TriangleTest.java diff --git a/part1/.classpath b/part1/.classpath new file mode 100644 index 0000000..145a671 --- /dev/null +++ b/part1/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/part1/.project b/part1/.project new file mode 100644 index 0000000..ec3ae6a --- /dev/null +++ b/part1/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>part1</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/part1/.settings/org.eclipse.jdt.core.prefs b/part1/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ec1937b --- /dev/null +++ b/part1/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/part1/bin/triangle/InvalidTriangleException.class b/part1/bin/triangle/InvalidTriangleException.class new file mode 100644 index 0000000000000000000000000000000000000000..47f03a5e8bccb1509b8bcf20fe2faaac493da538 GIT binary patch literal 318 zcmaivyH12a6o&u9Wl_Y%Xl+4k)-9y5)7Wg*#Dv&L=m(hSY{tRhKzuDL6AK@}huZ9c z5IeKYf95-9F5moazkdK+<0ODXNNlTwdDb$0Ful;K&L>`fRPxQL#su&PXB*LrRP)aC zZ$OycDx>Tj!ChPy1aH;UGK7o62tH<nI8#PGcCV#ub5UwZIL(?$=tA%#%u~~|FY29e zk?nQ4A%ss&*H-dg4cDFjCw(>eA_1%MXTg;QCC-2;9U1VKUpV;WhJ%oE7=sTSaYp0X M=X%UUm~%RacS|!%cmMzZ literal 0 HcmV?d00001 diff --git a/part1/bin/triangle/Main.class b/part1/bin/triangle/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..87a894aaafc16fd817312b5ea6e49664a1e5d039 GIT binary patch literal 2111 zcmZ`(&sP&y7`-nfnaMCz4F(A+2DBvznATd_2DMa+HWkDgu%&40kUYX@GD&A9R91E2 zqMlRtb*UTHx(GeB$3LKdLI0Z4`x26nLtG^9y?NjJ?sxC^<DdWjdJEtJ9%%>&^!cuB zIfbH3Em*drAt-S8fwgI+iu{^dTzepMzCie*?b!Zhfu7{}9f9E0a$XwfLBvD|VSz*Q zwj*y=OKZ|yvet@HAUa>pS;adRz4N^HG3amDp0e%$ouR`L!374AtMhH}EUlcvi~=;~ z9_3`kx66*FAu2G^a*%O0t)iV@+GEkOi{K~*G{idSWVbwDmP{POAgPqAWEN`x+U3+O zqWQ#>R%u4Z5JBb~U%Cl@LnfMV3D3^UL{T~gf5S^B44lBQhLZyQ^{_j=m^g)mK&YY| z6Diq^n}$*HZoa-!U0;{3%-@z)Ub-622*jIr8K+X+i?4C5D1KmK3`v22lCRBWpY4o+ z(>Sa0G$Am!7Xt&`Z!&(zzzC+4(K&Ky8#REK0u3Ju9BImsYRYXOg@}6lvB`@1L_nu} zc~uMoN0Z|R2`j}uHSw7eMym@`babSdjl152fs44T;ZkSL2<j9}e1TbN=~aq0wH)iF zWtZA9a0Op!xXReub(LXS3(_?)hii<uV!58=w|8VHqh$WtM5bOd(sgy*VB6S@x=Yk$ zR5C1>xQRvj^Q50;m9Wl3$<>UKHid6Z+(wp^3({ZOs!*L#s&hcjGfiEU4HI_)%StOY zKu7U3x{_JZ@jbO_hSGGW;|G>au3RnV6HeJrsFWnu-Et}6`FYjjcLh$h<!H3+wX$2X z{8syD_;FuRXBJx*>{ZJxkX(Nkxmky6E~~87Q=Rq9M%SA`(!oLgG>9Io8NO1T+0Znw znh_8-e_X>J-8lswsOZSPmt8s0`{_33y9NiX_VrPlIKTI0eJl5H!K&29nTGosh;3xc zRW~QE*=p=X)D%6Z#1$|zjw9WxMa%Of$JVC6aFczjfjTnICrf*COcemzihaRZ4FtI3 zpyj{DQ;MtL8alfJ{Z;+i;J>;CboBDyY#4Cu<0*poaEMM0b06f*5#=T@M3*MNynK!R zXuO8wZ!og*2B%kE<NY0s?_hHN4N@yR_-J9GhVwURHdVv)RP^&2X41iU@a^A5I@B{A zjt5uL#@p#g&$PacvA7Y_&!@F`C>DMa7IE!Qe7U%dzI5+vT#tT32Tybn(_@hryZ=tc zLp99P?_>?PYFOIFAW^PIzoXSQ%=&(X`&X1<8EcSO#VDTQcQR1xAGpUG#r-y$6lAWG z(GWS0lJ6M#o}=Y7qPT>9%+h8V1N3tY1q`Ch^A?WdSN7RcoWwH>)8i>TM*=T6G?k8( z`u|J(g!?=V;Wt=(&-TS*<dCPPV?1AAWIe>ma!TE&!j~|Qbz+2wnZX8Z=4P3%AJC39 z!zdr3NYBseyAt0%ukRf0%EWmLZI{!eS3^a^h=!Dgi}n4_OuXO@*d>u}_q1$S&}?;= oneS%QbQ0J_96c=*@Xe7M8t&=j<uZ-{JosD<GOn`hewmH`56)orJpcdz literal 0 HcmV?d00001 diff --git a/part1/bin/triangle/Triangle$TriangleType.class b/part1/bin/triangle/Triangle$TriangleType.class new file mode 100644 index 0000000000000000000000000000000000000000..821990969f6f05a19c69fbc20db186a3f9ef906a GIT binary patch literal 1307 zcmah|T~8BH5IvV|yX~?FR0R13L2L_B!Ga&Hh#{CX7I@gwr19xeuefBp#qE~Zf2Ac6 zqLKLQk221^U7(R@Uv}o)oilT0?%ZF$zg+;x;H8cphAH2(xqIk{bTM$|FP&oZSm+2b z+&bbXJnc|edfRPO8DjZ*tzHq1s58tI{+}Vs(7XMyVLRLx9(NdYtHK@O3I=VL7v<mG z{hj&JtHS=a#W4G}d%kF{;@Gb3Z%~RvvcwSDs=X6YgbgqZnuy~zLnIf33?~ZL`YjUc z9%l2&QjB8nm<S^hg)YHe6S@RZ3C2xCC5TBdWg>=%^kz&L=w;|H*sj=ZR1bt#<OdG* z5--%KtrDjp5>|%>Gz^kB|AS3)iu$#7afYEp@}?xIJz*k=1){jTN;xAZ+-b-e&n1#w z$70|i(mIwI20Gep)_qYm@dzt)YuxjAvr;>5GNd|(vUhMKDt<QKA?oso21PffbnLxn z$aK<zSth$(n4H6!iB+sKtaT>Xa(KO-?WlT{@wx-KaI`{(Rcm+^@!FQN?z`O3Wf@0} zS@xmJ{f0;XRy)#3ZmyfU4a#ojT~~NYj;QN+L0fcVsVVBRtb7=oD|BBPJ*4pFs9Yj| zEbWi7v^vVt)&K)za%W^Dt(1vA;@u+j2_gCd#qVI{c)xarfl~}AFdR}~M1j$;0%HnH zL=>3Re-KG)VaO_nS{Sj);TFcMa-@Yx>lD*pC~psD>1&V$>B^9jd+JpFp$8JESfL(d z7kX-O;tX@w#0Ui-AeqY7F)!O8|2`H1dYY_^3#Y!~!Dn*XRoi4kRcw>P0Xc>g76bA+ zO+?lnZehCoMoV3kbF!@+ZTuWdOMho$SNdbLN{@paDXJ(17;%<5N9HHkzj+#-D1}e) ROxfqiN+$6ca@g1${R8h`7ij<h literal 0 HcmV?d00001 diff --git a/part1/bin/triangle/Triangle.class b/part1/bin/triangle/Triangle.class new file mode 100644 index 0000000000000000000000000000000000000000..1d98e0f4e605be48a4033adfa0218743551b6355 GIT binary patch literal 1320 zcmah|OHb5L7(I8|PN7poUV}Uad5JRxiy|T_q6xud%m@nz#;__wgT*p~(}KG3AGq)j zh$bd(k*KId-20o1@!ZY>6cZP7``vTD=lRb3`1SP=z&Nh!hzT@>CC@3W`R?dq#n7P& zoL+afol&1Jqw_24Zax&y0&mp~1Y*lsf%ueH@WN>UC7oFkP-lv(t^oxJ6FTYy8gpL3 zo!i=2aZ8KNith?E=Zbm9UvgN5_X?<n4?U)A$(`uphJe22hKtWO8QY)Eob(v1HY|PU zZp=Q-yPKg`ECf1Q1^Q|^vxRNP_g1U^HNSc!aYjeGKu^uL>hwo;6CLQ}taHwyK=1!r zsfR$f2@P?BR*#9Z=p{wL6K9h{rI)kWY-Y(o3lg${0TY8Vd1ChQmghU6TXKAf51BYG z@%n5~4Dzn;1`^Gfuq3K4kW9BgZsH|3*z&obhK10{Kf32^R=5=;R(SkzU1FWxha0S4 zM^YEci&WDYxyrhrhG=X~uG3g3Zk6)x9ZxQ<p-PD@H6dVT3kA0{<2ykh<zQBy<r>h( zi51F=GLZz((r8l>JnMNI<yT15+K2I;Mhqs;cm%3wply~Na0-pQQHp4yS2Jyuw-%X3 z%&|y}$oD<8<*X0rI*ji?8{U<sV#`yt-@=Tp>Sv^maIJ=G6<m${Yq(m)75f!BWS|x~ zDE4YO?;9iz(DGm(ecz9#eGOv|{keA-IYL!?2hHUud1`j#bdFB?9@4qtU5=nc1l)}V zZ03lqBq7PsJJ5qpN}wAPNZ}SmG>2Z?M?bbPfae&(3%<TY8hgm#6J_xQ!}ta}A~9K} zr$VBN1HN^Vz7bYzg7FiLI+E?}?LB&1Dz3ng8s)QGQJzhx{5D!$_O#Vyb=&h+cWVA< zS+YxDjOS$rj<d#<sHRm8!-Z(?Ou$~`zNK}MR*dfnT%x5A9b@$0njlA#lH;0~{HG?y zS+X2FO>e1$xHbF{T}MqC5jsWr-8@D}yh4anoRp`O=|oiVDkk}rf7m2{*KT+G2FqgV A@c;k- literal 0 HcmV?d00001 diff --git a/part1/bin/triangle/TriangleTest.class b/part1/bin/triangle/TriangleTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1ff7d086e36d4dc5bbc665d2665475d97eb17956 GIT binary patch literal 2506 zcmb7FYj+b>6x}zkNz=im>BF{EptX-ANP~bcf=FA6L_?z_6k~l&liPO6bS5T~3O`Gi z0t;RK0GGeX<-U{2B-oV7hs@kL_uPH<-RF_N{(12yfNL-`gajtsrfJxFmdsWBMMbt; z4H1FlfpKKyEbit?I|s7n3dFnK0%OJQIyjjZh}|%4)4eGWPG`0RBI{0FCJ@H34h?aE zk)mnK&GzArY*vgNOA4flPR+2k3`Xa-Z;ZJ6W=r7B<1rLF#)-D1`=B8(eZOtH=Aqm& zTPBaM+P32wuIbo3JzsR1d%1%)3Gvx5UD?bT4KueUcb%r(FlzgG4dVi%$1ak<7>0*H z0y?6I37l~mcH?nPHWao%B3QRHoE4Z0APV-8VVU)cFJ|B;Fna<W??x)(IUVP5fg<y6 zWwS1Mg=l)akl9KxU-LTN#)5z*AIn<XrEs^?C#aJ-A<%Byt||Jt4G%)eoljs1X${K) z7Y2*9+G@$BC#a4LvI4r{St|QY=O;2Or;EKZS+}^Ee~s{&zQZ1(M@k^1vLD(muwXpp ze{7qU!TcGP5-O+TGTx;Yd(y2uX;6##bmq7i3*96rpZpN6;yn%51kMG?>N>pSspEZo zATYeq3rclPgI7X+q~khRoW4W^Ff86<xnH7AC*}L@?ORm4cx6^-Ijx$sWJ@u=spAvH zW+<?dnUbW;rjfQ(K5IJGm5=7zxKbXQhO2h(==fCahBu80Ys)eYck0H%WeuOPhkL0D z)Ms&*op!S(@0hARN4pxSGF?&r91LrY<F?$U(YPnweW%_^poA|qe8EKY5Ka5Yc_ed1 zFCZO_U8CkY%_lnUqs&_z_DlkQ_iN;z?10}j>^j9*C_2ugcB5aoGV^Hf^;=##=w-c6 z=l{Ri3HfT^{>t@{*A2@mbIRmLV%SU~p5Op^sN*i;BO117U}Y3+TQ<Emk(?ag2rM2G zY|ynee8;+dwJV2jM<a#_lE%u%9C?H}LfBDinsF89n&X(yA%5lf7JNsu&ye_;ix6}^ zW1dmN8Lst?1Kz+0zgPi09KxvYrRI|Yy3Q~PNYDO`vFbBS{D#RMUV<kS(l8Nwn0kOY zMa(d!=@TK!On^R1i$a&QD}=?^ABk!>QmRHmrD`-%DrSGh<i)3WD>ajS!OP+~79aM) zrg#hlOCp6S4vz(ld*LTLV1D={CU6n&FtEU-Q;6*PM3w>~B-2ks5qgT1UvT9)KKw6} zDKeQRlNl`HY#)=QfXQUQ<i=|;iBS^%qS2lt0h5mhFgZ^q7szCeOy*Bva_bZ(d%h;i zo+cWZ#K|NX8$e}s0F@;sXqmF4IYl#lRF-{FM$r@H_9;{jd@5P3TPG?#(NZ-QAHZf~ z0GmrJkrm9cF*5w4QMKABmaNZayvrsTQr*o$>Q-&RtJEuA8L`cL`FkbM>8UXfv(r;? pA2W>487G7y?(wbmD(r>__zG2gO-qV<+xQmWGuBm>@ejAA{{`h{B_IF* literal 0 HcmV?d00001 diff --git a/part1/src/triangle/InvalidTriangleException.java b/part1/src/triangle/InvalidTriangleException.java new file mode 100644 index 0000000..e4226af --- /dev/null +++ b/part1/src/triangle/InvalidTriangleException.java @@ -0,0 +1,5 @@ +package triangle; + +public class InvalidTriangleException extends Exception { + +} diff --git a/part1/src/triangle/Main.java b/part1/src/triangle/Main.java new file mode 100644 index 0000000..592aacf --- /dev/null +++ b/part1/src/triangle/Main.java @@ -0,0 +1,37 @@ +package triangle; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; + +public class Main { + + public static void main(String[] args) throws InvalidTriangleException { + System.out.print("Enter the triangle side lengths: "); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + final Triangle triangle = new Triangle(); + try { + final String readLine = br.readLine(); + System.out.println(readLine); + final String[] split = readLine.split("\\s+"); + int[] intSides = new int[split.length]; + int i = 0; + for (String string : split) { + try { + intSides[i++] = Integer.parseInt(string); + }catch(NumberFormatException e) { + System.err.println("invalid Input"); + } + } + triangle.setSides(intSides); + System.out.println(triangle.getType()); + } catch (InvalidTriangleException e) { + System.err.println("invalid triangle"); + } catch (IOException e) { + System.err.println("could not read from stdin"); + } + + } + +} diff --git a/part1/src/triangle/Triangle.java b/part1/src/triangle/Triangle.java new file mode 100644 index 0000000..2edd6fc --- /dev/null +++ b/part1/src/triangle/Triangle.java @@ -0,0 +1,63 @@ +package triangle; + + +public class Triangle { + + public enum TriangleType { + Isosceles, Equilateral, Scalene, NaT; + + public String toString() { + return name(); + }; + } + + private int[] sides; + + public TriangleType getType() throws InvalidTriangleException + { + TriangleType result = TriangleType.NaT; + + if (sides.length != 3) { + //throw new InvalidTriangleException(); + return result; + } + + if (sides[0] > sides[1]) + swap(sides, 0, 1); + + if (sides[0] > sides[2]) + swap(sides, 0, 2); + + if (sides[1] > sides[2]) + swap(sides, 1, 2); + + if (sides[0] <= 0 || sides[2] - sides[0] >= sides[1]) { + throw new InvalidTriangleException(); + } + + if (sides[0] == sides[2]) { + result = TriangleType.Equilateral; + } else if (sides[0] == sides[1] || sides[1] == sides[2]) { + result = TriangleType.Isosceles; + } else { + result = TriangleType.Scalene; + } + + return result; + } + + private static void swap(int s[], int i, int j) { + int tmp = s[i]; + s[i] = s[j]; + s[j] = tmp; + } + + public int[] getSides() { + return sides; + } + + public void setSides(int[] sides) { + this.sides = sides; + } + +} diff --git a/part1/src/triangle/TriangleTest.java b/part1/src/triangle/TriangleTest.java new file mode 100644 index 0000000..b7bcb14 --- /dev/null +++ b/part1/src/triangle/TriangleTest.java @@ -0,0 +1,49 @@ +package triangle; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class TriangleTest { + private triangle.Triangle triangle; + + @BeforeEach + public void setUp() { + triangle = new triangle.Triangle(); + } + + @Test + public void testException() throws InvalidTriangleException { + final int[] is = new int[]{1, -1, 1}; + triangle.setSides(is); + Assertions.assertThrows(InvalidTriangleException.class, ()->triangle.getType()); + } + + @Test + public void testEquilateral() throws InvalidTriangleException { + final int[] is = new int[]{1, 1, 1}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Equilateral); + } + + @Test + public void testIsosceles() throws InvalidTriangleException{ + final int[] is = new int[]{3, 3, 2}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Isosceles); + } + + @Test + public void testScalene() throws InvalidTriangleException{ + final int[] is = new int[]{4, 5, 6}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Scalene); + } + + @Test + public void testNat() throws InvalidTriangleException{ + final int[] is = new int[]{1, 1, 2, 5}; + triangle.setSides(is); + Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.NaT); + } +} -- GitLab