Murtolukujen tulo
Murtolukujen tulo

Tämä simulaatio havainnollistaa kahden murtoluvun kertolaskua. Kopioi alla oleva koodi ja aja ohjelma. Älä tee koodiin muutoksia.
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 200; // Laskurin alkuarvo (ikkunan keskellä)
int b = 200; // Laskurin alkuarvo (ikkunan keskellä)
int c = 200; // Laskurin alkuarvo (ikkunan keskellä)
int d = 200; // Laskurin alkuarvo (ikkunan keskellä)
void setup () {
size(850,650); // ikkunan koko
stroke(0); // Musta viivan väri
strokeWeight(3);
}
void draw() {
background(255); // Tyhjennä tausta
strokeWeight(2);
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
rect(0,80,849,40); // Piirrä keltainen suorakulmio
rect(0,120,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ö
rect(c,80,50,40); // Piirrä punainen neliö
rect(d,120,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
}
}
if ((y1 > 80) && (y1 < 120)) {
if ((x1>c) && (c < 800)) { // Jos hiiri on oikealla puolen
c++; // niin kasvata laskuria
}
if ((x1<c) && (c > 0)) { // Jos hiiri on vasemmalla puolen
c--; // niin pienennä laskuria
}
}
if ((y1 > 120) && (y1 < 160)) {
if ((x1>d) && (d < 800)) { // Jos hiiri on oikealla puolen
d++; // niin kasvata laskuria
}
if ((x1<d) && (d > 0)) { // Jos hiiri on vasemmalla puolen
d--; // niin pienennä laskuria
}
}
}
fill(0); // Musta tekstin väri
strokeWeight(2);
int a2 = round((map(a,0,800,1,10)));
int b2 = round((map(b,0,800,0,a2)));
int c2 = round((map(c,0,800,1,10)));
int d2 = round((map(d,0,800,0,c2)));
text(""+a2,a+4,33);
text(""+b2,b+4,73);
text(""+c2,c+4,113);
text(""+d2,d+4,153);
textSize(30);
fill(100,200,255);
rect(50,600,200,-200);
rect(300,600,200,-200);
rect(550,600,200,-200);
float h1 = 200.0/a2;
float h2 = 200.0/c2;
fill(200,255,100);
rect(50,600,200,-h1*b2);
rect(550,600,h2*d2,-h1*b2);
for (int s=1; s <=a2; s++) {
float e = 200.0/a2;
line(50,600-e*s,250,600-e*s);
line(550,600-e*s,750,600-e*s);
}
rect(300,600,h2*d2,-200);
for (int s=1; s <=c2; s++) {
float e = 200.0/c2;
line(300+e*s,600,300+e*s,400);
line(550+e*s,600,550+e*s,400);
}
fill(0);
text(b2,150,250);
text(a2,150,290);
text(d2,400,250);
text(c2,400,290);
line(140,260,190,260);
line(390,260,440,260);
text(b2,550,250);
text(a2,550,290);
text(d2,620,250);
text(c2,620,290);
text("=",670,270);
text(b2*d2,700,250);
text(a2*c2,700,290);
line(545,260,580,260);
line(615,260,660,260);
line(695,260,740,260);
strokeWeight(10);
point(600,260);
strokeWeight(2);
int jako=1;
if ((((a2*c2)%2)==0) && ((b2*d2)%2==0)) { jako=2; }
if ((((a2*c2)%3)==0) && ((b2*d2)%3==0)) { jako=3; }
if ((((a2*c2)%4)==0) && ((b2*d2)%4==0)) { jako=4; }
if ((((a2*c2)%5)==0) && ((b2*d2)%5==0)) { jako=5; }
if ((((a2*c2)%6)==0) && ((b2*d2)%6==0)) { jako=6; }
if ((((a2*c2)%7)==0) && ((b2*d2)%7==0)) { jako=7; }
if ((((a2*c2)%8)==0) && ((b2*d2)%8==0)) { jako=8; }
if ((((a2*c2)%9)==0) && ((b2*d2)%9==0)) { jako=9; }
if ((((a2*c2)%10)==0) && ((b2*d2)%10==0)) { jako=10; }
if ((((a2*c2)%11)==0) && ((b2*d2)%11==0)) { jako=11; }
if ((((a2*c2)%12)==0) && ((b2*d2)%12==0)) { jako=12; }
if ((((a2*c2)%13)==0) && ((b2*d2)%13==0)) { jako=13; }
if ((((a2*c2)%14)==0) && ((b2*d2)%14==0)) { jako=14; }
if ((((a2*c2)%15)==0) && ((b2*d2)%15==0)) { jako=15; }
if ((((a2*c2)%16)==0) && ((b2*d2)%16==0)) { jako=16; }
if ((((a2*c2)%17)==0) && ((b2*d2)%17==0)) { jako=17; }
if ((((a2*c2)%18)==0) && ((b2*d2)%18==0)) { jako=18; }
if ((((a2*c2)%19)==0) && ((b2*d2)%19==0)) { jako=19; }
if ((((a2*c2)%20)==0) && ((b2*d2)%20==0)) { jako=20; }
if ((((a2*c2)%21)==0) && ((b2*d2)%21==0)) { jako=21; }
if ((((a2*c2)%22)==0) && ((b2*d2)%22==0)) { jako=22; }
if ((((a2*c2)%23)==0) && ((b2*d2)%23==0)) { jako=23; }
if ((((a2*c2)%24)==0) && ((b2*d2)%24==0)) { jako=24; }
if ((((a2*c2)%25)==0) && ((b2*d2)%25==0)) { jako=25; }
if ((((a2*c2)%26)==0) && ((b2*d2)%26==0)) { jako=26; }
if ((((a2*c2)%27)==0) && ((b2*d2)%27==0)) { jako=27; }
if ((((a2*c2)%28)==0) && ((b2*d2)%28==0)) { jako=28; }
if ((((a2*c2)%29)==0) && ((b2*d2)%29==0)) { jako=29; }
if ((((a2*c2)%30)==0) && ((b2*d2)%30==0)) { jako=30; }
if ((((a2*c2)%31)==0) && ((b2*d2)%31==0)) { jako=31; }
if ((((a2*c2)%32)==0) && ((b2*d2)%32==0)) { jako=32; }
if ((((a2*c2)%33)==0) && ((b2*d2)%33==0)) { jako=33; }
if ((((a2*c2)%34)==0) && ((b2*d2)%34==0)) { jako=34; }
if ((((a2*c2)%35)==0) && ((b2*d2)%35==0)) { jako=35; }
if ((((a2*c2)%36)==0) && ((b2*d2)%36==0)) { jako=36; }
if ((((a2*c2)%37)==0) && ((b2*d2)%37==0)) { jako=37; }
if ((((a2*c2)%38)==0) && ((b2*d2)%38==0)) { jako=38; }
if ((((a2*c2)%39)==0) && ((b2*d2)%39==0)) { jako=39; }
if ((((a2*c2)%40)==0) && ((b2*d2)%40==0)) { jako=40; }
if ((((a2*c2)%41)==0) && ((b2*d2)%41==0)) { jako=41; }
if ((((a2*c2)%42)==0) && ((b2*d2)%42==0)) { jako=42; }
if ((((a2*c2)%43)==0) && ((b2*d2)%43==0)) { jako=43; }
if ((((a2*c2)%44)==0) && ((b2*d2)%44==0)) { jako=44; }
if ((((a2*c2)%45)==0) && ((b2*d2)%45==0)) { jako=45; }
if ((((a2*c2)%46)==0) && ((b2*d2)%46==0)) { jako=46; }
if ((((a2*c2)%47)==0) && ((b2*d2)%47==0)) { jako=47; }
if ((((a2*c2)%48)==0) && ((b2*d2)%48==0)) { jako=48; }
if ((((a2*c2)%49)==0) && ((b2*d2)%49==0)) { jako=49; }
if ((((a2*c2)%50)==0) && ((b2*d2)%50==0)) { jako=50; }
if (jako != 1) {
if (a2*c2 == b2*d2) {
text("= 1",750,270);
} else if (b2*d2 == 0) {
text("= 0",750,270);
} else {
text("=",750,270);
text((a2*c2)/jako,790,290);
text((b2*d2)/jako,790,250);
textSize(20);
text(jako,735,215);
textSize(30);
strokeWeight(2);
noFill();
arc(745,210,30,30,radians(90),radians(180));
fill(0);
line(785,260,830,260);
strokeWeight(1);
}
}
}