Muutosprosentti

Muutosprosentti



Tämä simulaatio esittää muutosprosenttia. Ohjelman koodi on seuraava. Kopioi tämä koodi kokonaisuudessaan ohjelmointiympäristöön ja suorita koodi. Sinun ei tarvitse tehdä koodiin mitään muutoksia.

// Ohjelman tehnyt e-Oppi Oy
// 28.3.2018
int a = 200; // Laskurin alkuarvo (ikkunan keskellä)
int b = 200; // Laskurin alkuarvo (ikkunan keskellä)

void setup () {
     size(850,700); // ikkunan koko
     stroke(0); // Musta viivan väri
     strokeWeight(3);
}

void draw() {
     background(255); // Tyhjennä tausta
     textSize(30);
     fill(255,255,0); // Keltainen täyttöväri
     rect(0,0,849,40); // Piirrä keltainen suorakulmio
     rect(0,40,849,40); // Piirrä keltainen suorakulmio
     fill(255,100,100); // Punainen täyttöväri
     rect(a,0,50,40); // Piirrä punainen neliö
     rect(b,40,50,40); // Piirrä punainen neliö
     stroke(0);
     int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
     int y1 = mouseY;
       if (mousePressed == true) {
     if ((y1 > 0) && (y1 < 40)) {
     if ((x1>a) && (a < 800)) { // Jos hiiri on oikealla puolen
         a++; // niin kasvata laskuria
     }

     if ((x1<a) && (a >0)) { // Jos hiiri on vasemmalla puolen
         a--; // niin pienennä laskuria
     }
     }
    
     if ((y1 > 40) && (y1 < 80)) {
     if ((x1>b) && (b < 800)) { // Jos hiiri on oikealla puolen
         b++; // niin kasvata laskuria
     }

     if ((x1<b) && (b>0)) { // Jos hiiri on vasemmalla puolen
         b--; // niin pienennä laskuria
     }
     }
       }
     fill(0); // Musta tekstin väri
     int a2 = round((map(a,0,800,1,500)));
     int b2 = round((map(b,0,800,1,a2*2)));
     int c2 = round((map(b2,0,a2*2,0,500)));
     if (b2 > 999) { textSize(14); } else { textSize(24); }
          text(""+a2,a+4,33);
        
          text(""+b2,b+4,73);
          textSize(24);
     fill(200,200,255);     
     rect(150,100,50,500);
     for (int s=0; s <= 20; s++) {
       line(150,100+s*25,200,100+s*25);
       line(500,100+s*25,550,100+s*25);
     }
     line(140,350,210,350);
     line(140,100,210,100);
     line(140,600,210,600);
     fill(0);
     text("2 = 200 %",10,110);
     text("1 = 100 %",10,360);
     text("0 = 0 %",40,610);
     text(2*a2,220,110);
     text(a2,220,360);
     text("0",220,610);
     text(round(100*(100*b2*10.0/(a2*10.0)))/100.0+" %",280,610-c2);
     line(200,600-c2,270,600-c2);
     line(490,350,560,350);
     
     fill(255,0,0,150);
     rect(150,600,50,-c2); 
     noFill();
     rect(500,100,50,500);
     fill(0,0,255,150);
     rect(500,350,50,250);
     if ((100-100.0*b2/a2) < 0 ) {
     fill(0,255,0,150);
     } else {
        fill(255,0,255,150);
     }
     rect(500,350,50,250-c2);
     fill(0);
     text(round(10*(-(100-100.0*b2/a2)))/10.0+" %",565,608-c2);
     text((10.0*b2/a2)/10.0,410,610-c2);
     line(490,600-c2,560,600-c2);
          
         
    fill(0);
    text("Muutos %",700,150);
    text(b2+" -"+a2,700,180);
    line(700,185,810,185);
    text(a2,730,210);
    text((b2-a2),730,250);
    text("=",700,260);
    line(730,255,790,255);
    text(a2,730,280);
    text("= "+round(1000*((b2-a2)*10.0)/(a2*10.0))/1000.0,700,320);
    text("= "+round(10*((b2-a2)*1000.0)/(a2*10.0))/10.0+" %",700,360);    
    text("Kerroin",700,420);
    text(b2,730,460);
    line(700,465,790,465);
    text(a2,730,490);
    text("= "+round(1000*((b2)*10.0)/(a2*10.0))/1000.0,700,530);
    if ( ((b2-a2)*10.0/(a2*10.0)) < 0) {
       text("1"+round(1000*((b2-a2)*10.0)/(a2*10.0))/1000.0+" = "+nfc((1+round(1000*((b2-a2)*10.0)/(a2*10.0))/1000.0),3),500,680);
    } else {
       text("1+"+round(1000*((b2-a2)*10.0)/(a2*10.0))/1000.0+" = "+nfc((1+round(1000*((b2-a2)*10.0)/(a2*10.0))/1000.0),3),500,680);
    }
}