02312 Indledende programmering, IMM DTU, Ver. 2005-09-09
Løsningsforslag til opgaver til
2. semester-uge.
import
java.util.Scanner;
public
class Opgave5
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
double x;
System.out.print("Tast et
tal(kommatal med ','): ");
x =
scan.nextDouble();
System.out.print("Indlæst værdi:");
System.out.println(x);
}
}
//Math klassen er en del af "java.lang" pakken,
//som altid automatisk er med
//- den skal derfor ikke "importes"
import java.util.Scanner;
public class Opgave6 {
public static void main(String[] args)
{
//Ligningen tastes ind
Scanner scan = new Scanner(System.in);
System.out.println("Angiv a og b for y = a*x+b");
System.out.print("a = ");
double a = scan.nextDouble();
System.out.print("b = ");
double b = scan.nextDouble();
//Punktet tastes ind
System.out.println("Angiv koordinaterne til punktet (x, y)");
System.out.print("x = ");
double x = scan.nextDouble();
System.out.print("y = ");
double y = scan.nextDouble();
//Afstanden mellem linjen og punktet beregnes
//og skrives ud på skaermen
double dist = Math.abs(a*x-y+b)/Math.sqrt(1+Math.pow(a,2));
System.out.println("Afstanden mellem linjen og punktet er: " +dist);
}
}
import java.util.Scanner;
public class Opgave7
{
public static void
main(String[] args)
{
// Antal sekunder angives af brugeren
Scanner scan= new Scanner(System.in);
System.out.print("Indtast det totale antal sekunder: ");
int
totalSeconds, restSeconds;
totalSeconds
= restSeconds = scan.nextInt();
//Først erklæres og
instantieres nogle nyttige konstanter
//('final' integers)
final int
SECONDS_IN_A_MINUTE = 60;
final int
SECONDS_IN_A_HOUR
=
SECONDS_IN_A_MINUTE*60;
final int SECONDS_IN_24HOURS = SECONDS_IN_A_HOUR*24;
//Bemærk at der i
det følgende anvendes et nyttigt "pattern",
//hvori den samme division laves
to gange hvergang
//- som division og som modulus (rest)
//Dette pattern kan f.eks. også anvendes ved omregning fra
//gamle pund, schillings og pence
//Find hele antal døgn
//- og de overskydende sekunder ift de hele døgn
int
days = restSeconds / SECONDS_IN_24HOURS;
restSeconds
%= SECONDS_IN_24HOURS;
//Samme som restSeconds = restSeconds % SECONDS_IN_24HOURS;
//Find hele antal timer - og overskydende sekunder ift dette
int
hours = restSeconds /
SECONDS_IN_A_HOUR;
restSeconds %= SECONDS_IN_A_HOUR;
//Find hele antal minutter - og de overskydende sekunder
int
minutes = restSeconds /
SECONDS_IN_A_MINUTE;
restSeconds %= SECONDS_IN_A_MINUTE;
System.out.println(totalSeconds + " sekunder, svarer til " +
days + " doegn, " + hours + " timer, " + minutes + " minutter og "
+ restSeconds + " sekunder.");
}
}
import java.util.Scanner;
public class Opgave8a
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
final int MAX = 9;
final int MIN = 4;
//Password indlaeses
System.out.print("Skriv et password:
");
String password = scan.nextLine();
//Password checkes og resultat
udskrives
int plength = password.length();
if (plength > MIN && plength < MAX)
System.out.println("Passwordets laengde er korrekt");
else
{
System.out.println("Passwordets
laengde - " + plength + " 'chars' er ikke korrekt!");
System.out.println("-Skal vaere
stoerre end " + MIN + " og mindre end " + MAX);
}
}
}
//alternativ til ovenstående if saetning
/*
if (plength <= MIN)
System.out.println("Passwordets laengde er mindre eller lig "
+ MIN);
else
if (plength >= MAX)
System.out.println("Passwordets
laengde er stoerre eller lig "+ MAX);
else
System.out.println("Passwordets
laengde er korrekt");
*/
// Programmet finder de reelle rødder i andengradsligningen
// a*x*x + b*x + c = 0)
// Gunnar Johansen, 1995-09-28 og 2002-09-05
//Math klassen er en del af "java.lang" pakken, som altid automatisk er med
//- den skal derfor ikke "import'es"
//Udnyt Lewis & Loftus Keyboard pakken
import java.util.Scanner;
public class Opgave8b
{
public static void main(String[] args)
{
double a,b,c,d,x1,x2;
Scanner scan=new Scanner(System.in);
System.out.println("Løsning af andengradsligningen a*x*x + b*x + c");
System.out.print("a,b,c=");
a = scan.nextDouble();
b = scan.nextDouble();
c = scan.nextDouble();
// 2 løsninger
if (a != 0)
{
d = b*b-4*a*c;
if (d >= 0)
{
x1 = (-b + Math.sqrt(d))/2/a;
x2 = (-b - Math.sqrt(d))/2/a;
System.out.println("Løsning x1,x2= " + x1 + " og " + x2);
}
else // d < 0
System.out.println("Der er komplekse rødder");
}
else // a == 0
if (b != 0)
{
x1 = -c/b;
System.out.println("Løsning til B*x+C=0 er x=" + x1);
}
else // b == 0
if (c == 0)
System.out.println("Der er uendelig mange løsninger");
else // c !=0
System.out.println("Der er 0 løsninger");
}
}