Hei osaaks joku selittää..että jos mulla on ohjelma(javalla)mikä yhteenlaskee,vähentää,kertoo ja jakaa kaks annettua lukua, niin miten mä saan laitettua sinne persiiseen ohjelmakoodia, että se vastaus tulostuis supistettuna? Mulla on tällanen tästä suunnitteluvaiheesta valmiina..mut mites sinne perään tulee se supistus koodi?
Ohjelmakoodi:
double yht(double a, double b) {
summa = a b;
return summa;
}
double väh(double a, double b) {
vähennys = a-b;
return vähennys;
}
double osa(double a, double b) {
osamäärä = a/b;
return osamäärä;
}
double kerto(double a, double b) {
tulo = a*b;
return tulo;
...................tänne mitä? Kiitos jos joku jeesaa :)
Ohjelmakoodi:
double yht(double a, double b) {
summa = a b;
return summa;
}
double väh(double a, double b) {
vähennys = a-b;
return vähennys;
}
double osa(double a, double b) {
osamäärä = a/b;
return osamäärä;
}
double kerto(double a, double b) {
tulo = a*b;
return tulo;
...................tänne mitä? Kiitos jos joku jeesaa :)
Vastaukset 6
Vanhimmat
Koodisi laskee reaaliluvuilla, ei murtoluvuilla.
Supistamisessa tulee olla osoittaja ja nimittäjä. Kummastakin etsitään yhteiset tekijät jonka jälkeen tehdään tarvittavat jakolaskut.
Siis mitenkäs niin, voitko selventää. Osoittaja ja nimittäjä on int, ja eikös sitten kun molemmat on annettu..niin koko murtoluku on double? Tätäkö yritit vihjaista?
Kone tuntee ainoastaan binääriarvot, sen seurauksena kone ymmärtää ainoastaan desimaalilukuja. Murtoluku ei ole varsinaisesti luku, vaan kokonaislukujen jakolasku. Laskutoimitus. Eikä laskutoimituksella itsessään voi olla yksittäistä määrettä, ainoastaan sen tekijöillä ja tuloksella.
Eli sinun pitää siis saada se kone esittämään sen jakolaskun sievennös. Koska kyseessä on nimenomaan kokonaislukujen jakolasku, on osoittajan ja nimittäjän oltava int niin ennen kuin jälkeen sievennöksen.
Murtoluvuissa on osoittaja ja nimittäjä. Esimerkkejä löytyy esim osoitteesta
http://www.oph.fi/etalukio/opiskelumodulit/pimatem/paavalikko/pmku1/laskpot_s1.html
Jotta voisit esittää murtoluvun tarvitset siis kaksi kokonaislukua. Esimerkkisi jakolaskun tulos on reaaliluku jota Javassa esittää esim. tietotyppi double. Itse tekisin luokan nimeltä Murtoluku ja sille tarvittavat metodit.
Esimerkki
1/2 * 2/3 = 2/6
eikä 0,333333333333333333333333333
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arithmetic.html
Esim:
System.out.println(Math.round(x/y)+" "+x%y+"/"+y);
Saat sen näin Stringiksi (ja vähän extraa...)
// koodi alkaa
String sup(int osoit, int nimit) {
// Murtoluku sup
String sup = "" + osoit + "/" + nimit + "";
// Haetaan suurin yhteinen tekijä
// ja supistetaan sillä
int o = osoit;
int n = nimit;
for(int i=2; i= nimit){
// Kokonaisluku: jakojäännös = 0
if(osoit%nimit == 0) {
sup = "" + osoit/nimit;
// Kokonaisluku + jakojäännös murtolukuna
} else {
int jn = osoit%nimit;
sup = "" + osoit/nimit + " " +
jn + "/" + nimit;
}
}
return sup;
}
// koodi loppuu