Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigDecimal;
- import static oracle.jrockit.jfr.events.Bits.doubleValue;
- import static oracle.jrockit.jfr.events.Bits.longValue;
- public class Ohjelma {
- public static void main(String[] args) {
- // annetaan alkuarvot, aika askel sekuntteina, nopeusaskel ja alkunopeus m/s
- kiihtyvyys Kiihtyvyys = new kiihtyvyys();
- String maa = "maa";
- String kuu = "kuu";
- BigDecimal aikaAskel = new BigDecimal("0.01");
- BigDecimal nopeusAskel = new BigDecimal("10");
- BigDecimal aluksenAlkuNopeus = new BigDecimal("8"
- + "0000");
- Boolean kuuSaavutettu = false;
- Boolean viimeinenMatka = false;
- // käytetään toistolausetta kuun saavuttamiseen vaadittavan minimi nopeuden etsimiseksi,
- // aluksen paikka esitetään etäisyytenä maasta
- while(viimeinenMatka == false){
- BigDecimal aluksenNopeus = aluksenAlkuNopeus;
- BigDecimal aluksenPaikka = new BigDecimal("100000");
- BigDecimal aluksenAikaisempiPaikka = new BigDecimal("100000");
- BigDecimal kiihtyvyys = new BigDecimal("0");
- BigDecimal kerroin = new BigDecimal("1.1");
- int k = 0;
- while(longValue(aluksenPaikka) < 384400000 && k < 10000000){
- k++;
- if (kuuSaavutettu == true){
- viimeinenMatka = true;
- }
- aluksenAikaisempiPaikka = aluksenPaikka;
- //lasketaan luokan kiihtyvyys avulla kuun ja maan painovoiman alukselle aiheuttama kiihtyvyys
- kiihtyvyys = Kiihtyvyys.painoVoima(kuu, aluksenPaikka).subtract(Kiihtyvyys.painoVoima(maa, aluksenPaikka));
- aluksenNopeus = aluksenNopeus.add(kiihtyvyys.multiply(aikaAskel));
- aluksenPaikka = aluksenPaikka.add(aluksenNopeus.multiply(aikaAskel));
- //lopetetaan laskenta, jos alus tulee lähemmäksi maata
- if(longValue(aluksenPaikka.subtract(aluksenAikaisempiPaikka)) < 0){
- break;
- }
- //lopetateen laskenta jos kuu saavutettiin
- if(longValue(aluksenPaikka) > 384400000){
- kuuSaavutettu = true;
- }
- }
- if (kuuSaavutettu == false){
- System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
- System.out.println("Iteraatioiden määrä: " + k);
- System.out.println("Kuuta ei (vielä) saavutettu :(");
- }
- if (kuuSaavutettu == true && viimeinenMatka == false){
- System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
- System.out.println("Iteraatioiden määrä: " + k);
- System.out.println("Matka-aika: " + k*doubleValue(aikaAskel) + " s");
- System.out.println("Kuu saavutettiin!");
- }
- if (kuuSaavutettu == true && viimeinenMatka == true){
- System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
- System.out.println("Iteraatioiden määrä: " + k);
- System.out.println("Matka-aika 10% suuremmalla nopeudella: " + k*doubleValue(aikaAskel) + " s");
- }
- //lasketaan uusi alkunopeus seuraavaa yritystä varten
- if (kuuSaavutettu == false){
- aluksenAlkuNopeus = aluksenAlkuNopeus.add(nopeusAskel);
- } else {
- aluksenAlkuNopeus = aluksenAlkuNopeus.multiply(kerroin);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement