Tällä sivulla ovat kurssikokeen 4.6. tehtävät ratkaisuineen. Tehtävät voi usein ratkaista monella eri tavalla, jotka saattavat poiketa paljonkin malliratkaisuista.
Kauppa on auki ma–pe klo 8–21, la klo 8–18 ja su klo 12–21. Tee ohjelma, joka kysyy käyttäjältä viikonpäivän lyhenteen ja tulostaa vastaavan kaupan aukioloajan.
Esimerkki 1:
Anna viikonpäivä: ti Aukioloaika: 8-21
Esimerkki 2:
Anna viikonpäivä: la Aukioloaika: 8-18
import java.util.*; public class Aukioloaika { private static Scanner input = new Scanner(System.in); public static void main(String[] args) { System.out.print("Anna viikonpäivä: "); String viikonpaiva = input.nextLine(); int alku = 8; int loppu = 21; if (viikonpaiva.equals("la")) { loppu = 18; } if (viikonpaiva.equals("su")) { alku = 12; } System.out.println("Aukioloaika: " + alku + "-" + loppu); } }
Tee ohjelma, joka tulostaa lähtölaskennan käyttäjän antamasta positiivisesta kokonaisluvusta nollaan asti. Mutta jos käyttäjä antaa luvun, joka on yli 20, ohjelma sanoo "En jaksa laskea!"
Esimerkki 1:
Anna luku: 7 7 6 5 4 3 2 1 0
Esimerkki 2:
Anna luku: 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Esimerkki 3:
Anna luku: 24 En jaksa laskea!
import java.util.*; public class Lahtolaskenta { private static Scanner input = new Scanner(System.in); public static void main(String[] args) { System.out.print("Anna luku: "); int luku = Integer.parseInt(input.nextLine()); if (luku <= 20) { for (int i = luku; i >= 0; i--) { System.out.print(i + " "); } System.out.println(); } else { System.out.println("En jaksa laskea!"); } } }
Tee ohjelma, joka kysyy käyttäjältä nimiä, kunnes käyttäjä antaa tyhjän merkkijonon. Sitten ohjelma tulostaa uudestaan kaikki nimet, joiden pituus on parillinen.
Esimerkki:
Anna nimi: Aino Anna nimi: Benjamin Anna nimi: Cecilia Anna nimi: Daniel Anna nimi: Elias Anna nimi: Parillisen pituiset: Aino Benjamin Daniel
import java.util.*; public class Parilliset { private static Scanner input = new Scanner(System.in); public static void main(String[] args) { ArrayList<String> nimet = new ArrayList<String>(); while (true) { System.out.print("Anna nimi: "); String nimi = input.nextLine(); if (nimi.equals("")) { break; } if (nimi.length() % 2 == 0) { nimet.add(nimi); } } System.out.println("Parillisen pituiset:"); for (String nimi : nimet) { System.out.println(nimi); } } }
DNA-ketju on merkkijono, joka muodostuu merkeistä A, C, G ja T. Tee ohjelma, joka kysyy käyttäjältä DNA-ketjun ja etsii pisimmän siinä olevan samaa merkkiä toistavan osan. Voit olettaa, että pisin toistava osa on yksikäsitteinen.
Esimerkki 1:
Anna DNA-ketju: AGCCACTC Pisin toistava osa: CC (2 merkkiä)
Esimerkki 2:
Anna DNA-ketju: ATGGTCCCTAAAATCCCTGGTA Pisin toistava osa: AAAA (4 merkkiä)
import java.util.*; public class ToistavaOsa { private static Scanner input = new Scanner(System.in); public static void main(String[] args) { System.out.print("Anna DNA-ketju: "); String ketju = input.nextLine(); int toistavaMaara = 0; char toistavaMerkki = 'X'; int pisinMaara = 0; char pisinMerkki = 'X'; for (int i = 0; i < ketju.length(); i++) { char uusiMerkki = ketju.charAt(i); if (uusiMerkki == toistavaMerkki) { toistavaMaara++; } else { toistavaMerkki = uusiMerkki; toistavaMaara = 1; } if (toistavaMaara > pisinMaara) { pisinMaara = toistavaMaara; pisinMerkki = toistavaMerkki; } } System.out.print("Pisin toistava osa: "); for (int i = 0; i < pisinMaara; i++) { System.out.print(pisinMerkki); } System.out.println(" (" + pisinMaara + " merkkiä)"); } }
Mitä seuraava koodi tulostaa?
String a = "Aapeli"; String b = "Maija"; a = b; b = "Uolevi"; System.out.println(a);
Entä mitä seuraava koodi tulostaa?
ArrayList<Integer> a = new ArrayList<Integer>(); ArrayList<Integer> b = new ArrayList<Integer>(); a.add(1); a.add(2); b.add(3); b.add(4); a = b; b.add(5); System.out.println(a);
Ensimmäisen koodin tulostus on seuraava:
Maija
Toisen koodin tulostus on seuraava:
[3, 4, 5]
Miksi binäärihaun käyttäminen vaatii, että taulukko on järjestyksessä?
Jos taulukko ei ole järjestyksessä, binäärihaku ei välttämättä löydä etsittävää lukua, vaikka se olisi taulukossa. Tarkastellaan esimerkiksi seuraavaa taulukkoa, kun etsittävä luku on 2:
1 | 1 | 3 | 5 | 2 |
Binäärihaku tarkistaa ensin taulukon keskimmäisen luvun (3) ja hylkää sen perusteella taulukon oikean osan, koska 3 > 2. Kuitenkin luku 2 olisi nimenomaan taulukon oikeassa osassa.