1
|
int sum=0;
int tal=-10;
while ( tal <= 10 ) {
sum += tal;
tal++;
}
System.out.println( "Sum: " + sum ); |
int sum=0;
int tal=10;
while ( tal >= -10 ) {
sum += tal;
tal--;
}
System.out.println( "Sum: " + sum ); |
int sum=0;
for ( int tal=-10; tal<=10; tal++ )
sum += tal;
System.out.println( "Sum: " + sum ); |
int sum=0;
for ( int tal=10; tal>=-10; tal-- )
sum += tal;
System.out.println( "Sum: " + sum ); |
|
2
|
int tal=21;
while ( tal>=10 ) {
System.out.println( tal );
tal -= 2;
} |
for ( int tal=21; tal>=10; tal-=2 )
System.out.println( tal ); |
for ( int tal=11; tal<=21; tal+=2 )
System.out.println( tal ); |
Her er 10 ændret til 11 som startværdi, for at det passer med at hveranden
er ulige. Hvis man i stedet ønsker en mere dynamisk løsning kan man
vælge at bruge:
int minimum=10;
for ( int tal = minimum*( minimum/2 )+1; ...
... |
Der giver det nærmeste ulige heltal, der er større end eller lig minimum.
Bemærk, at der er tale om heltalsdivision.
|
3
|
for ( int tal=8; tal<=8*10; tal+=8 )
System.out.println( tal ); |
|
4
|
int fakultet=1;
int n=5;
for ( int tal=n; tal>1; tal-- )
fakultet *= tal;
System.out.println( fakultet ); |
|
5
|
for ( int tal=0; tal<=10; tal++ )
if ( tal % 2 == 0 )
System.out.println( tal + " er lige" );
else
System.out.println( tal + " er ulige" ); |
|
6
|
int sum=0;
for ( int tal=1; tal<=20; tal+=2 )
sum += tal;
System.out.println( sum ); |
|
7
|
int minimum=3;
int maximum=16;
int antalLige=0;
int antalUlige=0;
for ( int tal=minimum; tal<=maximum; tal++ )
if ( tal % 2 == 0 )
antalLige++;
else
antalUlige++;
System.out.println( "Der er " + antalUlige + " ulige og " +
antalLige + " lige tal i intervallet [" +
minimum + ":" + maximum + "]" ); |
|
8
|
int minimum=3;
int maximum=16;
int sum=0;
int antal=0;
for ( int tal=minimum; tal<=maximum; tal++ )
if ( tal % 2 == 0 ) {
sum += tal;
antal++;
}
int gennemsnit = sum/antal;
System.out.println( "Gennemsnit: " + gennemsnit ); |
|
9
|
int x=10;
int før1=1;
int før2=1;
int næste=før2;
for ( int nr=3; nr<=x; nr++ ) {
næste = før1 + før2;
før1 = før2;
før2 = næste;
}
System.out.println( "Det " + x + "'te fibonacci-tal er " + næste ); |
At programmet virker selv om for-løkken ikke kommer til at køre (hvis
x er 1 eller 2), skyldes at fibonacci-tallenes to startværdier er ens.
Hvis det ikke var tilfældet, var det mere kompliceret at løse opgaven.
|
10
|
int x=-10;
int før1=1;
int før2=1;
int næste;
for ( int nr=0; nr>=x; nr-- ) {
næste = før1 - før2;
før1 = før2;
før2 = næste;
}
System.out.println( x + "! er " + før2 ); |
I den anden løsning, hvor vi udnytter observationen, er det med blåt
markeret hvilke dele af koden, der er direkte kopieret fra løsningen
af opgave 9:
int x=-10;
x = -x;
int før1=1;
int før2=1;
int næste;
for ( int nr=3; nr<=x; nr++ ) {
næste = før1 + før2;
før1 = før2;
før2 = næste;
}
if ( x % 2 == 0 )
før2 = -før2;
System.out.println( x + "! er " + før2 ); |
|
11
|
int kandidat=87;
boolean erPrimtal=true; // indtil det modsatte er bevist
for ( int divisor=2; divisor<kandidat; divisor++ )
if ( kandidat % divisor == 0 ) {
erPrimtal = false;
break;
}
if ( erPrimtal )
System.out.println( kandidat + " er et primtal" );
else
System.out.println( kandidat + " er ikke et primtal" ); |
|
12
|
for ( int toPotens=2; toPotens<=1024; toPotens*=2 )
System.out.println( toPotens ); |
|
13
|
for ( int tal1=1; tal1<=10; tal1++ )
for ( int tal2=1; tal2<=10; tal2++ )
System.out.println( tal1 + " * " + tal2 + " = " + tal1*tal2 ); |
|
14
|
System.out.println( Ulige[0] ); |
|
15
|
System.out.println( PosNeg.length ); |
|
16
|
for ( int index=0; index<5; index++ )
System.out.print( Tabel[index] + " " );
System.out.println(); |
|
17
|
for ( int index=0; index<T1.length; index++ )
System.out.print( T1[index] + " " );
System.out.println(); |
|
18
|
System.out.println( T2[T2.length/2] );
System.out.println( T2[T2.length-1] ); |
|
19
|
int sum=0;
for ( int index=0; index<PosNeg.length; index++ )
sum += PosNeg[index];
System.out.println( "Sum: " + sum ); |
|
20
|
for ( int index=0; index<PosNeg.length; index++ )
if ( PosNeg[index] < 0 )
System.out.print( PosNeg[index] + " " );
System.out.println(); |
|
21
|
for ( int index=T3.length-1; index>=0; index-- )
System.out.print( T3[index] + " " );
System.out.println(); |
|
22
|
for ( int indexT4=0; indexT4<3; indexT4++ )
T4[indexT4] = T5[ T5.length - 3 + indexT4 ];
for ( int index=0; index<T4.length; index++ )
System.out.print( T4[index] + " " );
System.out.println(); |
|
23
|
for ( int index=0; index<PosNeg.length; index++ )
PosNeg[index] = -PosNeg[index];
for ( int index=0; index<4; index++ )
System.out.print( PosNeg[index] + " " );
System.out.println();
for ( int index=PosNeg.length-4; index<PosNeg.length; index++ )
System.out.print( PosNeg[index] + " " );
System.out.println(); |
|
24
|
for ( int index=0; index<5; index++ ) {
System.out.print( Lige[index] + " " );
System.out.print( Ulige[index] + " " );
}
System.out.println(); |
|
25
|
int gem;
int andetIndex;
for ( int index=0; index<T3.length/2; index++ ) {
andetIndex = T3.length - 1 - index;
gem = T3[index];
T3[index] = T3[andetIndex];
T3[andetIndex] = gem;
}
for ( int index=0; index<T3.length; index++ )
System.out.print( T3[index] + " " );
System.out.println(); |
|
26
|
int antal7=0;
for ( int index=0; index<Tabel.length; index++ )
if ( Tabel[index] == 7 )
antal7++;
System.out.println( "Antal 7'ere: " + antal7 ); |
|
27
|
int sum=0;
for ( int index=0; index<PosNeg.length; index++ )
if ( PosNeg[index]%2==1 && PosNeg[index]>0 )
sum += PosNeg[index];
System.out.println( "Sum: " + sum ); |
|
28
|
int størst=T1[0];
for ( int index=1; index<T1.length; index++ )
if ( T1[index] > størst )
størst = T1[index];
System.out.println( "Største tal: " + størst ); |
|
29
|
int[] statistik = new int[10];
for ( int index=0; index<Tabel.length; index++ )
statistik[ Tabel[index] ]++;
System.out.println( "Værdi Antal" );
for ( int index=0; index<statistik.length; index++ )
System.out.println( " " + index + " " + statistik[index] );
System.out.println(); |
|
30
|
do/while-sætning:
// PRE: PosNeg.length > 0
int index=0;
do {
if ( PosNeg[index] < 0 ) {
System.out.println( PosNeg[index] );
break;
}
index++;
} while ( index<PosNeg.length ); |
Eller:
// PRE: PosNeg.length > 0
int index=-1;
do {
index++;
} while ( index<PosNeg.length && PosNeg[index]>=0 );
if ( index < PosNeg.length )
System.out.println( PosNeg[index] ); |
for-sætning:
for ( int index=0; index<PosNeg.length; index++ )
if ( PosNeg[index] < 0 ) {
System.out.println( PosNeg[index] );
break;
} |
while-sætning:
int index=0;
while ( index < PosNeg.length ) {
if ( PosNeg[index] < 0 ) {
System.out.println( PosNeg[index] );
break;
}
index++;
} |
Eller
// PRE: PosNeg.length > 0
int index=0;
while ( index<PosNeg.length && PosNeg[index]>=0 )
index++;
if ( index < PosNeg.length )
System.out.println( PosNeg[index] ); |
|
31
|
// PRE: T5.length > 1
int mindst;
int næstMindst;
if ( T5[0] < T5[1] ) {
mindst = T5[0];
næstMindst = T5[1];
} else {
mindst = T5[1];
næstMindst = T5[0];
}
for ( int index=2; index<T5.length; index++ )
if ( T5[index] < mindst ) {
næstMindst = mindst;
mindst = T5[index];
} else if ( T5[index] < næstMindst )
næstMindst = T5[index];
System.out.println( "De to mindste tal er: " + mindst + " og " + næstMindst ); |
|
32
|
for ( int index=0; index<T1.length-1; index++ )
System.out.print( "(" + T1[index] + "," + T1[index+1] + ")" );
System.out.println();
|
|
33
|
for ( int index=0; index<T1.length-1; index++ )
if ( T1[index] > T1[index+1] ) {
T1[index ]--;
T1[index+1]++;
} else if ( T1[index] < T1[index+1] ) {
T1[index ]++;
T1[index+1]--;
} |
|
34
|
Det er med blåt markeret hvilke dele af koden, der er direkte kopieret
fra besvarelsen af opgave 33:
int antalGange=3;
for ( int gang=1; gang<=antalGange; gang++ )
for ( int index=0; index<T1.length-1; index++ )
if ( T1[index] > T1[index+1] ) {
T1[index ]--;
T1[index+1]++;
} else if ( T1[index] < T1[index+1] ) {
T1[index ]++;
T1[index+1]--;
} |
Ved mange gennemløb begynder elementerne i arrayet at udlignes.
|
35
|
int antalGange=3;
for ( int gang=1; gang<=antalGange; gang++ )
for ( int index=0; index<T1.length-1; index++ )
if ( T1[index] != T1[index+1] )
T1[index] = T1[index+1] = ( T1[index] + T1[index+1] ) / 2; |
Ved mange gennemløb begynder elementerne også at udlignes, men
det sker hurtigere.
|
36
|
int antalGange=3;
for ( int gang=1; gang<=antalGange; gang++ )
for ( int index=0; index<T1.length-1; index++ )
if ( T1[index] > T1[index+1] ) {
int gem = T1[index];
T1[index] = T1[index+1];
T1[index+1] =gem;
} |
Ved tilstrækkelig mange gennemløb bliver elementerne i arrayet sorteret
i ikke-aftagende orden.
|
37
|
int antalGange=3;
int nSwap, nSammenligninger=0;
int usorterede=T1.length-1; // alle elementer hertil er usorterede
do {
nSwap = 0;
for ( int index=0; index<usorterede; index++ ) {
nSammenligninger++;
if ( T1[index] > T1[index+1] ) {
int gem = T1[index];
T1[index] = T1[index+1];
T1[index+1] =gem;
nSwap++;
}
}
usorterede--; // den sidste er nu garanteret på plads
} while ( nSwap>0 && usorterede>0 );
System.out.println( "Antal sammenligninger: " + nSammenligninger ); |
|
38
| For at følgende løsning skal kunne virke, er det nødvendigt
at placere følgende linie som første linie i kildeteksten
(dvs. før linien med class...).
|
|
|
|
int max=10000000;
boolean[] primTal = new boolean[max+1];
int antal=0;
System.out.println( new Date() );
primTal[0] = false;
primTal[1] = false;
for ( int index=2; index<primTal.length; index++ )
primTal[index] = true;
for ( int primIndex=0; primIndex<primTal.length; primIndex++ )
if ( primTal[primIndex] ) {
antal++;
for ( int index=2*primIndex; index<primTal.length; index+=primIndex )
primTal[index] = false;
}
System.out.println( new Date() );
System.out.println( antal + " primtal" );
//int n=0;
//for ( int index=0; index<primTal.length; index++ ) {
// if ( primTal[index] ) {
// System.out.print( index + " " );
// n++;
// if ( n == 10 ) {
// System.out.println();
// n = 0;
// }
// }
//}
//System.out.println();
|
...:40:00 CEST 1999
...:40:05 CEST 1999
664579 primtal |
Med 5 sekunder for at finde over ½ million primtal er tiden ikke noget
problem, men pladsen bliver det.
|
39
|
int[] t = { 3, 8, 9, 4, 3, 6, 5, 4, 1, 7,
2, 8, 7, 6, 9, 4, 5, 2, 6, 1,
0, 4, 9, 7, 8, 6, 2, 4, 9, 2 };
int[] bucket = new int[10];
for ( int index=0; index<t.length; index++ )
bucket[ t[index] ]++;
int indexT=0;
int indexBucket=0;
while ( indexBucket < bucket.length ) {
while ( bucket[indexBucket] > 0 ) {
t[indexT] = indexBucket;
indexT++;
bucket[indexBucket]--;
}
indexBucket++;
}
for ( int index=0; index<t.length; index++ )
System.out.print( t[index] + " " );
System.out.println();
|
|
40
|
int[][] lilleTabel = new int[1+10][1+10];
for ( int i=1; i<lilleTabel.length; i++ )
for ( int j=1; j<lilleTabel[i].length; j++ )
lilleTabel[i][j] = i * j;
for ( int i=1; i<lilleTabel.length; i++ ) {
for ( int j=1; j<lilleTabel[i].length; j++ )
System.out.print( lilleTabel[i][j] + " " );
System.out.println();
}
|
|
41
|
int[][] bræt = { { 1, 2, 1 },
{ 2, 1, 0 },
{ 0, 0, 2 } };
for ( int række=0; række<bræt.length; række++ ) {
for ( int kolonne=0; kolonne<bræt[række].length; kolonne++ )
switch ( bræt[række][kolonne] ) {
case 0: System.out.print( " " );
break;
case 1: System.out.print( "X" );
break;
case 2: System.out.print( "O" );
break;
default:System.out.print( "?" );
}
System.out.println();
} |
|
42
|
int[][] matrix = { { 2, 0, 0, 0 },
{ 0, 3, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0,-2 } };
boolean diagonal=true;
for ( int række=0; række<matrix.length; række++ ) {
for ( int kolonne=0; kolonne<matrix[række].length; kolonne++ )
if ( række!=kolonne && matrix[række][kolonne]!=0 ) {
diagonal = false;
break;
}
if ( !diagonal )
break;
}
if ( diagonal )
System.out.println( "Det er en diagonal-matrice" );
else
System.out.println( "Det er ikke en diagonal-matrice" );
|
|
43
|
boolean[][] tabel = { { false, true, true, true, false, false, false, false },
{ false, true, true, false, false, false, false, false },
{ false, true, false, false, true, false, false, false },
{ false, false, false, true, true, true, false, false },
{ false, false, false, false, true, true, false, false },
{ false, true, true, false, false, false, true, false },
{ false, false, true, false, false, true, false, false },
{ false, false, true, false, false, false, false, false } };
for ( int række=1; række<tabel.length-1; række++ )
for ( int kolonne=1; kolonne<tabel[række].length-1; kolonne++ )
if ( tabel[række][kolonne] && // feltet selv
tabel[række-1][kolonne] && // til venstre
tabel[række+1][kolonne] && // til højre
tabel[række][kolonne-1] && // op
tabel[række][kolonne+1] ) // ned
System.out.println( "[" + række + "][" + kolonne + "]" ); |
|
44
|
int[][] kupon = { { 0, 2, 1, 2, 0, 0, 1, 2, 1, 2, 0, 2, 0 },
{ 1, 1, 2, 1, 2, 2, 1, 0, 1, 0, 0, 2, 2 },
{ 2, 1, 0, 0, 1, 0, 1, 1, 1, 2, 1, 4, 0 } };
for ( int kamp=0; kamp<kupon[0].length; kamp++ ) {
for ( int række=0; række<kupon.length; række++ ) {
if ( række==0 ) {
int kampNo = kamp + 1;
if ( kampNo < 10 )
System.out.print( " " + kampNo );
else
System.out.print( "" + kampNo );
System.out.print( "|" );
}
switch ( kupon[række][kamp] ) {
case 0: System.out.print( " X " );
break;
case 1: System.out.print( "1 " );
break;
case 2: System.out.print( " 2" );
break;
default:System.out.print( "???" );
}
System.out.print( "|" );
}
System.out.println();
}
|
|
| |