Murtolukujen osamäärä

Murtolukujen osamäärä



Tämä simulaatio havainnollistaa kahden murtoluvun jakolaskua. 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);
 stroke(0);
 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);
 
 
 float h1 = 700.0/a2;
 float h2 = 700.0/c2;
 
 stroke(200,0,100);
 fill(200,0,100);
 line(50,350,50+h1*b2,350);
 line(50,610,50+h2*d2,610);
 triangle(50,350,55,345,55,355);
 triangle(50+h1*b2,350,45+h1*b2,345,45+h1*b2,355);
 triangle(50,610,55,615,55,605);
 triangle(50+h2*d2,610,45+h2*d2,615,45+h2*d2,605);
 text(b2*c2,50+((h1*b2)/2.0),340);
 text(a2*d2,50+((h2*d2)/2.0),640);
 stroke(255,0,0); 
 float h3 = h2*d2/(a2*d2);
 if ((b2*c2) > (a2*d2)) {
 for (int s=0; s <=b2*c2; s++) {
   line(50+h3*s,390,50+h3*s,560);
 }
 } else {
 for (int s=0; s <=a2*d2; s++) {
   line(50+h3*s,390,50+h3*s,560);
 }
 }
 stroke(0); 
 fill(100,200,255);
 rect(50,400,700,50);
 rect(50,500,700,50);
 fill(200,255,100);
 rect(50,400,h1*b2,50);
 rect(50,500,h2*d2,50);
 for (int s=1; s <=a2; s++) {
 float e = 700.0/a2;
 line(50+e*s,400,50+e*s,450);
 }
 for (int s=1; s <=c2; s++) {
 float e = 700.0/c2;
 line(50+e*s,500,50+e*s,550);
 }
 stroke(200,0,100);
 line(50+h2*d2,390,50+h2*d2,560);
 fill(0);
 text("1",40+h2*d2,595);
 stroke(0);
 text(b2,50,240);
 text(a2,50,280);
 line(45,250,85,250);
 text(":",90,260);
 text(d2,110,240);
 text(c2,110,280);
 line(105,250,145,250);
 text("=",150,260);
 text(b2,180,240);
 text(a2,180,280);
 line(175,250,215,250);
 text("\u00B7",220,260);
 text(c2,240,240);
 text(d2,240,280);
 line(235,250,275,250);
 text("=",280,260);
 text(b2*c2,310,240);
 text(a2*d2,310,280);
 line(305,250,365,250);
 
 
 
 int jako=1;
 if ((((a2*d2)%2)==0) && ((b2*c2)%2==0)) { jako=2; }
 if ((((a2*d2)%3)==0) && ((b2*c2)%3==0)) { jako=3; }
 if ((((a2*d2)%4)==0) && ((b2*c2)%4==0)) { jako=4; }
 if ((((a2*d2)%5)==0) && ((b2*c2)%5==0)) { jako=5; }
 if ((((a2*d2)%6)==0) && ((b2*c2)%6==0)) { jako=6; }
 if ((((a2*d2)%7)==0) && ((b2*c2)%7==0)) { jako=7; }
 if ((((a2*d2)%8)==0) && ((b2*c2)%8==0)) { jako=8; }
 if ((((a2*d2)%9)==0) && ((b2*c2)%9==0)) { jako=9; }
 if ((((a2*d2)%10)==0) && ((b2*c2)%10==0)) { jako=10; }
 if ((((a2*d2)%11)==0) && ((b2*c2)%11==0)) { jako=11; }
 if ((((a2*d2)%12)==0) && ((b2*c2)%12==0)) { jako=12; }
 if ((((a2*d2)%13)==0) && ((b2*c2)%13==0)) { jako=13; }
 if ((((a2*d2)%14)==0) && ((b2*c2)%14==0)) { jako=14; }
 if ((((a2*d2)%15)==0) && ((b2*c2)%15==0)) { jako=15; }
 if ((((a2*d2)%16)==0) && ((b2*c2)%16==0)) { jako=16; }
 if ((((a2*d2)%17)==0) && ((b2*c2)%17==0)) { jako=17; }
 if ((((a2*d2)%18)==0) && ((b2*c2)%18==0)) { jako=18; }
 if ((((a2*d2)%19)==0) && ((b2*c2)%19==0)) { jako=19; }
 if ((((a2*d2)%20)==0) && ((b2*c2)%20==0)) { jako=20; } 
 if ((((a2*d2)%21)==0) && ((b2*c2)%21==0)) { jako=21; }
 if ((((a2*d2)%22)==0) && ((b2*c2)%22==0)) { jako=22; }
 if ((((a2*d2)%23)==0) && ((b2*c2)%23==0)) { jako=23; }
 if ((((a2*d2)%24)==0) && ((b2*c2)%24==0)) { jako=24; }
 if ((((a2*d2)%25)==0) && ((b2*c2)%25==0)) { jako=25; }
 if ((((a2*d2)%26)==0) && ((b2*c2)%26==0)) { jako=26; }
 if ((((a2*d2)%27)==0) && ((b2*c2)%27==0)) { jako=27; }
 if ((((a2*d2)%28)==0) && ((b2*c2)%28==0)) { jako=28; }
 if ((((a2*d2)%29)==0) && ((b2*c2)%29==0)) { jako=29; }
 if ((((a2*d2)%30)==0) && ((b2*c2)%30==0)) { jako=30; } 
 if ((((a2*d2)%31)==0) && ((b2*c2)%31==0)) { jako=31; }
 if ((((a2*d2)%32)==0) && ((b2*c2)%32==0)) { jako=32; }
 if ((((a2*d2)%33)==0) && ((b2*c2)%33==0)) { jako=33; }
 if ((((a2*d2)%34)==0) && ((b2*c2)%34==0)) { jako=34; }
 if ((((a2*d2)%35)==0) && ((b2*c2)%35==0)) { jako=35; }
 if ((((a2*d2)%36)==0) && ((b2*c2)%36==0)) { jako=36; }
 if ((((a2*d2)%37)==0) && ((b2*c2)%37==0)) { jako=37; }
 if ((((a2*d2)%38)==0) && ((b2*c2)%38==0)) { jako=38; }
 if ((((a2*d2)%39)==0) && ((b2*c2)%39==0)) { jako=39; }
 if ((((a2*d2)%40)==0) && ((b2*c2)%40==0)) { jako=40; } 
 if ((((a2*d2)%41)==0) && ((b2*c2)%41==0)) { jako=41; }
 if ((((a2*d2)%42)==0) && ((b2*c2)%42==0)) { jako=42; }
 if ((((a2*d2)%43)==0) && ((b2*c2)%43==0)) { jako=43; }
 if ((((a2*d2)%44)==0) && ((b2*c2)%44==0)) { jako=44; }
 if ((((a2*d2)%45)==0) && ((b2*c2)%45==0)) { jako=45; }
 if ((((a2*d2)%46)==0) && ((b2*c2)%46==0)) { jako=46; }
 if ((((a2*d2)%47)==0) && ((b2*c2)%47==0)) { jako=47; }
 if ((((a2*d2)%48)==0) && ((b2*c2)%48==0)) { jako=48; }
 if ((((a2*d2)%49)==0) && ((b2*c2)%49==0)) { jako=49; }
 if ((((a2*d2)%50)==0) && ((b2*c2)%50==0)) { jako=50; } 
 if (jako != 1) {
 if (a2*d2 == b2*c2) {
 if ((a2*d2 == 0) && (b2*c2 == 0)) {
 text("= 0",370,260);
 } else {
 text("= 1",370,260);
 }
 } else if (b2*c2 == 0) {
 text("= 0",370,260);
 } else {
 text("=",370,260);
 text((a2*d2)/jako,410,280);
 text((b2*c2)/jako,410,240);
 textSize(20);
 text(jako,355,205);
 textSize(30);
 strokeWeight(2);
 noFill();
 arc(365,200,30,30,radians(90),radians(180));
 fill(0);
 line(410,250,440,250);
 if (((a2*d2*10.0)/(jako*10.0)) == 1) {
   text("= "+((b2*c2)/jako),450,260);
 } else
 if (((a2*d2*10.0)/(jako*10.0)) < ((b2*c2*10.0)/(jako*10.0))) {
 float t1 = (a2*d2*10.0)/(jako*10.0);
 float t2 = (b2*c2*10.0)/(jako*10.0);
 if (t1 != 0) {
 text("= "+int(t2/t1),450,260);
 }
 if (t2%t1 != 0) {
 if (t1 != 0) {
 text(round(t2%t1),500,240);
 text(round(t1),500,280);
 line(500,250,540,250);
 } else {
 text("= \u221E",450,260);
 }
 }
 }
 }
 
 }
 if (jako == 1) {
 if (((a2*d2*10.0)/(10.0)) < ((b2*c2*10.0)/(10.0))) {
 float t1 = (a2*d2*10.0)/(10.0);
 float t2 = (b2*c2*10.0)/(10.0);
 text("= "+int(t2/t1),370,260);
 if (t2%t1 != 0) {
  text(round(t2%t1),420,240);
  text(round(t1),420,280);
 line(420,250,460,250);
 }
 }
 
 }
 
 text(b2,770,420);
 text(a2,770,460);
 line(765,430,805,430);
 
 text(d2,770,520);
 text(c2,770,560);
 line(765,530,805,530);
 strokeWeight(1);
}