Programmering — Oppgaver til kapittel 4 og 5- Kontrollstrukturer

Oppgave 1

Lag et program som leser inn tre hele tall fra brukeren. Programmet skal finne ut hvilket av de tre tallene som er minst (det vil si ligger lengst til venstre på tallinja) og skrive ut resultatet.
Eksempel: Dersom de tre innleste tallene er 5, -5 og 2, så skal programmet skrive ut
-5 er minst.

Oppgave 2

Lag et applikasjonsprogram som trekker 100 slumptall (hele tall) i intervallet fra 0 (inkludert) til 100 (ikke inkludert). Du får et slikt tall ved å skrive
int tall = (int) (Math.random() * 100);

Programmet skal skrive ut i tabellform alle tall som blir trukket, med 10 tall per linje. Utskriften skal gjøres i et tekstområde som blir plassert i dialogboks. (Se Introduksjon til programmering, kapittel 5, Tekst i eget tekstområde, for beskrivelse av hvordan dette kan gjøres.) Programmet skal også finne og skrive ut det minste, det nest minste, det nest største og det største av tallene som blir trukket. På utskriften vil du kunne se om det er funnet riktige verdier for disse tallene!

Oppgave 3

Skriv et program som beregner og skriver ut andre og tredje potens av de hele tallene fra 0 til 10, sammen med tallene selv, slik at du får en tabell tilsvarende det som er vist i dialogboksen nedenfor.

Bruk en løkke for å beregne potensene og skrive ut tabellen. Prøv å lage programmet slik at det er lett å endre det i tilfelle vi isteden ønsker å skrive ut tall og potenser for tall fra et annet intervall.

Oppgave 3b

Det skal lages et program som er en utvidelse og generalisering av programmet beskrevet i oppgave 3. Du skal gjøre følgende:
Definer en klasse Potenstabell med innhold som beskrevet i pseudo-kode nedenfor.

public class Potenstabell
{
  // Beregner og returnerer potensen med grunntall x og eksponenent y
  public int power(int x, int y)
  {
    < beregner og returnerer potens >
  }

  // Beregner potenser for tall og skriver ut potensene på tabellform
  // i et tekstområde. Parametrene har følgende betydning:
  // startverdi: første tall det beregnes potenser for.
  // makseksponenent: høyeste eksponent i potensene som beregnes.
  // antall: antall forskjellige tall det beregnes potenser for.
  // For hvert tall fra og med startverdi og oppover beregnes førstepotens,
  // andrepotens, ..., til og med potens med eksponent lik makseksponent.
  public void potenser(int startverdi, int makseksponent, int antall)
  {
    < beregner og skriver ut potenser >

  }
}

Definer en "driverklasse" til klassen Potenstabell beskrevet ovenfor, det vil si en klasse som inneholder en main-metode. Denne må opprette et Potenstabell-objekt og foreta et passsende metodekall for å få ut den potenstabell du ønsker. Dersom du for eksempel ønsker å få skrevet ut første til femtepotens for tallene fra 1 til 15, skal du få ut en tabell tilsvarende som vist på følgende bilde:
Tabell

Oppgave 4

Øvelse i å bruke de aritmetiske operatorene i java.
Skriv en applikasjon som leser inn et femsifret heltall fra brukeren, splitter opp tallet i enkeltsifre og skriver ut enkeltsifrene med tre mellomrom (blanke tegn) mellom hvert siffer. Dersom det for eksempel blir lest inn 27503, skal programmet skrive ut
2 7 5 0 3

Det er her meningen at du skal behandle tallet som en int-verdi og bruke regneoperasjoner for å splitte det opp i enkeltsifre. (Det innleste tallet og hvert enkelt siffer skal lagres i hver sin heltallsvariabel. Du skal altså ikke behandle tallet som en sifferstreng og bruke String-metoder.)

Frivillig utfordrning: Prøv å modifisere programmet slik at det virker for et vilkårlig antall sifre i det innleste tallet (forutsatt at tallet ikke er for stort til å kunne leses inn som en int-verdi).

Løsningsforslag

Oppgave 1
Oppgave 1, utvidet løsning
Oppgave 2
Oppgave 3a
Oppgave 3b
Oppgave 3b, hovedprogram