© 1999-2003, Flemming Koch Jensen
Alle rettigheder forbeholdt
Selektion
Vejledende løsninger

 

1

A:

5 <= 5 && 5 != 8

true && true

B:

5 == 5 || 5 == 8 && 3 == 3

true || false && true

true || false

C:

5 / 8 > 3 / 5

0 > 0

D:

!( 5 != 8 - 3 ) == false

!( 5 != 5 ) == false

!false == false

true == false

E:

2 * 5 != 5 || 5 == 0

10 != 5 || 5 == 0

true || false

F:

! true || ! false

false || true

  De to sidste (E og F) er tautologier.
   
2
class Selektion_2 {
  public static void main( String[] argv ) {
    int x, y;

    x = 41;
    y = 67;

    if ( x + y > 100 )
      System.out.println( "Summen er større end hundrede" );
  }
}
   
3
class Selektion_3 {
  public static void main( String[] argv ) {
    int first, second;

    first = 5;
    second = 8;

    if ( first > second )
      System.out.println( first );
    else
      System.out.println( second );
  }
}
   
4
class Selektion_4 {
  public static void main( String[] argv ) {
    int first, second, third;

    first = 5;
    second = 8;
    third = 3;

    if ( first >= second && first >= third )
      System.out.println( first );
    else if ( second >= first && second >= third )
      System.out.println( second );
    else
      System.out.println( third );
  }
}
 

Ekstraopgave: Giv et eksempel på værdier for first, second og third, for hvilke dette program ikke ville virke, hvis der havde været anvendt > i stedet for >=

  Svaret finder du nederst på siden.
   
5
class Selektion_5a {
  public static void main( String[] argv ) {
    int x = 62;

         if (  0 <= x && x <=  9 )
      System.out.println( x + " tilhører intervallet [0:9]" );
    else if ( 10 <= x && x <= 19 )
      System.out.println( x + " tilhører intervallet [10:19]" );
    else if ( 20 <= x && x <= 29 )
      System.out.println( x + " tilhører intervallet [20:29]" );
    else if ( 30 <= x && x <= 39 )
      System.out.println( x + " tilhører intervallet [30:39]" );
    else if ( 40 <= x && x <= 49 )
      System.out.println( x + " tilhører intervallet [40:49]" );
    else if ( 50 <= x && x <= 59 )
      System.out.println( x + " tilhører intervallet [50:59]" );
    else if ( 60 <= x && x <= 69 )
      System.out.println( x + " tilhører intervallet [60:69]" );
    else if ( 70 <= x && x <= 79 )
      System.out.println( x + " tilhører intervallet [70:79]" );
    else if ( 80 <= x && x <= 89 )
      System.out.println( x + " tilhører intervallet [80:89]" );
    else
      System.out.println( x + " tilhører intervallet [90:99]" );
  }
}
 

Eller smartere (med idéen fra hint'et):

 
class Selektion_5b {
  public static void main( String[] argv ) {
    int x = 62;
    int tier = x/10;

    if ( tier > 0 )
      System.out.println( x + " tilhører [" + tier + "0:" + tier + "9]" );
    else
      System.out.println( x + " tilhører intervallet [0:9]" );
  }
}
   
6
class Selektion_6a {
  public static void main( String[] argv ) {
    int x, y, z;

    x = 5;
    y = 8;
    z = 3;

    if ( x >= y && x >= z )
      // x er størst (det er ikke x)
      if ( z <= y )
        // z er mindst (det er ikke z)
        System.out.println( y );
      else
        // y er mindst (det er ikke y)
        System.out.println( z );
    else if ( y >= x && y >= z )
      // y er størst (det er ikke y)
      if ( z <= x )
        // z er mindst (det er ikke z)
        System.out.println( x );
      else
        // x er mindst (det er ikke x)
        System.out.println( z );
    else
      // z er størst (det er ikke z)
      if ( y <= x )
        // y er mindst (det er ikke y)
        System.out.println( x );
      else
        // x er mindst (det er ikke x)
        System.out.println( y );
  }
}

Man kan dog formindske antallet af if-sætninger; hvis man til gengæld vil acceptere større boolske udtryk:

class Selektion_6b {
  public static void main( String[] argv ) {
    int x, y, z;

    x = 5;
    y = 8;
    z = 3;

    if ( x>=y && y>=z || z>=y && y>=x )
      System.out.println( y );
    else if ( y>=x && x>=z || z>=x && x>=y )
      System.out.println( x );
    else
      System.out.println( z );
  }
}
   
7
class Selektion_7 {
  public static void main( String[] argv ) {
    int x = 5;
    int y = 8;

    int dif = x - y;
    if ( dif < 0 )
      dif = -dif;

    if ( dif > 10 )
      System.out.println( "Forskellen er mere end ti" );
    else
      System.out.println( "Forskellen er ikke mere end ti" );
  }
}
   
8
class Selektion_8 {
  public static void main( String[] argv ) {
    int øjne = 2;

    switch ( øjne ) {
      case 1: System.out.println( "Det er en etter" );
              break;
      case 2: System.out.println( "Det er en toer" );
              break;
      case 3: System.out.println( "Det er en treer" );
              break;
      case 4: System.out.println( "Det er en firer" );
              break;
      case 5: System.out.println( "Det er en femmer" );
              break;
      case 6: System.out.println( "Det er en sekser" );
              break;
      default: System.out.println( "Forkert antal øjne" );
               break;
    }
  }
}
 

Svaret på ekstraopgaven i opgave 4:

Når first==second og first>third, vil den fejlagtigt udskrive third.