I dialogboksen som er gjengitt nedenfor, kan du se fire stjernefigurer ved
siden av hverandre. Figurene er laget ved å bygge opp en tekststreng
(String
-variabel) ved å bruke stjerne-tegn, blanke tegn (mellomrom) og
linjeskifttegn. Tekststrengen blir vist i et tekstområde
(JTextArea
). Hensikten med oppgaven er å gi trening i å bruke
for
-løkker. Figuren skal derfor bygges opp ved å gjennomløpe en
del slike løkker, der det for hvert gjennomløp av en løkke legges til ett
nytt tegn til tekststrengen. Det er imidlertid litt lettere å lage programmet
slik at de fire stjernefigurene blir vist under hverandre, istedenfor ved siden
av hverandre. Lag derfor først et program der figurene blir vist under hverandre.
Deretter kan du prøve å lage et program der de står ved siden av hverandre,
som på figuren. For å unngå at stjernefigurene blir skjeve, lønner det seg å
skifte skrivefont for tekstområdet som skal vise figurene. Det får du til ved
å skrive som følger:
JTextArea tekstområde = new JTextArea(); //Skal vise figurene. tekstområde.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
Klassen Font
som definerer skrivefonter ligger i pakken
java.awt
. Du må derfor importere den derfra.
For rettvinklede trekanter vet vi at Den pytagoreiske læresetning gjelder:
Kvadratet (andrepotensen) av hypotenusen er lik summen av kvadratene av
katetene (de to sidene som står vinkelrett på hverandre).
Dersom lengden av
alle de tre sidene er hele tall, kalles derfor disse tre tallene et
pytagoreisk trippel. Et velkjent eksempel på et slikt trippel er 3, 4, 5
(fordi 5 * 5 er lik 3 * 3 + 4 * 4).
Men det finnes også mange andre, for
eksempel 5, 12, 13 og 8, 15, 17.
Du får nå som oppgave å skrive et program som finner og skriver ut alle pytagoreiske tripler inntil en gitt grense for de tre tallene. Bruker skal kunne velge denne grensen. (Alle de tre tallene skal altså være mindre enn eller lik den valgte grense.) Legg også inn en tellevariabel slik at programmet skriver ut hvor mange pytagoreiske tripler det er (innenfor den valgte grense). Lag programmet slik at det gir informative ledetekster ved innlesing og visning av resultater.
Hint: Bruk trippel-nestede for-løkker for å finne de pytagoreiske triplene.
Vis resultatene fra programmet i et tekstområde som du viser i en meldingsboks. Når du i utskriften viser ett pytagoreisk trippel per linje, kan det bli flere linjer enn det er plass til å vise på skjermen samtidig. Det er da behov for å utstyre tekstområdet med skrollefelter. Det får du til ved å gjøre som i følgende eksempel:JTextArea tekstområde = new JTextArea( 10, 15 ); // 10 linjer og // inntil 15 tegn på hver linje vises samtidig - du kan // velge andre tall for dette etter eget ønske < legg inn den teksten du ønsker tekstområdet skal inneholde > JScrollPane skrolleområde = new JScrollPane( tekstområde ); // utstyrer tekstområdet med skrollefelter JOptionPane.showMessageDialog( null, skrolleområde ); // viser på skjermen tekstområdet med skrollefelterI programmet trenger du da i tillegg følgende
import
-instruksjon:
import javax.swing.JScrollPane;
Et primtall er et helt tall større enn 1 som bare er delelig med seg selv og med 1. Sekvensen av primtall starter dermed med 2, 3, 5, 7, 11, 13, ... . Primtall spiller en viktig rolle i mange sammenhenger, også når det gjelder databehandling. Det er derfor av interesse å kjenne til effektive algoritmer for å finne primtall. En slik algoritme som går helt tilbake til oldtida, kalles Erathostenes' såld. Denne kan beskrives på følgende måte:
Vi tenker oss at vi skriver opp på et papir alle hele tall fra 2 og oppover til en valgt grense n. Så går vi fram på følgende måte: Først stryker vi over alle multipler av 2 (det vil si 4, 6, 8, 10, ...). Vi finner deretter første tall som ikke er strøket over. Det vil være 3. Så stryker vi over alle multipler av 3 (det vil si 9, 12, 15, 18, ...). Vi fortsetter på samme måte: Finner nå første tall som ikke er strøket over, det vil være 5. Så stryker vi over alle multipler av 5 (det vil si 10, 15, 20, ...). Slik fortsetter vi. Når vi er ferdige med denne prosessen, vil alle tall som ikke er strøket over, være primtall (det vil si 2, 3, 5, 7, 11, ...).
Du får som oppgave å skrive et program som leser inn en valgt grense for verdien n nevnt ovenfor og som finner og skriver ut på skjermen alle primtall inntil denne grensen.
For å finne primtallene, kan du gå fram på følgende måte:
Opprett en array av logiske verdier med så mange plasser som den innleste grense.
Initialiser den til true
på alle plasser.
Arrayens indekser vil svare til de positive hele tallene. (Vi ser bort fra 0
og 1.) Målet er nå å sette til false
alle plasser i arrayen som
har en arrayindeks som ikke er primtall, slik at når vi er ferdige, finner vi
primtallene som alle arrayindeksene der det i arrayen fortsatt er verdi
true
. For å få til dette, gjennomløper du arrayen fra indeksplass
2 og oppover. Dersom det på en indeksplass i
er verdi true
,
gjennomløper du resten av arrayen ved å sette til false
alle steder
som har en indeks som er et multiplum av i
.
Lag programmet som en vindusapplikasjon.
Stjernefigurer.java |
PytagoreiskeTripler.java |
Primtall.java |
Primtallvindu.java |
Primtalltest.java |