- 1.
- Kirjoita algoritmi joka tarkistaa onko merkkijono sama
kuin kysymysmerkkejä sisältävä merkkijono (? = mikä
merkki vaan). Kysymysmerkki tarkoittaa siis mitä tahansa yhtä kirjainta.
jono maski
"Kissa" "K?ss?" => samat
"Kiss" "K?ss?" => ei samat
- 2.
- Java-toteutus ja testipääohjelma edelliselle algoritmille.
public static boolean onko_samat_kys(String jono, String maski);
...
if ( onko_samat_kys("Kissa","K?ss?") ) ...
- 3*.
- Kirjoita algoritmi, jolle annetaan kaksi merkkijonoa ja
joka poistaa toisesta jonosta kaikki toisen jonon
esiintymät. Lopputulokseen ei saa jäädä enää yhtään
poistettavan merkkijonon esiintymää (vihje: tee "runsaasti" apualiohjelmia):
jono poista tulos
Catcat at => Cc
Paatti at => Pi
Puatit at => Puit
-
- Kokeile osaatko tehdä Java-toteutusta (vapaaehtoinen +1
bonuspiste, eli jos algoritmi JA Java-toteutus, voit
merkitä yhteensä kaksi pistettä. Pelkällä Java-toteutuksella vain yksi piste).
- 4a)
- Mitkä seuraavista muuttujien esittelyistä ovat
syntaktisesti oikeita. Mitkä syntaktisesti oikeista
ovat hyviä:
int luku1,luku2,luku3,luku4,luku5,luku6;
int o,l,I;
double lyhyt,short,kort;
int i,j;
double varpaan_pituus,räpylän_leveys;
int kissa1,_2_kanaa,3_koiraa;
- b)
- Keksi hyvät muuttujat kuvaamaan seuraavia tilanteita
(ja kirjoita muuttujien esittely):
lasketaan kuorma-autoja ja henkilöautoja
mitataan huoneen "strategiset" tiedot ja lasketaan pinta-ala
- 5*.
- Suunnittele ja kirjoita Java-ohjelma, joka kysyy huoneesta mitatut tiedot ja tulostaa sitten näiden perusteella huoneen pinta-alan ja tilavuuden. Toteuta
ohjelma monisteen 8.5 luvun mukaisesti aliohjelmia käyttäen . Katso malliksi
java-muut/Matka_a2.java.
- 6*
- Demokerran 2 mallivastauksessa Etusuku2.java:ssa on
kaksi samankaltaista aliohjelmaa. Muuta nämä yhdeksi
aliohjelmaksi vaihda_alku_loppu ja toteuta sitten
alkuperäiset kaksi aliohjemaa yhden rivin aliohjelmina
jotka kutsuvat vaihda_alku_loppu.
- 7*.
- Näytä kuvan avulla (piirrä kuva kunkin sijoituksen jälkeen uudelleen) mitä ovat muuttujien arvot seuraavien
sijoitusten jälkeen (kun muuttujat ovat sijoittuneet
muistipaikkoihin kuten kuvassa). Piirrä kuvaan myös
mihin viitteet b, c ja p loogisesti aina "osoittavat".
ks. Viitteet.java:
int a;
StringBuffer b = new StringBuffer("1");
StringBuffer c = new StringBuffer("2");
StringBuffer p;
a = 19;
p = b;
p.append("0");
p = c;
p.append(a);
c = b;
c.append("3");
a = 19 p = b p.app(0) p = c p.app(a) c = b c.app(3)
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
100 | | a | | | | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
104 |900 | b | | | | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
108 |940 | c | | | | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
112 | ?? | p | o+- | o+- | o+- | o+- | o+- | o+-
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
Keko:
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
900 | 1 | | | | | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
940 | 2 | | | | | | | | | | | | |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
- 8.
- Kirjoita Java-ohjelma, joka lukee yhden merkkijonon
(rivin) ja tulostaa toisen merkkijonon siten, että
merkkijonon 1. ja 2. sana ovat aakkosjärjestyksessä.
Tulostetaan aina vain kaksi sanaa, vaikka syötetyssä
merkkijonossa olisi useampikin sana. Toteutus mielellään funktion jarjesta_1_2 -avulla (eli kirjoita ko.
funktio, vrt Etusuku2.java).
- B1.
- Kirjoita algoritmi (vrt. tehtävä 1) joka tarkistaa onko
merkkijono sama kuin mahdollisesti YHDEN (tai ei yhtään, mutta ei enempää, jos saa olla monta *, niin asia
vaikeutuu oleellisesti) *-merkin sisältävä jono (*:n
kohdalla voi siis olla miten monta, myös 0, ja mitä
merkkiä tahansa)
jono maski
"Kissa" "K*a" => samat
"Kissa" "K*i" => ei samat
"Kissa" "K*" => samat
"Lintu" "K*" => ei samat
-
- Mikäli kuitenkin haluat kokeilla useamman tähden
totetusta, niin vinkiksi yksi sana: rekursio.
- G1-2
- Hae tiedosto
n:\kurssit\ohj2\demot\demo04\demo1\users.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<base target=m1>
...
93 <a href="vesal/index.html?r=">Vesa Lappalainen</a> = 8.5<br>
94 <a href="mattim/index.html?r=">Matti Meikäläinen</a> = 8<br>
95 <a href="teppot/index.html?r=">Teppo Teikäläinen</a> = 9<br>
...
-
- ja tee sitten ohjelma, joka lukee tiedoston ja tulostaa
sen muodossa:
93 Vesa Lappalainen = 8.5 - vesal
94 Matti Meikäläinen = 8 - mattim
95 Teppo Teikäläinen = 9 - teppot
-
- eli riisuu pois kaikki rivit, joissa ei ole linkkiä ja
linkkiriveistä tulostetaan em. tiedot em. muodossa