ࡱ> ~}7 !&bjbjUU ":7|7|!dl,,,,,,,@8:N,@92{{{W9Y9Y9Y9Y9Y9Y9$ ; *=b}9,{w{{{}9{,,9{{{{,,W9{{W9{{IRw6,,W9z 0ieu@ mk7W99097={=W9{@@,,,,Lab Name: Image Manipulation Purpose: To create a program with various digital image manipulation algorithms in it. Required Files: JIP.java, ImageEffect.java, InvertEffect.java Introduction: Many thanks to Professor Calvin Lin of the UTCS department and Walter Chang, a graduate student in the UTCS, for allowing me to us this assignment. Digital images can be thought of as a 2 dimensional array of pixels. Pixel is short for picture element and they are the tiny boxes of color that make up a digital image. The color of a pixel is normally described by the intensity of red, green, and blue light. A standard format for specify the intensity of each color component is to express it as an integer between 0 and 255. 0 means no light of that color component and 255 means maximum intensity of that color component. Black consists of 0 red, 0 green, and 0 blue. White consists of 255 red, 255 green, and 255 blue. Different colors are created by varying the intensity of the three primary components. A digital image can be filtered by altering the original image according to a set algorithm. Consider the following image.  Here is the same image after applying an inversion filter.  Here is the original image after applying a remove all blue filter.  Note the white border has become yellow. Remember whit is all 3 color components (red, green, and blue) at maximum intensity. If the blue is removed that leaves red and green at maximum intensity which results in yellow! Problem Description: The program you write will use two distinct representations of images. The first is a BufferedImage which is a class from the Java standard library. This is how a Java program views or represents images on a disk. You don't actually need to know anything about the details of this representation. You are provided a method, imageToPixels(), to convert BufferedImage objects into 2d arrays of pixels. These 2D arrays of pixels are the second way an image is represented in the program. Each pixel is simply a single int that contains encoded information for the intensity of red, blue, and green for that particular pixel. Instead of having to decode that information there are 3 helper methods: int getRed(int pixel) // get the amount of red in the pixel. int getGreen(int pixel) // get the amount of green in the pixel. int getBlue(int pixel) // get the amount of blue in the pixel. Each of these three method return and int between 0 and 255 inclusive. There is also a helper method to create a pixel based on the amount of red, green, and blue desired. int makePixel(int red, int green, int blue) The helper methods are in a class named ImageEffect. This class also handles the conversion between BufferedImage objects and 2D array of ints. There is another class, the JIP class for Java Image Processing, that creates the GUI (graphical user interface) and handles a lot of other low level details like figuring out what image manipulation effects are currently available, opening files, and saving files. You do not have to understand anything about the JIP class other than calling its main method as explained below. To add an effect you must extend the ImageEffect class. You must create a new class for each effect you add and each one must extend ImageEffect. In each new effect class you must provide two methods. The first is public int[][] apply(int[][] pixels) This method has one parameter, a 2d array of ints that represent the pixels of the image. The second is public String getDescription() This method returns a short String that describes the effect. Normally every Java class is contained in its own file. There can actually be multiple classes in on file, but only one of them can be public. The public class must have the same name as the file. The other classes have no visibility modifier on them. When this class is compiled the JIP class will be able to find all the effects regardless if they were public classes are not. (Another of the low level details JIP handles.) For example here are the two effects shown above. These would be contained in a file named InvertEffect.java. public class InvertEffect extends ImageEffect { public int[][] apply(int[][] pixels) { int numRows = pixels.length; int numCols = pixels[0].length; for (int row = 0; row < numRows; row++) { for (int col = 0; col < numCols; col++) { pixels[row][col] = ~pixels[row][col]; } } return pixels; } public String getDescription() { return "Invert"; } }// end of class InvertEffect class RemoveBlue extends ImageEffect { public int[][] apply(int[][] pixels) { int numRows = pixels.length; int numCols = pixels[0].length; int pixel; for(int row = 0; row < numRows; row++) { for(int col = 0; col < numCols; col++) { pixel = pixels[row][col]; pixels[row][col] = makePixel( getRed(pixel), getGreen(pixel), 0); } } return pixels; } public String getDescription() { return "Remove Blue"; } }// end of class RemoveBlue To run the program you invoke the main method in the JIP class. If you invoke the main method with no parameters the JIP class will search your computer for classes that extend ImageEffect. You can also call the main method with a single String parameter which is the path name for the location of your compiled classes that extend ImageEffect. This second way of calling the main method may be necessary if you are using certain development environments like BlueJ. The JIP class will create the GUI. Once the GUI is opened you have menus to open and save images and another menu to apply any of the known image effects to the current image.  For the standard assignment complete the following effects. Remember, each of these must be in a separate class that extends ImageEffect and provides an apply and getDescription method. NoRed: remove all shades of red from each pixel. NoGreen: remove all shades of green from each pixel. RedOnly: remove all green and blue from each pixel leaving only the shade of red. GreenOnly: remove all red and blue from each pixel leaving only the shade of green. BlueOnly: remove all red and green from each pixel leaving only the shade of blue. BlackAndWhite: Turn a color image into a black and white image. Black, white, and the various shades of gray are achieved by having the same intensity of red, green, and blue. This one requires some thought on how to pick the proper shade of gray. Extras: Implement the following effects for extra credit. Grow: Create an image that is twice as high and twice as wide as the original picture. Simply map one pixel in the original to 4 pixels in the larger image Shrink: Create an image that is half as high and half as wide as the original. Each pixel value in the smaller image will be the average of 4 pixels from the larger image VerticalReflect: Reflect the image around a vertical line down the middle of the original image. This results in a mirror image. Applying the effect again restores the original image. HorizontalReflect the image around a horizontal line across the middle of the image. The resulting picture will be the original, upside down. Applying this effect again would restore the image to the original. The following effects are known as neighborhood filters. A pixel in the new image depends not on the original value of that pixel, but on the values of neighboring pixels. For example each pixel in the final image could be the median pixel value among the original pixel value and its 8 neighboring pixels. (above, below, left, right, and the four diagonals.) A special class of a neighborhood filter is a convolution. The neighborhood function of a convolution is linear combination of the pixel values in the neighborhood. A smoothing effect can be achieved by setting each pixel to the average value of itself and its 8 neighbors. The following are some common neighborhood and convolutions: Smooth: Replace each pixel with the average value of a small neighborhood such as the immediate neighbors (a 3 x 3 grid) or something slightly larger like a 5 x 5 or 7 x 7 grid. Sharpen: Light pixels near dark pixels should be made lighter, and dark pixels near light pixels should be made darker. This will highlight neighborhoods of high contrast. De-noise: Replace each pixel with the median value from a small neighborhood. Create your own effect and filter! Investigate various filtering techniques and create effects for them. Topic 2 - 2D Arrays Programming Project 3 Topic 2 - 2D Arrays Programming Project 3  PAGE 4  &spq D Q 2 A N [ $ c d =fq  q|$I/2.AwzHSn|!$!""%& j)U OJQJ^JCJOJQJ^J j_ CJU jCJU jCJU 6CJ]CJNvXYoprs % & $ c d =>KL#$IJ-.^ !`'`0]`^0 ! ?u 4](R !`'`0]`^0%AB> & F  & F ! !`'`0]`^0 !`'`0]`^0a ##W$%Q%%%%%%%&&&& &!&$a$$a$$a$ & F &&&&&&!&0JmHnHu0J j0JU 1h/ =!"#$%Ddt  C PA8..\..\..\DownLoads\utcs.jpgRR1n@Do+bDFR1n@Do+bJFIFddDuckydAdobed_      !7wa#1Qq"2Bv8x9 !1"AQaq2sBRbr56#3C4tu ?Yyٞ@peԆ!3՗UQb[ P*N)3XN#)nm3&og4#h:F|Uqc(Q#QQARMO] y7Χ5Va7Iugn6Iz5t̺Dus 7CQn#4ِf;\a8{[ 5 ؽ𻔦"Cr[22(#H6F;N] :po:ͲcD;=I:54 gh<$nkrX3ϐ&+)yUd#Z)qQ6aȑ=ieGT#qr^`NO"l-I TF2%#2=+Pg&er蓳{I>_5#Xk]? @p_7Ck(P}DZR6'sڡ[jO Ég/ByB"*s#9R +{)# py%-}k:" HܲځAT)E|ک4슡mhIWiŠkWtqbEyhcH(>q/^3o8sͺ1;(cIYIҝyrs͞KS[pC*70jk^+ImF8ّ֛j5H_]Jha^Ur|4Cz$<Py0 !r ŕŭw4I~*jM4E,,&|(*Ѵ)#j5ROɂu>S2~Kūu(ȟmLed YLG%y\JJS *O];Z%{Tly>iItEUYX]G9'7e[1$#bWfى@hAŵ)ܟZ=b+,ЀԪkT%Me 4@7&/.fJt!\OwRCVeLmw#kJցMgs%Œ*&*>=7V:C&)¥@T#%=Ӎ''5庒HC@Pd QJ a!~;{ '`=d;,I$JaZp/OJ_~?zNy?fHa?n /?`,=h?ɟϨU,'jR)El*s )B-,NY@D!,Hw%.ktHV-AbCrQ7ׄت8Aq\bq2c %Kx_8G婟X=(DZ|Nq=)^'_p0 ғjmhTJi`As6򿌰/hk[.qTGFRS 'Π8п8#Uo!ijWGD|6x/X?3L,8QE3 4X , 9qc h=z OD +XdlvNs!pDi>AȂ.θP|_%VѸ0I:E翏wJXǠ9?xu4O:b~;_^[ߋzot_>nfY?y99N<.V -0Y,8z q8yp!Ź$H*HVl]KmRYeoMtCX(8VٚaE2N+"\tp!12@vH-)gd8Y7&alޣmeB*ZI.ػl'MbYmknOUoGzOUvWͳTTM@l֝"0z75WfVwW3Z^J8 Zb2 Կ\H$ 1HjQ\) 31Lsmn6J쩲@ Rp+_rzGC{H\uGJLhG=DAY|1A%ji:PܱJ|⼁0@%*\)])!"0%@>A Ձqg+7S?69|[nc0 =jj~.A+=VqNHZ[!a.kbUgcÖb:+If ǩn?t(A1ArpjqTYfE%γK{E$iTӤd+s#6; 5d2)+boNRȴ%9q0F0f&3,/qYJ3w% (P~RBt6b㰵C'l=TiFRZRGYfS}UrZVH:vc5^h{Ry@[/PZ0]N:ͲdZoYX5!L[jAW&4nl5:\u[ңXu7eL,xMm*ѐޫ8M\P~ $F:/#cQ>K5o"4fHPA j=KL[z#:#Ǽ ˨"i̕'#TرzK6o S-]5m1lKr]R6&'TJ j0`˜ /rfŖa%=Nn!޴I 1}h]7nmƥla}g-d5Y~%OgͤxRYbDF3}.X:! [kumx{ ,ъ&E,2J\Vt]Ri|*Ɗbi<li{,# [q$H\Ms $Pq]kZ\&PG,z֗|u;AKK|[uax'nu"U !9U03ӥmK^yaWB},dpzv4wfxvv+kOXoK%6wb ݓǛi>[uȍ=OҽC_u-.'BI3c81S:1raZVӾ>$kx|+w%Ed#>W nEg48h:R9ğVGBưuUYN6cm xPXm%_C t4I4KR7fE2DyAQ^}?voVЎ!C^gy}u(w Ѧ;IfG{!Bg6]rX+39<}+|,6i35`[F1sg'9r}dI8Y>8uhPקZWFr?#m1<]u;e˟|b: |9 l*p: W<)I:j7W7t* Dd  C \AD..\..\..\DownLoads\utcsNoBlue.jpgRV{ 2 F*{ JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222_" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?¯i53Cr rJg#{ĺ|O+(ClcqY?H%(]S?#[s^W&woVvm5)d8p~+5WR;Dy#^\ûhbDY?{ @+׍,=IJ OK]'kެ[9k/ͤ 1t\em:8#VvQ Qc>_Y+Ы7![u܀ PqzWU9u:RoW>0lDM/We-=|]pug2EB4VrA8]8=1K/OKkѸQ)r}J_>-^f,I.^r1[9[ IP 3n95h'Vum#E9pוy% u  B1Ӄr-vi ik$GZ@ֶyvQ^c;@ҥKiˈ=w>2s{ }&{t󵖗:1挟qㆁn%5\1U-!zkC /2&鵁9{0|;yHbL/wx^ymhCFq`GNRXJ;4Iש0ggNO6qэ|Y>jSKH(k'|Kɧȣ&7_Bk<9?_ KmRb*4]6Ӕ٧di΄OB_p ߅#[i?*yxŚZ2C_6I'ںZNMY'LQS2wky˕9ok:υ|t.?f.+M/OKʌGi {WK/ xN%wE*}Q\ů^;]?OԂ"sq z?L!ZaFi4e}BwiemiogI :M^+TdV\rx8:/e*-Ikp@UA\߀|AW0.Dast71cC M{z;ifU*7e{>~m.FDOӨ^m^j~ tB^*cY! <>З#Ϯc9~-ž?A&..\images\utcs.jpgR58*PFwP㒻%8f5)F^58*PFwP㒻%8JFIF``LEAD Technologies Inc. V1.01 3!>,/%3JANLHAGFQ\ucQWoXFGfgoy}Obu~O΋ yxtYϓ,|?A` 'EXO΋ yxtYϓ,|?A` 'EXO=:,<P9C΋ =:,Ѷii.dUqdirkWWlSkuq~Ged_y„0S"`Ad;V{%ђb[ډK.K]1.ed_y с ñet@=ȪSwJKq:jL["[$`}3W e|r3`sy?]G2_̊wabPX2m H} uaji+X¾ еV,*$:®XUbilJ]"C{AEEB>m-Q.@UXd rFGYaۧ.sLO?,m:1VW˯diyKYĥ F8+ڸimӂkv2M*&Ytp%;G85K.'k޾jm;,2!H^& <e{[[Su7\2+IKnQBRi2=$-$@F é+b-sYQwЃ>Bl$I7~Om?/Џf˥Mfx4W.ۺ1Ri[shG3G$Ц%XA%ge#K0j02JIuL̮{qUZTN>,̈\K~I8ZqRw tWZka2q!Ib3کb"OҦ\K !ef8,FG@p1N)b.ܩ2[62i-Eb%ݝz̊%`ɡOG !&R-bqޟ^VtbF ~@ /Gc2dk)%U8)gjxRn$t Spqǵm̮f՝Q` P1@(lBl=b?W+^DtE+7irL?_ԪlW(fǽT8|SXW #),<_0ub`, y[G_f]MFHfc{?It>"VR9%w0U+tٿ vWߡϙhsש53;Mo)>j+Д̌֌#fZW!r}1ZC_SdbI4^d`c^kٜ˚в" uHvc;z4Mɽt^1I% Df"_pt<_NݒЗ]]5H똼Pn Ԟ},Rk s>3vk8nڗ򱌪^|ȴݴp>3a_+W߁+mhhC"[ -cr~XY&aEbIIYvzⱝA[fhQXKEouGKy\. :t8PWZ[O!:RZ_-Ff+N{]SKٜʭsi2rI2zU{(8.r%[̥仓eY0T9U|%e2I/jWWI =*#,)׌kAS-"`bߴE;Ɵ7# rp}9>kal`7~ROʿNpH5~\ɓ-&TiM Җ;vW+۫Pvi5wN9={ WmjۤՖOhÖP mmp@\6 mrmG]z;?"?:jJՑdbWK(c8##eN+\5dmO"k/U=}iVE%dœyjB6#T5IO+vwڟP.>&E8*i(G1]'n_kԴ.Xb |n3wG(55m_8_zQQ1vѣ>SM^R< ѫE#^$5gh ?!Ee_'ףEe?_~^?C˸4ClGףC˹_<YU\!e?G%}Yw=ekQ/V]<YT}r_՗p?_U\!e?G%}Yw&Fi..Jv=ޥ?}Yw$oz__V]!' C}Ywף/?G!e?_~^C˸`?_՗pz>.}}/V]!_> C}Ywף/?G#/?G!e?_?^C˸`?_՗pz>.i7P!Ԥ2_5$}W1iws&uI]}?5]ގAw lTAq@_^ϵ|̎]&pڔ:֪8_נb{MZeQ( ֓A/5Igb}f_ Rb;BOI1 Ԟ5,RQmreI휬g0q^IasRּCq4˛{d?(N@][Fdqҿr0=q+OG#]ʛn1>QW{Id0 i?+=€ >¿Ow( i?+=€ >¿Ow( i?+=€ >¿Ow( i?+=€ >¿Ow( i?+=€+juyDڵHgXZev;Q7es3ҼNKu-Э w8_WK"^a|⟴B}o3҅J~X}YxBQ4MvHuKyg12ɓFsxMI6IL%@񑜟^3Kֶ% m}DZ`5*Hz (/t.֬qȿj~^Ȓy,b۞oZnߡBl)&1Cc5]#63̸<PV3ś\sjeOqȿj=m};sCr(l[jKQy>_nwgw'ێr&2˓I lguJ7zق:~jS/Zy|6#IyRtԥ;M&xfՋC/~f߳.qQw`n9/~٤^71랪kjqX$y̟^3ǧ]X[KŬ,J I(䵫 cW-秧ֺ!+N62F|gxv3,rmF:G.9t1$>i]lZshX"T/)=8P446խ+F1~YMYK)R>k_A  (K4.Bo=>u?օ8H,O7aUܖ,N/#'R{w=<ku- &$n$[^Ksd+2vۣ J34Ks1ǯ.jl܂Aus$'#گE^#]3׉?ыThẌDf5>E)yZe-oti+*cM[B Έ9rsEE7)jpffA3ҮTLwsvC`֯DF"#/H!ih v4Ԣ$$PΡUVzC}ICTuJqOq̊#x }α/G38s>/G3G.Mxf^8?0 ()o|hi4@y7 |ϸ<Q|?ϸ<Q|?ϸ<Q߲MF>FҜ[Y`ly915RHM3{)rz+wmeHfFXrԶ9_S=^28ֺ#yI-Afxu%ųo*rIaްCxE[S~ xlK`l+{ nY7֭MQZImpiS޺M4*U[ 9 09KWe'dUfSU'ei62TKZeT(\Mcka4omm B\? _s SYM8Y?7ֽnLv=jS'kOC]ZQ@Z:R2Hg|@hN((m2%pl*> .\c@h߉qmUZ0@S1Ӿsj7S]Gb2u4~rU# g;P5KeI!o yg џ9:PkD yw-2ۻq[|4َ<,Ws[[ż%Gs?jK\\ JpsҀ4&arAhdSKmo zM*qH8}BZQ򛳌zt{QԱ£;OLcR9[<؆Q=d슊m Xny;+wgJV%02}3#lۻsڴD&Exs "kU!,z=qa@U Ms =ET]8[O#߿+8t撱Xȿu^)c}poz2ܘzxA_vJ֟S:]8֧P8_#b$y5W|n`9lt@ 5dai1#/9Ӟhe}3ﯽ#ں2=,(-k[vA(->EMwLuҀk;[=21@ [{P}c'١v "8cƃ:"IoN;,P,t\:2Z("Z5cTd3#5T9z( ;0 kښ:(!!#pcJMDcSycB\E:2R#ܻ2`)<D݌ ܓY̴=9u>pEv 4KnvY~c\mH醱4>i>߱QaX?أ ~ϸm?(}1A bHVfsЗA|b~lqJrh k}`b}6s>Tԭ-J[ħPv5qncIXxtLjmwBƬϻ8OsV:)͗n,eǴ wӧZNQ(!V2L[]AmoSV觬QWijE%lzI=>\w9Z9Bz׃\MP@n"628>(XSr{en݊o9uN Qn g8̸wg]uRg%Z3Ԯ|2K2mOJ8lqʤ(VGC묲03tp\h_p#=uM&CX7z|03Aٓ%tT[]%Mz)ӫRozR܈zxA_vJ֟S:]8wßFj|GL>N Q_ eSbׇʦCc^,(F-Pß-_:S+vw0+T)br?J3rVdWsf}EuѓG%hnssBO k2lR$%\a8)5ΣITs+N.Zϝ{4YF,J;5b ʀy52F+Ns(ݙʩf!,w(kQG JORiY1 J;=N Ta)'9T]%fSTH_M֮mDH z#6f"!sctX0 &HgXZev=jS/kOC;u[#\># PXP@s(P/[S2k?*PW=W\7&[u@W?[*u7&]w gӱky8B*3.>jnsE}Nno낦OVfzIޚvWWs)v 6g7rOLvtzjst.@׉#齱mMTG/[5fdۻnx;RjNOh+vjϷc*vѝ7 _R]qִTLy|^1ǭWt^%oi3qsz9 +okt4 ({ЫjfU ^A*T652€(j2+ 9aS=5 V侍?69Ml(+PPkv09_>J„Ce$QL56΢^)R>^ޏ5ߨb գWm.$SNj! ]1hZ3 ($G1}TohZn?18b+)ò5uGt9V>ME*OgIs(zxA_vJ֟S9utހ; 0M:€ (Gq*ڙM^A* z̰ :znL8 9B:3XToOcMB9u),o•K>է"j)Bi|@V'שP}K~$vې UcM̿^}O? vIqߕV𦤌*Uqd+(ORO6UB 뵎&:NNbVq~R=1TКha(XxeVv@:71aZcVr;laO?t(Fc^~'ץ-ɎǭWt~$oi3WA_ZӨ,(9BTص'򩩹P׬ Ǫ?c(o5N::(:yzc9fisǭ ηóy.qO9QYtZbo:=:N莲67C9ܪzWudywbl`PW4wcgv&Aa}Ɣy{<z9FNʒȻd73@Z|jے8jy8\`<7nq;bb gnwnj DW#R~9?7ֻeQNğ>u:pÇ$v-OjTP@ߊ<ƿmLơ{VI* j̰ :znL8 9B:3XToOcMB9AD.5xoIG5[)y% pwXUZ\ދۡ#z?yz3Tc5jK\A(⻢6NdD[P)?)qKc̊-ZhgGX!ր3naa,1@1Ү2h?Rr$(C3 tIt&r##UC㏨_FfI-#UVʖi&N`O*@sTfhPP-P09q5-jnmhɳO#1'繤v4* Ǫ?c(o5N::('6.3HxVݙ^İ*H 9zC2q5ORxB1/z맡Ա(7 T>!Q6Wa-PmCgc${VFWĊGֲ[5:sҹŠ9o]$lsVэFs`gI-+rKmd8ՏmkA<^&;^)Y W I.R@_Sٓ%tqW[LX|A9hIS#LF{~y/̝ś+)C5s /~eihaU>5Ŋ;FV1n斍%HCn*{zTNI"sApqntk:_ŏ52c}kՖQN2 t GSVDJ WZD3 WsZ8q~*ry_`ο+G4{+hm2xw~"4 % )cue)kiTP9{j,HlNRcEݒdsfԟBm\ߦ h'MsGr!H7X_Qt6, f'HBBa~Y4RcwiWkc%0#4hvי`qH 3hA3}WsZ*|3_MY-| e܎WOMsGrƝGpcsjokgq ͳUWfꠒq+q]'KqvӤ\g+YKEc8Wrk@$d=>FsIf(n?ҴS3p)fcSYoz;&qϟDW/~g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j&qϗEQ5߇g_S_j\.-f|+38ǥT02RNj979r}[ i8@8 NormalCJ_HaJmH sH tH 66 Heading 1$$@&a$CJ BB Heading 2$$@&a$56>*\]<A@< Default Paragraph Font,@, Header  !, @, Footer  !&)@& Page NumberTC"T Body Text Indent0^`0CJOJQJ^J:^2: Normal (Web)dd[$\$*B@B* Body TextCJ.U@Q. Hyperlink >*B*phXRbX Body Text Indent 20^`0CJOJQJ^J>V@q> FollowedHyperlink >*B* ph!" : vXYoprs$ c d   = > K L # $ I J -.^ ?u 4](R%AB>aW !Q!!!!!!!"""""000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0000 0 0 0 0000 0 0 0 000@0@0@0@0@0@0 0,,cccf&!& !& &W^`f!T8@0(  B S  ?!"DQ2?N[( /   f q q | w { +;GP[!'*-469[^or '2ips  !$LOnqu~6@HSn|>Gap+!"""!'*-469VY[^jmnrip  !$GJLOilnq@@jv!!!!!"""""" Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike Scott|C:\Documents and Settings\scottm\Application Data\Microsoft\Word\AutoRecovery save of Topic2_2DArraysProgrammingProject3.asd Mike Scott|C:\Documents and Settings\scottm\Application Data\Microsoft\Word\AutoRecovery save of Topic2_2DArraysProgrammingProject3.asd Mike Scott|C:\Documents and Settings\scottm\Application Data\Microsoft\Word\AutoRecovery save of Topic2_2DArraysProgrammingProject3.asd Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc Mike ScottHC:\307\AP version\Topic2_2DArrays\Topic2_2DArraysProgrammingProject3.doc T9R'! ADWČMc\,0uqn ,Bft+*2B*ny7: x&kYVHp]x^/Oh^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.hhh^h`.h88^8`.hL^`L.h  ^ `.h  ^ `.hxLx^x`L.hHH^H`.h^`.hL^`L.hh^h`56B*CJOJQJo(ph ^`OJQJo(o ^`OJQJo( pp^p`OJQJo( @ @ ^@ `OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o ^`OJQJo( Mc[y>! qn ,&<]xVT9ny7W+*2                                                                                                            @!!)!!!"@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier New;Wingdings"qhk&&;q0d)"! 2QQuestion Mike Scott Mike ScottOh+'0x  4 @ LX`hp Question ues Mike Scottikeike Normal.dot Mike Scott16eMicrosoft Word 9.0@J&@:M@(\u՜.+,D՜.+,8 hp  U of T;)"  Question Title 8@ _PID_HLINKSAWp..\..\..\DownLoads\utcs.jpgj:"..\..\..\DownLoads\utcsInvert.jpgs."..\..\..\DownLoads\utcsNoBlue.jpgC..\images\utcs.jpg  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMOPQRSTUVWXYZ[\]^_`abcdefghijklnopqrstvwxyz{|Root Entry FeuData _1TableN=WordDocument":SummaryInformation(mDocumentSummaryInformation8uCompObjjObjectPooleueu  FMicrosoft Word Document MSWordDocWord.Document.89q