//// Array numbers bars, display largest
//// Lisa Sparacino

String title=  "Array numbers, bars (largest)";
String author=  "Lisa Sparacino";

//HELP declaration
String help=  "KEYS:\n  q: quit\n  r: Reset\n l: Largest number\n";


int many=20;          // Array size
int[] numbers= new int[many];
float max, avg, sig;

float w, h;          // Spacing for rows & columns
float w23;
float barmax;
float largest;

void setup() {
  size( 800, 650 );
  // size of cells
  w=  width / (many+3);
  h=  height / (many +3);
  barmax=  width - (many-3)*w;
  reset();
}
void reset() {
  reset( numbers, many );
}
void reset( int[] a, int m ) {
  // Fill array with random numbers from 1 to 300
  for (int j=0; j<m; ++j) {
    a[j]=  int(  random(1,300)  );
  }
  max=avg=sig=0;
}
void draw() {
  background( 155,200,250 );
  show( numbers, many );
  fill(0);
  textSize(20);
  text( title, width/3, 25 );
  textSize(12);
  text( author, 10, height-10 );
  
  //Help Key 
  if (keyPressed && key == '?') {
    fill(0);
    textSize(14);
    text( help, 520, 500 );
    textSize(12);
    return;
  }
}
void show( int[] a, int m ) {
  //// Display the data.
  float x=w, y=h+10;
  for (int j=0; j<m; ++j) {
    fill(0);
    text( a[j], x, y+10 );
    // Show a bar
    fill( 255-2*a[j], 2*a[j], 255-(2*a[j]) );
    rect( x+25,y, barmax*a[j]/100, h*0.8 );
    y += h;
   
if (largest>0) {
     fill (0); text( "largest:  "+largest, w23, 20 ); }
     
  }
}
 
  //// FIND largest NUMBER////
int large( int[] a, int m) {
  int largest=  a[0];
  for (int j=1; j<m; ++j) {
    if (a[j] > largest) largest=  a[j];
  }
  return largest; }

 
   //// FIND smallest NUMBER////
//int small( int[] s, int l) {
// int smallest=  s[0];
//for (int j=1; j<s; --j) {
// if (s[j] < smallest) smallest=  s[j];

  
// if (smallest>0) {
// fill (0); text( "smallest:  "+smallest, w23, 20 ); }
   
// return smallest; 
// return largest;  }



//// EVENTS ////
void keyPressed() {
  if (key == 'q') exit();
  if (key == 'r') reset();
  if (key == 'l' ) largest=  large( numbers, many );
}

