// Anthony E. Capiral © 2012 // CST Intro to Programming // Project 5 - Arrays, Random Numbers // "Hanging Banners" // Random array of integers, displayed using a vertical bar graph // with filling, sorting capabilites, and find largest value // how many random numbers in the array int numberOfInts = 20; // delare an array called randomInts, to be filled with integers int randomInts[] = new int[numberOfInts]; // informational text String title = "CST 112 Project 5"; String projectName = "- Hanging Banners -"; String projectNameTwo = "(Random Integers in an Array)"; String author = "Anthony E. Capiral"; String date = "© 12.17.2012"; String keys = "- [ F ]ill array with random Integers, [ S ]ort array low to high, show [ L ]argest integer -"; void setup() { smooth(); size(700, 450); createBg(); } void draw() { } // informational text void infoText() { fill(255); text(title, 300, 20); fill(255, 0, 255); text(projectName, 294, 30); fill(255); text(projectNameTwo, 270, 40); text(author, 30, 400); text(date, 40, 410); fill(255, 0, 255); text(keys, 135, 430); } // background void createBg() { noStroke(); rectMode(CORNERS); fill(25, 25, 100); rect(0, 0, width, height); ellipseMode(CENTER); fill(0, 0, 200); ellipse(width/2, -50, 800, 450); infoText(); } // integers void randomizeInts() { // loop to fill array for (int i = 0; i < numberOfInts; i++) { // random numbers from 0 to 99 randomInts[i] = int(random(1, 100)); } } // display(fill) the random ints void fillInts(int randInts[], int number) { createBg(); // initial starting coordinates to show the array int iPosX = 60; int iPosY = 75; int iSpace = 30; // space between each random number displayed fill(255); // white text for integers // loop to show array for (int i = 0; i < number; i++) { text(randInts[i], iPosX, iPosY); iPosX = iPosX + iSpace; } } // display the banners void showBanners(int randInts[], int number) { // intial starting coords for the banners (bars) // drawn vertically int bPosX = 55; int bPosY = 80; int bSpace = 30; for (int i = 0; i < number; i++) { // draw banners with varying colors if (randInts[i] <= 25) { fill(25, 0, 100); } if ( (randInts[i] > 25) && (randInts[i] <= 50) ) { fill(50, 0, 150); } if ( (randInts[i] > 50) && (randInts[i] <= 75) ) { fill(75, 0, 200); } if (randInts[i] > 75) { fill(100, 0, 255); } // height of the banner int bHeight = (randInts[i] * 3); rect(bPosX, bPosY, bPosX+20, (bPosY + bHeight)); // triangle tip at the bottom triangle(bPosX, (bPosY + bHeight), bPosX+20, (bPosY + bHeight), bPosX+10, (bPosY + bHeight + 20) ); // increment space between banners bPosX = bPosX + bSpace; } } // find and return the largest integer in the array and highlight largest banner! int largestInt(int randInts[], int number) { int i = 0; // temp variable relating to the index of the array for (int j = 1; j < number; j++) { // start at j = 1, since first value dont need to compare with itself if (randInts[j] > randInts[i]) { i = j; // if integer at index j is larger than integer at index i, i becomes the index with the largest integer } } //println(randInts[i]); fill(255, 255, 0); text("Largest Integer is " + randInts[i], 295, height-45); // highlight largest banner! int bPosX = 55; // initial starting rectangle position X for banner bPosX = bPosX + (30 * i); // draw rect beginning at same coords as largest integer value (array index) int bPosY = 80; // y coord int bHeight = (randInts[i] * 3); fill(255, 255, 0); // yellow rect(bPosX, bPosY, bPosX+20, (bPosY + bHeight)); // triangle tip at the bottom triangle(bPosX, (bPosY + bHeight), bPosX+20, (bPosY + bHeight), bPosX+10, (bPosY + bHeight + 20) ); return i; // this index of the array corresponds to the largest integer } // swap the integers in the array void swapInts(int randInts[], int iInt, int jInt) { int tempInt; tempInt = randInts[iInt]; randInts[iInt] = randInts[jInt]; randInts[jInt] = tempInt; // assuming first case // tempInt = randInts[0], randInts[0] = randInts[1], randInts[1] = randInts[0] } // sort the array from lowest to highest integer void sortInts(int randInts[], int number) { int n = number; while(n > 1) { int large = largestInt(randInts, n); // get the index of the largest integer in the array swapInts(randInts, large, n-1); // swap the indexes, starting from the LAST, working backward // and move largest integer to end of the array n--; // decrement n, move to next element (shrink array) } } // // randomizeInts() : function to create random integer values in the array // randomInts() : actual array of these random numbers // numberOfInts : max number of integers specified for the array void keyPressed() { // randomize, display(fill) array if (key == 'f') { createBg(); randomizeInts(); fillInts(randomInts, numberOfInts); showBanners(randomInts, numberOfInts); } // find and show largest integer in the array if (key == 'l') { largestInt(randomInts, numberOfInts); } // sort the array from smallest to largest Integer if (key == 's') { createBg(); sortInts(randomInts, numberOfInts); fillInts(randomInts, numberOfInts); showBanners(randomInts, numberOfInts); } }