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);
}
}