Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.46 KB | None | 0 0
  1. import java.math.BigDecimal;
  2. import static oracle.jrockit.jfr.events.Bits.doubleValue;
  3. import static oracle.jrockit.jfr.events.Bits.longValue;
  4. public class Ohjelma {
  5.    
  6.     public static void main(String[] args) {
  7.    
  8.      // annetaan alkuarvot, aika askel sekuntteina, nopeusaskel ja alkunopeus m/s    
  9.        
  10.     kiihtyvyys Kiihtyvyys = new kiihtyvyys();
  11.     String maa = "maa";
  12.     String kuu = "kuu";
  13.     BigDecimal aikaAskel = new BigDecimal("0.01");
  14.     BigDecimal nopeusAskel = new BigDecimal("10");
  15.     BigDecimal aluksenAlkuNopeus = new BigDecimal("8"
  16.             + "0000");
  17.     Boolean kuuSaavutettu = false;
  18.     Boolean viimeinenMatka = false;
  19.    
  20.     // käytetään toistolausetta kuun saavuttamiseen vaadittavan minimi nopeuden etsimiseksi,
  21.     // aluksen paikka esitetään etäisyytenä maasta
  22.    
  23.     while(viimeinenMatka == false){
  24.         BigDecimal aluksenNopeus = aluksenAlkuNopeus;
  25.         BigDecimal aluksenPaikka = new BigDecimal("100000");
  26.         BigDecimal aluksenAikaisempiPaikka = new BigDecimal("100000");
  27.         BigDecimal kiihtyvyys = new BigDecimal("0");
  28.         BigDecimal kerroin = new BigDecimal("1.1");
  29.         int k = 0;
  30.         while(longValue(aluksenPaikka) < 384400000 && k < 10000000){
  31.             k++;
  32.             if (kuuSaavutettu == true){
  33.                 viimeinenMatka = true;
  34.             }
  35.             aluksenAikaisempiPaikka = aluksenPaikka;
  36.            
  37.             //lasketaan luokan kiihtyvyys avulla kuun ja maan painovoiman alukselle aiheuttama kiihtyvyys
  38.  
  39.             kiihtyvyys = Kiihtyvyys.painoVoima(kuu, aluksenPaikka).subtract(Kiihtyvyys.painoVoima(maa, aluksenPaikka));
  40.             aluksenNopeus = aluksenNopeus.add(kiihtyvyys.multiply(aikaAskel));
  41.             aluksenPaikka = aluksenPaikka.add(aluksenNopeus.multiply(aikaAskel));
  42.            
  43.            
  44.             //lopetetaan laskenta, jos alus tulee lähemmäksi maata
  45.            
  46.             if(longValue(aluksenPaikka.subtract(aluksenAikaisempiPaikka)) < 0){
  47.                 break;
  48.             }
  49.            
  50.             //lopetateen laskenta jos kuu saavutettiin
  51.            
  52.             if(longValue(aluksenPaikka) > 384400000){
  53.                 kuuSaavutettu = true;
  54.             }
  55.            
  56.         }
  57.         if (kuuSaavutettu == false){
  58.             System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
  59.             System.out.println("Iteraatioiden määrä: " + k);
  60.             System.out.println("Kuuta ei (vielä) saavutettu :(");
  61.         }
  62.         if (kuuSaavutettu == true && viimeinenMatka == false){
  63.             System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
  64.             System.out.println("Iteraatioiden määrä: " + k);
  65.             System.out.println("Matka-aika: " + k*doubleValue(aikaAskel) + " s");
  66.             System.out.println("Kuu saavutettiin!");
  67.         }
  68.         if (kuuSaavutettu == true && viimeinenMatka == true){
  69.             System.out.println("Aluksen alkunopeus: " + aluksenAlkuNopeus);
  70.             System.out.println("Iteraatioiden määrä: " + k);
  71.             System.out.println("Matka-aika 10% suuremmalla nopeudella: " + k*doubleValue(aikaAskel) + " s");
  72.         }
  73.        
  74.         //lasketaan uusi alkunopeus seuraavaa yritystä varten
  75.         if (kuuSaavutettu == false){
  76.             aluksenAlkuNopeus = aluksenAlkuNopeus.add(nopeusAskel);
  77.         } else {
  78.             aluksenAlkuNopeus = aluksenAlkuNopeus.multiply(kerroin);
  79.         }
  80.     }
  81.     }
  82.    
  83.    
  84.  
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement