Java tehtäviä konsoli ratkaisu1

Mureakuha

Loikkaa: valikkoon, hakuun

Tehtävä:

Jos Maasta ammutaan raketti tarpeeksi suurella nopeudella, kulkee raketin ohjaajan mielestä aika hitaammin kuin Maahan jääneiden mielestä. Kaavan muodossa Maassa kuluva aika voidaan laskea seuraavasti; X = t/sqrt(1 - v*v / c*c), jossa t on raketin ohjaajan mittaama aika, v raketin nopeus ja c valonnopeus. Kirjoita ohjelma, joka laskee Maassa kuluneen ajan ja raketissa kuluneen ajan kun raketti käy mutkan seuraavissa tähdissä nopeudella, joka kysytään ohjelmassa:

  • Alpha Centauri, etäisyys 4,3 valovuotta.
  • Sirius, etäisyys 8,7 valovuotta.
  • Tau Ceti, etäisyys 11,8 valovuotta.
import java.io.*;
import java.text.*;
 
public class Aikadilataatio
{
 
  public static void main (String[] args)
  {
    double v = 0; // nopeus
    byte bTemp[] = new byte[10]; // taulukko
    DecimalFormat muotoilu = new DecimalFormat("0.00"); // muotoilu
 
    System.out.print("Anna raketin nopeus osana valonnopeudesta (0-1): ");
 
    try
    {
      System.in.read(bTemp);
      String strTemp = new String(bTemp);
      v = Double.parseDouble(strTemp); 
 
      if (v > 0 && v < 1)
      {
        System.out.println("\nAlpha Centauri, etäisyys 4.3 valovuotta");
        System.out.println("Maassa kulunut aika vuosissa:    " + muotoilu.parse(muotoilu.format(4.3/v)));
        System.out.println("Raketissa kulunut aika vuosissa: " + muotoilu.parse(muotoilu.format(4.3/v*Math.sqrt(1 - v*v))));
 
        System.out.println("\nSirius, etäisyys 8.7 valovuotta");
        System.out.println("Maassa kulunut aika vuosissa:    " + muotoilu.parse(muotoilu.format(8.7/v)));
        System.out.println("Raketissa kulunut aika vuosissa: " + muotoilu.parse(muotoilu.format(8.7/v*Math.sqrt(1 - v*v))));
 
        System.out.println("\nTau Ceti, etäisyys 11.8 valovuotta");
        System.out.println("Maassa kulunut aika vuosissa:    " + muotoilu.parse(muotoilu.format(11.8/v)));
        System.out.println("Raketissa kulunut aika vuosissa: " + muotoilu.parse(muotoilu.format(11.8/v*Math.sqrt(1 - v*v))));
      }
    } catch(Exception e) { System.out.println("Virhe!!"); }
  }
}
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.

Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut