Vejledende løsninger til opgaver i Java programmering.

Oprettet 19. juni 1999

Opgave 1

Opgave 2

Opgave 3

Opgave 4

Opgave 5

Opgave 6

Opgave 7

Opgave 8

Opgave 9

Opgave 10

Opgave 11

Opgave 12

Opgave 13

Opgave 1.

Udarbejd et program, som kan udskrive alle ulige tal mellem 0 og 40.

public class UligeTal
{
/* Datanom Basisfag Opgave 1. Udskriver alle ulige tal mellem 1 og 40
* Af Lars Hansen 17/4 - 1999
*/
static final int start = 1; // startværdi
static final int slut =40; // slutværdi

public static void main(String[] args)
{
// starter med titel
System.out.println( );
System.out.println("Ulige tal mellem 1 og 40");
System.out.println("========================");
System.out.println( );
for (int tal = start;tal < slut;tal++) // undersøger alle tal
{
int rest = tal % 2; // rest ved division med 2
if (rest != 0) System.out.println(tal ); // udskriver tal
};
}
}

class UligeTal {

/* Et program der udskriver ulige tal fra 1 til *

* til 39 Lavet d.25.4.99 af Kai Kirkeby Revideret

* til ulige tal fra ligetal class d.4.5.99 */

public static void main(String[] args){

System.out.println();

System.out.println(" Et program der udskriver ulige tal");

System.out.println(" =================================");

System.out.println();

for (int tal = 1; tal<=40; tal +=2){

System.out.println(" Her er en række med ulige tal " + tal);

}

}

}

 


Opgave 2.

Udarbejd et program, som på grundlag af indtastet købsbeløb og betalingsbeløb kan beregne, hvor stort returbeløbet skal være. Af hensyn til brugervenlighed skal indtastninger og udskrifter ledsages af passende ledetekster.

Opgave 3.

Udvid programmet fra opgave 2, således at programmet kan beregne, hvordan returbeløbet kan opdeles i sedler og mønter. Man går ud fra, at kunden ønsker så store sedler og mønter som muligt.

import java.io.*;
import javagently.*;

public class ReturBelob
{
/* Datanom Basisfag Opgave 2 og 3. Udregner på grundlag af indtastet
* købsbeløb og betalingsbeløb, returbeløbet i sedler og mønter.
* Af Lars Hansen 17/4 - 1999.
*/

public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);

int kr1000= 0;
int kr500 = 0;
int kr200 = 0;
int kr100 = 0;
int kr50 = 0;
int kr20 = 0;
int kr10 = 0;
int kr5 = 0;
int kr2 = 0;
int kr1 = 0;
int Ore50 = 0;
int Ore25 = 0;

// starter med titel
System.out.println( );
System.out.println("RETUR BELØB UDREGNING");
System.out.println("=====================");

// Indtastning af købsbeløb
Text.prompt("Indtast købsbeløb. >");
double kobBelob = Text.readDouble(in);

// Indtastning af betalingsbeløb
Text.prompt("Indtast betalingsbeløb. >");
double betaBelob = Text.readDouble(in);

// Laver grundudregningen
double returBelob = betaBelob - kobBelob;
int returOre = (int)(returBelob * 100); // til øre
if (returOre > 100000)
{ kr1000 = returOre / 100000; returOre = returOre % 100000; }

if (returOre > 50000) { kr500 = returOre / 50000; returOre = returOre % 50000; }

if (returOre > 20000) { kr200 = returOre / 20000; returOre = returOre % 20000; }

if (returOre > 10000) { kr100 = returOre / 10000; returOre = returOre % 10000; }

if (returOre > 5000) { kr50 = returOre / 5000; returOre = returOre % 5000; }

if (returOre > 2000) { kr20 = returOre / 2000; returOre = returOre % 2000; }

if (returOre > 1000) { kr10 = returOre / 1000; returOre = returOre % 1000; }

if (returOre > 500) { kr5 = returOre / 500; returOre = returOre % 500; }

if (returOre > 200) { kr2 = returOre / 200; returOre = returOre % 200; }

if (returOre > 87 & returOre < 112) { kr1 = 1; returOre -= 100; }

if (returOre > 37 & returOre < 88) { Ore50 = 1; returOre -= 50; }

if (returOre > 12) Ore25 = 1;

// Udskriver resultatet
System.out.println("Returbeløbet er: "+Text.writeDouble(returBelob, 5, 2));
System.out.println( );
if (kr1000 != 0) System.out.println(kr1000 +" :\t 1000 kr seddel(er)");
if (kr500 != 0) System.out.println(kr500 +" :\t 500 kr seddel(er)");
if (kr200 != 0) System.out.println(kr200 +" :\t 200 kr seddel(er)");
if (kr100 != 0) System.out.println(kr100 +" :\t 100 kr seddel(er)");
if (kr50 != 0) System.out.println(kr50 +" :\t 50 kr seddel(er)");
if (kr20 != 0) System.out.println(kr20 +" :\t 20 krone(r)");
if (kr10 != 0) System.out.println(kr10 +" :\t 10 krone(r)");
if (kr5 != 0) System.out.println(kr5 +" :\t 5 krone(r)");
if (kr2 != 0) System.out.println(kr2 +" :\t 2 krone(r)");
if (kr1 != 0) System.out.println(kr1 +" :\t 1 krone(r)");
if (Ore50 != 0) System.out.println(Ore50 +" :\t 50 øre");
if (Ore25 != 0) System.out.println(Ore25 +" :\t 25 øre");
}
}

// Opgave 2 og 3 //

// Ib Vang-Pedersen

// Progammet udregner retubeløb og det opdeles i så store sedler og mønter

import java.io.*;

import javagently.*;

class returBel {

public static void main(String[] args)throws IOException {

BufferedReader in=Text.open (System.in);

System.out.println("Beregning af returbeløb");

Text.prompt("Indtast købsbeløb");

double købsBeløb=Text.readDouble(in);

Text.prompt("Indtastbetalingsbeløb");

double betalingsBeløb=Text.readDouble(in);

double returBeløb=betalingsBeløb-købsBeløb;

omRegner(returBeløb);

System.out.println("Returbeløb "+returBeløb);

pengeRetur(returBeløb);

}

//*******************************Omregning i øre *****************

static void omRegner(double r){

double rest;

double øreBeløb=r%1;

double helBeløb=r-øreBeløb;

if (øreBeløb<.125) rest=0;

else if(øreBeløb<.375) rest=.25;

else if(øreBeløb<.625) rest=.5;

else if (øreBeløb<.875) rest=.75;

else rest = 1;

double returBeløb=rest+helBeløb;

}

//******************* Returpenge i største penge **************

static void pengeRetur(double p){

long heltal=Math.round(p*100);

long Tusind,Femhund,Hundre,Femti,Tyve,Ti,Fem,To,En,Øre50,Øre25;

for ( int count=0;;count++){

if (heltal==0) break;

else if (heltal >=100000) {

Tusind=heltal/100000;

System.out.println(Tusind+" 1000 kr seddel");

heltal=heltal%(Tusind*100000);

}

else if (heltal>=50000) {

Femhund=heltal/50000;

heltal=heltal%(Femhund*50000);

System.out.println(Femhund+" 500 kr seddel");

}

else if (heltal>=10000) {

Hundre=heltal/10000;

heltal=heltal%(Hundre*10000);

System.out.println(Hundre+" 100 kr seddel");

}

else if(heltal>=5000) {

Femti=heltal/5000;

heltal=heltal%(Femti*5000);

System.out.println(Femti+" 50 kr seddel");

}

else if(heltal>=2000) {

Tyve=heltal/2000;

heltal=heltal%(Tyve*2000);

System.out.println(Tyve+" 20 kr");

}

else if(heltal>=1000) {

Ti=heltal/1000;

heltal=heltal%(Ti*1000);

System.out.println(Ti+" 10 kr");

}

else if(heltal>=500) {

Fem=heltal/500;

heltal=heltal%(Fem*500);

System.out.println(Fem+" 5 kr ");

}

else if(heltal>=200) {

To=heltal/200;

heltal=heltal%(To*200);

System.out.println(To+" 2 kr ");

}

else if(heltal>=100) {

En=heltal/100;

heltal=heltal%(En*100);

System.out.println(En+" 1 kr ");

}

else if(heltal>=50){

Øre50=heltal/50;

heltal=heltal%(Øre50*50);

System.out.println(Øre50+" 50 Øre");

}

else if(heltal>=25){

Øre25=heltal/25;

heltal=heltal%(Øre25*25);

System.out.println(Øre25+" 25 Øre");

}

}

}

}


Opgave 4.

Udarbejd et program, som på grundlag af et beløb inklusive moms kan beregne, hvor stort momsbeløbet er, og hvor stort beløbet eksklusive moms er. Beløbet indtastes via tastaturet, og resultatet udskrives på skærmen ledsaget af passende ledetekster. Momssatsen er 25%.

//Opgave 4

//Ib Vang-Pedersen

// Bergner beløb ex moms og momsen

import java.io.*;

import javagently.*;

class momsBeregning {

static final double moms=0.25;

public static void main(String[] args)throws IOException{

double momsBeløb,Beløb,beløbExmoms;

BufferedReader in=Text.open(System.in);

Text.prompt(" Indtast beløbet ");

Beløb=Text.readDouble(in);

beløbExmoms=Beløb/(1+moms);

momsBeløb=Beløb-beløbExmoms;

System.out.println("Beløb uden moms "+beløbExmoms);

System.out.println("Momsen udgør "+momsBeløb);

}

}

Opgave 5.

Udarbejd et program, som kan udskrive den lille tabel på skærmen således:

1

2

3

4

5

6

7

8

9

10

2

4

6

8

10

12

14

16

18

20

osv.

//Opgave 5

//Ib Vang-Pedersen

//Udskriver en lille tabel

class lilleTabel{

public static void main(String[] args)

{

for (int tal=1;tal<11;tal++)

{

for(int tal1=1;tal1<11;tal1++)

System.out.print(tal*tal1+" ");

System.out.println();

System.out.println();

}

}

}

 

Opgave 6.

Udarbejd et program, som kan bruges til opsummering af tal.

Der skal kunne indtastes et vilkårligt antal positive heltal, som adderes. Opsummeringen afsluttes, når der indtastes et negativt tal, som ikke må tælles med i summen. Herefter udskrives summen, og programmet stoppes.

import java.io.*;
import javagently.*;

public class addere
{
/* Datanom Basisfag Opgave 6. Sammenlægger tal på grundlag af,
* indtastede tal. Et negativt tal standser indlæsningen af tal.
* Af Lars Hansen 2/5 - 1999.
*/

static double resultat;

public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);

// starter med titel
System.out.println( );
System.out.println("SAMMENLÆGNINGS PROGRAM");
System.out.println("======================");
System.out.println("\nAddere indtastede tal, negativt tal standser indlæsningen");


// Indtastning af tal
for (int n = 1;;n++)
{
Text.prompt("Indtast "+n+". tal >");
double tal = Text.readDouble(in);
if (tal < 0) break;
resultat += tal;
}
System.out.println("Resultatet er: "+Text.writeDouble(resultat, 3, 2));
}
}

// opgave6

// Ib Vang-Pedersen

//Opsummering af positiv heltal

import java.io.*;

import javagently.*;

class opsummering {

public static void main(String[]args)throws IOException{

int Tæller,Opsum;

Opsum=0;

BufferedReader in=Text.open(System.in);

for(int count=0;;count++){

Text.prompt("Indtast et tal");

Tæller=Text.readInt(in);

if (Tæller<0) break;

Opsum+=Tæller;

}

System.out.println("Totalsummen er "+Opsum);

}

}


Opgave 7.

Udarbejd et program, som kan bruges ved beregningen af gennemsnitshøjden for eleverne i klassen. De enkelte elevers højde indlæses via tastaturet. Når alle højder er indlæst, angives dette overfor programmet ved indtastning af tallet nul. Herefter udskrives gennemsnitshøjden på skærmen.

import java.io.*;
import javagently.*;

public class gHojde
{
/* Datanom Basisfag Opgave 7. Beregner gennemsnitshøjden på elever
* i en klasse. En højde på 0 standser indlæsningen af højder.
* Af Lars Hansen 2/5 - 1999.
*/

static double gennemsnitsH, samletH;
static int antalElever;

public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);

// starter med titel
System.out.println( );
System.out.println("GENNEMSNITS HØJDE");
System.out.println("=================");
System.out.println("\nUdregner gennemsnitshøjden på elever i klassen,"+
"\nhøjden 0 standser indlæsningen af højder. ");


// indlæsning og sammenlægning af højder
for (int n = 1;;n++)
{
Text.prompt("Indtast "+n+". højde(cm)>");
double hojde = Text.readDouble(in);
if (hojde <= 0) break;
samletH += hojde;
antalElever = n;
}

// udregner gennemsnitshøjden
gennemsnitsH = samletH / antalElever;

// udskriver gennensnitshøjden
System.out.println("Gennemsnitshøjden er: "+Text.writeDouble(gennemsnitsH, 3, 1)+" cm.");
}
}

//Opgave 7

//Ib Vang-Pedersen

//Gennemsnitshøjden for en klasse

import java.io.*;

import javagently.*;

class gennemsnit

{

public static void main(String[] args) throws IOException

{

double Højde,totalHøjde,gnSnit;

totalHøjde=0;

gnSnit=0;

BufferedReader in=Text.open(System.in);

for( int count=1;;count++)

{

Text.prompt("Indtast højde");

Højde=Text.readDouble(in);

if(Højde==0) break;

totalHøjde+=Højde;

gnSnit=totalHøjde/count;

}

System.out.println("Gennemsnitshøjden i klassen er "+Text.writeDouble(gnSnit,1,2));

}

}


Opgave 8.

Udarbejd et program, som kan indlæse tre tal via tastaturet, og som derefter kan finde ud af, hvilket af de tre tal der er det største. Resultatet udskrives på skærmen.

import java.io.*;
import javagently.*;

public class storst
{
/* Datanom Basisfag Opgave 8. Finder det største tal ud af 3
* tal der indtastes.
* Af Lars Hansen 2/5 - 1999.
*/


public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);

double storst;

// starter med titel
System.out.println( );
System.out.println("FINDER DET STØRSTE TAL");
System.out.println("======================");
System.out.println("Indtast 3 tal og det største tal udskrives");


// indlæsning af tal

Text.prompt("Indtast første tal>");
double tal1 = Text.readDouble(in);

Text.prompt("Indtast andet tal>");
double tal2 = Text.readDouble(in);

if (tal1 > tal2)
storst = tal1;
else
storst = tal2;

Text.prompt("Indtast tredje tal>");
double tal3 = Text.readDouble(in);

if (storst < tal3)
storst = tal3;


// udskriver det største tal
System.out.println("Det største tal er: "+Text.writeDouble(storst, 1, 2));
}
}

// Opgave 8

// Ib Vang-Pedersen

//Indlæser tre tal og finder det største

import java.io.*;

import javagently.*;

class st{

public static void main (String[] args) throws IOException {

double talEt,talTo,talTre;

BufferedReader in=Text.open(System.in);

Text.prompt("Indtast tal 1 ");

talEt=Text.readDouble(in);

Text.prompt("Indtast tal 2 ");

talTo=Text.readDouble(in);

Text.prompt("Indtast tal 3 ");

talTre=Text.readDouble(in);

beregner(talEt,talTo,talTre);

}

static void beregner(double Et,double To,double Tre){

for (int count=0;count<2;count++){

if (To>Et)

Et=To;

else if (Tre>Et)

Et=Tre;

}

System.out.println("Største tal "+Et);

}

}


Opgave 9.

Udarbejd et program, der kan finde ud af, hvilket af et vilkårligt antal indtastede positive heltal, der er det største. Det største tal udskrives, når tallet nul er indlæst. Tallet nul bruges altså som stopværdi i programmet.

// Opgave 9a

// Ib Vang-Pedersen

// Find Det største positiv heltal

import java.io.*;

import javagently.*;

class talSt{

public static void main (String[] args) throws IOException {

int Tal,Størst;

BufferedReader in=Text.open(System.in);

Størst=0;

for (int tæller=0;tæller<1;tæller++){

Text.prompt("Indtast tal 1 ");

Størst=Text.readInt(in);

if (Størst==0) break;

else

for(int count=2;;count++){

Text.prompt("Indtast tal "+count+" ");

Tal=Text.readInt(in);

if (Tal==0) break;

else if (Tal>Størst)

Størst=Tal;

}

}

System.out.println("Største tal "+Størst);

}

}

//Opgave 9b

//Ib Vang-Pedersen

// Anden løsning af opgave9

import java.io.*;

import javagently.*;

class talSt

{

public static void main(String[] args)throws IOExption

{

BufferedReader in=text.open(System.in);

int Tal,talStørst;

Text.prompt("Indtast et tal ");

Tal=Text.readInt(in);

talStørst=Tal;

while(Tal!=0)

{

Text.prompt("Indtast et tal");

Tal=Text.readInt(in);

if (Tal>talStørst)

talStørst=Tal;

}

System.out.println("Det største tal der er indtastet er "?talStørst);

}

}


import java.io.*;
import javagently.*;

public class storstInt
{
/* Datanom Basisfag Opgave 9. Finder det største tal ud af et
* ukendt antal heltal der indtastes.
* Af Lars Hansen 3/5 - 1999.
*/


public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);

int storst;

// starter med titel
System.out.println( );
System.out.println("FINDER DET STØRSTE TAL");
System.out.println("======================");
System.out.println("Indtast nogle heltal og det største tal udskrives (0 standser indlæsning)");


// indlæsning af tal
Text.prompt("Indtast 1. tal>");
int tal = Text.readInt(in);
storst = tal; // sætter det første tal til at være størst
int n=2;
while (tal!=0)
{
Text.prompt("Indtast "+n+". tal>");
tal = Text.readInt(in);
n++;
if (storst < tal) storst = tal; // kontrolere tal mod størst
}

// udskriver det største tal
System.out.println("Det største tal er: " + storst);
}
}



FINDER DET STØRSTE TAL
======================
Indtast nogle heltal og det største tal udskrives (0 standser indlæsning)
Indtast 1. tal> 56
Indtast 2. tal> -98
Indtast 3. tal> 32
Indtast 4. tal> 32
Indtast 5. tal> 0
Det største tal er: 56


Opgave 10.

Udarbejd et program, som kan bruges, når man skal finde ud af, hvor meget porto, der skal sættes på et brev. Som inddata til programmet indtastes via tastaturet brevets vægt i gram samt en områdekode (1 til 6), hvorefter programmet skal kunne udskrive portobeløbet i henhold til nedenstående tabel:

Øvrige

Vægt højst

Danmark

Færøerne

Grønland

Norden

Europa

Udland

 

(1)

(2)

(3)

(4)

(5)

(6)

20 g

3,75

4,00

4,00

4,00

4,00

5,25

50 g

5,00

5,25

5,25

6,00

9,75

12,25

100 g

5,00

5,50

8,00

6,50

13,00

18,00

250 g

8,75

9,50

18,00

11,00

22,00

36,00

500 g

15,00

16,00

32,00

19,00

40,00

60,00

1000 g

19,00

21,00

52,00

47,00

70,00

110,00

2000 g

-

40,00

100,00

90,00

110,00

185,00

Hvis der indtastes en vægt, som er for stor, udskrives teksten "Brevet er for tungt". Programmet stoppes ved indtastning af områdekode 0.

import java.io.*;
import javagently.*;

public class PortoBeregn
{
/* Datanom Basisfag Opgave 10. Udregner hvor meget porto der skal sættes
* på et brev, brevets vægt og destination indtastes via tastaturet.
* Af Lars Hansen 9/5 - 1999.
*/

static void beregn (int k, int v) // metoden beregn
{
double danm []= {3.75, 5.00, 5.00, 8.75, 15.00, 19.00,19.00 };
double faer []= {4.00, 5.25, 5.50, 9.50, 16.00, 21.00, 40.00};
double gron []= {4.00, 5.25, 8.00, 18.00, 32.00, 52.00, 100.00};
double nord []= {4.00, 6.00, 6.50, 11.00, 19.00, 47.00, 90.00};
double euro []= {4.00, 9.75, 13.00, 22.00, 40.00, 70.00, 110.00};
double udla []= {5.25, 12.25, 18.00, 36.00, 60.00, 110.00, 185.00};
double kr = 0;
int vk = 0;
if (v > 20) vk = 1;
if (v > 50) vk = 2;
if (v > 100) vk = 3;
if (v > 250) vk = 4;
if (v > 500) vk = 5;
if (v > 1000) vk =6;

switch (k)
{
case 1 : kr = danm[vk]; break;
case 2 : kr = faer[vk]; break;
case 3 : kr = gron[vk]; break;
case 4 : kr = nord[vk]; break;
case 5 : kr = euro[vk]; break;
case 6 : kr = udla[vk]; break;
}

// udskriver resultatet
System.out.println("\nKode: "+k+"\t Vægt: "+v+"g.");
System.out.println("\nBrevet skal frankeres med\t:"
+Text.writeDouble(kr, 1, 2)+" kr.");
System.out.println("\n---------------------------------------\n");
}

public static void main(String[] args) throws IOException
{
BufferedReader in = Text.open(System.in);
int vaegt = 0;
boolean fejl = false;

// starter med titel og kode oversigt.
System.out.println( );
System.out.println("PORTOBEREGNING");
System.out.println("==============");
System.out.println("\nDanmark \t kode:1");
System.out.println("Færøerne\t kode:2");
System.out.println("Grønland\t kode:3");
System.out.println("Norden \t kode:4");
System.out.println("Europa \t kode:5");
System.out.println("Udland \t kode:6");

// indlæsning af tal
System.out.print("Indtast brevets område kode (kode 0 standser indlæsning) ");
int kode = Text.readInt(in);
if (kode > 0 & kode < 7) // spørger efter vægt, hvis kode er under 7 og over 0
{
System.out.print("Indtast brevets vægt i gram :");
vaegt = Text.readInt(in);
if(vaegt > 2000)
{
System.out.println("Brevet er for tungt");
fejl = true;
}
}
while (kode!=0) // kører programet til der tastes kode 0
{
if (!fejl) beregn(kode,vaegt); // kalder metoden beregn, hvis der ikke er fejl
fejl = false;
System.out.print("Indtast brevets område kode (kode 0 standser indlæsning) ");
kode = Text.readInt(in);
if (kode > 0 & kode < 7) // spørger efter vægt, hvis kode er under 7 og over 0
{
System.out.print("Indtast brevets vægt i gram :");
vaegt = Text.readInt(in);
if(vaegt > 2000)
{
System.out.println("Brevet er for tungt\n\n");
fejl = true;
}
}
}
}
}

//opgave 10

//Ib Vang-Pedersen

//Et program der finder ud af hvor meget portoen er på et brev

import java.io.*;

import javagently.*;

class Porto

{

static int vaegt=7;

static int land=6;

static int vk,lk;

static double Tabel[][]=new double[vaegt][land];

//Indlæser tal til tabelen fra filen porto

static void tabelInd() throws IOException

{

BufferedReader fin=Text.open("porto.dat");

for(int i=0;i<vaegt;i++){

for(int j=0;j<land;j++)

Tabel[i][j]=Text.readDouble(fin);

}

}

// Finder koden lk,der skal bruges til det ene index i tabelen

static int landKode() throws IOException

{

BufferedReader in=Text.open(System.in);

System.out.println("1.Danmark. 2.Færøerne 3.Grønland. 4.Norden 5.Europa 6.Øvrige");

System.out.println();

boolean found=false;

while (!found)

{

Text.prompt("Indtast talkode for det land, som De vil sende deres brev til ");

lk=Text.readInt(in);

lk=lk-1;

if (found=(lk==0|lk==1|lk==2|lk==3|lk==4|lk==5));

else System.out.println("Der er indtastet en forkert kode.Prøv igen");

}

return lk;

}

// Finder koden vk, som skal bruges til det ene index i tabelen

static int vaegtKode() throws IOException

{

BufferedReader in=Text.open(System.in);

try

{

boolean found=false;

while(! found)

{

Text.prompt("Indtast brevets vægt i gram");

int c=Text.readInt(in);

if (c<=20) vk=0;

else if (c<=50)vk=1;

else if (c<=100) vk=2;

else if (c<=250) vk=3;

else if (c<=500) vk=4;

else if (c<=1000) vk=5;

else if (c<=2000) vk=6;

else System.out.println("Du har intastet en for stor en vægt. Prøv igen");

found=(vk==0|vk==1|vk==2|vk==3|vk==4|vk==5|vk==6);

}

}

catch (EOFException e){}

System.out.println();

return vk;

}

//Finder det bestemte elememt i tabelen og skriver det ud

static void seResultat(int a,int b)

{

System.out.println();

System.out.println("Prisen for at sende et brev bliver "+Text.writeDouble(Tabel[a][b],0,2)+"kr.");

}

public static void main(String[] args)throws IOException

{

int stopTast=1;

do

{

BufferedReader in=Text.open(System.in);

tabelInd();

vaegtKode();

landKode();

seResultat(vk,lk);

System.out.println();

Text.prompt("Tast 1 for at fortsætte eller -1 for at stoppe");

stopTast=Text.readInt(in);

}

while (stopTast!=-1);

}

}

Opgave 11.

Udarbejd et program, der kan beregne og udskrive karaktergennemsnittet for en klasse elever. De enkelte karakterer indlæses via tastaturet. Programmet skal kunne afvise fejlindtastede karakterer (1, 2, 4, 12 og højere end 13) med en passende fejlmeddelelse, og derefter give brugeren mulighed for at rette fejlen. Programmet stoppes ved indtastning af karakteren -1.

import java.io.*;

import javagently.*;

public class Karakter

{

/* Datanom Basisfag Opgave 11. Beregner gennemsnitskarakter på elever

* i en klasse. En karakter på -1 standser indlæsningen af karakterer.

* Af Lars Hansen 14/5 - 1999.

*/

static double gennemsnitsK;

static double samletK = 0;

static int antalElever = 0;

static int karakter;

// metode til indlæsning og kontrol af karakterer

static void indLKarakter()throws IOException

{

BufferedReader in = Text.open(System.in);

Text.prompt("Indtast elevens karakter>");

karakter = Text.readInt(in);

if (karakter > 13 | karakter < -1 | karakter == 12 |

karakter == 4 | karakter == 2 | karakter == 1 | karakter == 0)

{

System.out.println("Ugyldig karakter prøv igen. \n");

indLKarakter();

}

}

public static void main(String[] args) throws IOException

{

// starter med titel

System.out.println( );

System.out.println("GENNEMSNITS KARAKTER");

System.out.println("====================");

System.out.println("\nUdregner gennemsnitskarakteren på elever i en klasse,"+

"\nkarakteren -1 standser indlæsningen af karakterer. \n");

// Indlæsnings løkke (read ahead)

indLKarakter();

while (karakter != -1)

{

antalElever ++;

samletK += karakter;

indLKarakter(); // kalder metoden indLKarakter

}

// udregner gennemsnitskarakteren

gennemsnitsK = samletK / antalElever;

// udskriver gennemsnitskarakteren

System.out.println("Gennemsnitskarakteren for klassen er: "+Text.writeDouble(gennemsnitsK, 3, 1));

}

}

Opgave 12.

Udarbejd et program, som kan finde ud af, om en elev er dumpet eller har bestået eksamen. For at bestå skal

  1. gennemsnittet af karaktererne være mindst 5.5
  2. ingen enkelt karakter må være mindre end 5
  3. summen af den mindste og højeste karakterer skal være mindst 13.

Indtastningen starter med at bede om antallet af karakterer der skal indlæses (max 25). Derefter indlæses de enkelte karakterer efter samme regler som i opgave 10.

//Opgave 12

//Ib Vang-Pedersen

//Et program der udregner om man har bestået eksamen

import java.io.*;

import javagently.*;

class Eksamen2

{

static int Karakter[];

static int antal;

static void indlaesKar() throws IOException

{

BufferedReader in=Text.open(System.in);

Text.prompt("Indtast antal fag");

antal=Text.readInt(in);

Karakter=new int[antal];

for (int i=0;i<antal;i++)

{

boolean found=false;

while(!found)

{

Text.prompt("Indtast karakter nr "+(i+1));

int kar=Text.readInt(in);

if (found=(kar==0|kar==03|kar==5|kar==6|kar==7|kar==8|kar==9|kar==10|kar==11|kar==13))

Karakter[i]=kar;

else System.out.println("du har tastet en ugyldig karakter prøv igen");

System.out.println();

}

}

}

static void beregnEksamen()

{

double gennemSn=0;

int Total=0;

int min=13;

int max=0;

for(int i=0;i<antal;i++)

{

if (Karakter[i]<min) min=Karakter[i];

if (Karakter[i]>max) max=Karakter[i];

Total+=Karakter[i];

gennemSn=(Total*1.0)/antal;

}

System.out.println("Den laveste karakter er "+min);

System.out.println();

System.out.println("Den højeste karakter er "+max);

System.out.println();

System.out.println("Elevens gennemsnit er "+Text.writeDouble(gennemSn,2,2));

System.out.println();

if ((min>=5)&(min+max>=13)&(gennemSn>=5.5))

System.out.println("Eleven har bestået eksamen");

else System.out.println("Elven er dumpet");

}

public static void main(String[]args) throws IOException

{

indlaesKar();

beregnEksamen();

}

}

import java.io.*;

import javagently.*;

public class Dumpet

{

/* Datanom Basisfag Opgave 12. Beregner på grundlag af karakterer fra eleven

* om eleven har bestået eller dumpet.

* Af Lars Hansen 17/5 - 1999.

*/

static double gennemsnitsK;

static double samletK = 0;

static int antalKarakterer = 0;

static int min = 13;

static int max = 0;

static int karakter;

static boolean bestaaet = false;

static String dumBes;

// metode til indlæsning og kontrol af karakterer

static void indLKarakter()throws IOException

{

BufferedReader in = Text.open(System.in);

Text.prompt("Indtast elevens karakter>");

karakter = Text.readInt(in);

if (karakter > 13 | karakter < -1 | karakter == 12 |

karakter == 4 | karakter == 2 | karakter == 1 | karakter == 0)

{

System.out.println("Ugyldig karakter prøv igen. \n");

indLKarakter();

}

}

public static void main(String[] args) throws IOException

{

// starter med titel

System.out.println( );

System.out.println("EKSAMENS RESULTAT");

System.out.println("====================");

System.out.println("\nVuderer på grundlag af indtastede karakterer om eleven,"+

"\nhar bestået eller dumpet. \n");

// Indlæsnings løkke

BufferedReader in = Text.open(System.in);

Text.prompt("Hvor mange karakterer indtastes? (max 25)");

antalKarakterer = Text.readInt(in);

if (antalKarakterer > 25)

{

Text.prompt("For mange karakterer, max 25. Indtast igen");

antalKarakterer = Text.readInt(in);

}

for (int n = 1; n <= antalKarakterer;++n)

{

indLKarakter(); // kalder metoden indLKarakter

samletK += karakter;

if (karakter < min) min = karakter;

if (karakter > max) max = karakter;

}

// udregner om eleven har bestået

gennemsnitsK = samletK / antalKarakterer;

int sumkarakter = min + max;

if (gennemsnitsK >= 5.5 & sumkarakter >= 13 & min >= 5)

bestaaet = true;

if (bestaaet)

dumBes ="bestået";

else

dumBes ="dumpet";

// udskriver

System.out.println("Eleven har "+dumBes);

if (!bestaaet)

System.out.println("Gennemsnits karakter: "+gennemsnitsK+

"\nHøjeste karekter: "+ max +"\nLaveste karakter: "+min);

}

}

 

Opgave 13.

Tænk på et tal mellem 0 og 1000. Udarbejd et program, som ved at stille spørgsmål kan gætte, hvilket tal brugeren tænker på. Spørgsmålet kan f.eks. lyde "Er tallet mindre end 500? Svar ja eller nej". Det gælder om at stille så få spørgsmål som muligt.

 

Opgave 14.

I forbindelse med et motionsløb skal der udarbejdes et program, som kan beregne den samlede løbetid i sekunder på grundlag af to indtastede klokkeslet (start- og slutklokkeslet).

Klokkeslettene indtastes som tal på formen: TTMMSS.

I forbindelse med indlæsningen af klokkeslettene skal det kontrolleres, om klokkeslettene er formelt korrekte, dvs. TT skal være 00-23, MM skal være 00-59, og SS skal være 00-59. I tilfælde af fejl udskrives en passende fejlmeddelelse på skærmen, inden man beder operatøren om at indtaste klokkeslettet påny.

15.

Amortisering af pantebrev. Der skal udarbejdes et program, som på grundlag af indtastede oplysninger om restgæld, rentesats pr. termin og ydelse pr. termin kan beregne, hvorledes ydelsen fordeler sig på renter og afdrag indtil lånet er afdraget eller indtil der er gået 20 terminer.

Udskriften på skærm kan udformes således:

Restgæld: 9999999.99 Rentesats: 99.9999 Ydelse: 999999.99

Termin

Rente

Afdrag

Ny restgæld

1

9999999.99

9999999.99

9999999.99

2

9999999.99

9999999.99

9999999.99

3

9999999.99

9999999.99

9999999.99

4

9999999.99

9999999.99

9999999.99

5

9999999.99

9999999.99

9999999.99

osv.

16.

Udarbejd en funktion som kan afrunde et beløb til hele 25-ører. Funktionens signatur kan beskrives således:

float Afrund25(float Beloeb);

17.

Udarbejd et program som kan udskrive alle tal mellem 1 og 10. Samtidig udskrives kvadratet og fakultetet for hvert tal.

18.

Indlæs følgende oplysninger i en tabel: Navn og højde. Indlæsningen af oplysninger afsluttes ved indtastning af teksten *STOP* i Navn.

Herefter udskrives tabellens oplysninger tre gange. Først som de blev indtastet, dernæst sorteret i alfabetisk orden og endelig sorteret efter højde.

19.

Indlæs tre tal og udskriv dem, således at det mindste tal udskrives først og det første til sidst.