Prosentti
Prosentti

Tämä simulaatio havainnollistaa murtolukua, desimaalilukua ja prosenttilukua. 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 = 0; // Laskurin alkuarvo (ikkunan keskellä)
int b = 800; // Laskurin alkuarvo (ikkunan keskellä)
void setup () {
size(850,700); // ikkunan koko
stroke(0); // Musta viivan väri
strokeWeight(3);
}
void draw() {
textSize(30);
background(255); // Tyhjennä tausta
fill(255,255,0); // Keltainen täyttöväri
rect(0,0,849,50); // Piirrä keltainen suorakulmio
rect(0,50,849,50); // Piirrä keltainen suorakulmio
fill(255,100,100); // Punainen täyttöväri
rect(a,0,50,50); // Piirrä punainen neliö
rect(b,50,50,50); // Piirrä punainen neliö
int x1 = mouseX; // Selvitä hiiren vaakakoordinaatti
int y1 = mouseY;
if (mousePressed == true) {
if ((y1 > 0) && (y1 < 50)) {
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 > 50) && (y1 < 100)) {
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
float a2 = (map(a,0,800,1,10));
float b2 = (map(b,0,800,1,10));
textSize(20);
text(nfc(a2,1),a+10,35);
text(nfc(b2,1),b+10,85);
textSize(30);
text("Montako prosenttia "+round(a2*10)/10.0+ " on "+round(b2*10)/10.0+":stä?",50,200);
text(""+round(a2*10)/10.0,50,250);
line(40,260,130,260);
text(""+round(b2*10)/10.0,50,290);
text(" = "+round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0+" = "+round(100*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0)+" %",140,269);
fill(200,255,0);
if (((a2/b2) >= 0) && ((a2/b2) <= 1)) {
arc(150,400,200,200,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0),PIE);
}
if (((a2/b2) > 1) && ((a2/b2) <= 2)) {
ellipse(150,400,200,200);
arc(400,400,200,200,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-360),PIE);
}
if (((a2/b2) > 2) && ((a2/b2) <= 3)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
arc(650,400,200,200,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-2*360),PIE);
}
if (((a2/b2) > 3) && ((a2/b2) <= 4)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
arc(60,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-3*360),PIE);
}
if (((a2/b2) > 4) && ((a2/b2) <= 5)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
arc(170,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-4*360),PIE);
}
if (((a2/b2) > 5) && ((a2/b2) <= 6)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
ellipse(170,600,100,100);
arc(280,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-5*360),PIE);
}
if (((a2/b2) > 6) && ((a2/b2) <= 7)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
ellipse(170,600,100,100);
ellipse(280,600,100,100);
arc(390,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-6*360),PIE);
}
if (((a2/b2) > 7) && ((a2/b2) <= 8)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
ellipse(170,600,100,100);
ellipse(280,600,100,100);
ellipse(390,600,100,100);
arc(500,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-7*360),PIE);
}
if (((a2/b2) > 8) && ((a2/b2) <= 9)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
ellipse(170,600,100,100);
ellipse(280,600,100,100);
ellipse(390,600,100,100);
ellipse(500,600,100,100);
arc(610,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-8*360),PIE);
}
if (((a2/b2) > 9) && ((a2/b2) <= 10)) {
ellipse(150,400,200,200);
ellipse(400,400,200,200);
ellipse(650,400,200,200);
ellipse(60,600,100,100);
ellipse(170,600,100,100);
ellipse(280,600,100,100);
ellipse(390,600,100,100);
ellipse(500,600,100,100);
ellipse(610,600,100,100);
arc(720,600,100,100,radians(0),radians(360*round(100*((round(a2*10)/10.0)/(round(b2*10)/10.0)))/100.0-9*360),PIE);
}
}