Ohjelmointi 1 / 2009
public class Hypercool { public static void main(String[] args) { int a = 1; int b = 1; System.out.print("1"); for (int i = 0; i < 10; i++) { System.out.print(" " + a); int d = a; a += b; b = d; } } }
/** * Muuttaa kirjaimen käyttäjätunnukseen kelpaavaksi. * Kirjain muutetaan pieneksi ja skandeista poistetaan pisteet. * Tuntemattomat kirjaimet ja mahdolliset välimerkit korvataan * 1-merkillä. * @param c muutettava kirjain * @return käyttäjätunnukseen kelpaava kirjain * @example * <pre name="test"> * muutaKirjain(' ') === '1'; * muutaKirjain('2') === '1'; * muutaKirjain('A') === 'a'; * muutaKirjain('B') === 'b'; * muutaKirjain('a') === 'a'; * muutaKirjain('Ä') === 'a'; * muutaKirjain('Ö') === 'o'; * muutaKirjain('ö') === 'o'; * </pre> */ public static char muutaKirjain(char c) { final String mitka = "åäö"; final String miksi = "aao"; char lc = Character.toLowerCase(c); int i = mitka.indexOf(lc); if ( i >= 0 ) return miksi.charAt(i); if ( lc < 'a' ) return '1'; if ( lc > 'z' ) return '1'; return lc; } /** * Aliohjelma muuttaa nimen käyttäjätunnukseksi. * Käyttäjätunnus muodostetaan yhdistämällä käyttäjän * etunimen ensimmäinen kirjain ja sukunimen ensimmäiset * seitsemän merkkiä, jolloin käyttäjätunnuksesta tulee 8 merkkiä pitkä. * Jos sukunimessä ei ole seitsemää merkkiä, sukunimi otetaan mukaan * kokonaisuudessaan. * Kirjaimet ä, ö ja å korvataan kirjaimilla a, o ja a. * Käyttäjätunnus sisältää ainoastaan pieniä kirjaimia. * @param etunimi muutettavan nimen etunimi * @param sukunimi muutettvan nimen sukunimi * @return nimien perusteella muodostettu käyttäjätunnus * @example * <pre name="test"> * teeTunnus("Martta","Hänninen") === "mhannine" * teeTunnus("Åke","Ek") === "aek" * teeTunnus("Björn","Björnström") === "bbjornst" * </pre> */ public static String teeTunnus(String etunimi, String sukunimi) { /// TÄYDENNÄ TÄMÄ... }
5 2 -8 2 7 5 1 1 4 -3 12 27 transpoosi 2 4 -8 -3 2 12 7 27 --------------------------------------------------- 2 5 2 -4 -4 10 transpoosi 5 10
i. mansikoiden määrä kiloina ii. henkilötunnus iii. vuosiluku iv. onko kurssilla tilaa
package tentti09; import java.util.Scanner; /** * Ohjelma kysyy kaksi nimeä ja laskee nimien perusteella * kaksinumeroisen rakkausprosentin. Rakkausprosentti lasketaan * laskemalla "LOVES"-sanan jokaisen kirjaimen lukumäärät kummassakin * nimessä. Esimerkiksi nimissä "Lotta" ja "Esko" on yhteensä * <pre> * – 1 kpl L-kirjainta * – 2 kpl O-kirjaimia * – 0 kpl V-kirjainta * – 1 kpl E-kirjainta * – 1 kpl S-kirjainta. * </pre> * Suur- ja pienaakkosilla ei ole merkitystä. * Kirjaimien lukumäärät summataan vierekkäisten kirjaimien lukumäärien * kanssa yhteen, jolloin jäljelle jää neljä lukumäärää. * Jos lukumäärien summasta tulee kaksi- tai useampinumeroinen, * niin silloin luvun numerot summataan yhteen * (esimerkiksi luvusta 12 tulee 3). * Vierekkäisten kirjaimien lukumäärien summaamista jatketaan kunnes * jäljellä on kaksi lukua. Nämä kaksi lukua muodostavat rakkausprosentin. * @author Ohj1 tuntiopet * @version 16.12.2009 */ public class Rakkauslaskuri { /** Sana jonka kirjaimiin verrataan */ public static final String RAKKAUSSANA = "LOVES";
/** * Laskee yhteen luvun numerot * @param luku tutkittava luku * @return luvun numeroiden summa * @example * <pre name="test"> * summaaNumerot(0) === 0 * summaaNumerot(12) === 3 * summaaNumerot(123) === 6 * summaaNumerot(78) === 15 * </pre> */ public static int summaaNumerot(int luku) { int summa = 0; int n = luku; while ( n > 0 ) { summa += n % 10; n = n / 10; } T1 return TÄYDENNÄ; } /** * Muuttaa luvun yksinumeroikseksi laskemalla luvun numerot * yhteen niin kauan että tulos on yksinumeroinen. * @param luku tutkittava luku * @return luvun numeroiden summa (aina yksi numero) * @example * <pre name="test"> * yksiNumeroinenSumma(1) === 1; * yksiNumeroinenSumma(12) === 3; * yksiNumeroinenSumma(123) === 6; * yksiNumeroinenSumma(78) === 6; * </pre> */ public static int yksiNumeroinenSumma(int luku) { int tulos = luku; T2 while ( tulos > 9 ) tulos = summaaNumerot(TÄYDENNÄ); return tulos; } /** * Laskee taulukon vierekkäiset luvut yhteen ja palauttaa * uuden taulukon, jossa on vierekkäisten lukujen summa. * Jos summan luvusta tulee kaksi tai useampinumeroinen, * sen numerot lasketaan yhteen kunnes se on yksinumeroinen. * @param a laskettava taulukko * @return vierekkäisten summa (yhtä lyhyempi kuin a) * @example * <pre name="test"> * Arrays.toString(laskeVierekkaisetYhteen(new int[]{1})) === "[]"; * Arrays.toString(laskeVierekkaisetYhteen(new int[]{1,1})) === "[2]"; * Arrays.toString(laskeVierekkaisetYhteen(new int[]{2,3,5})) === "[5, 8]"; * </pre> */ public static int[] laskeVierekkaisetYhteen(int[] a) { int[] a2 = new int[a.length - 1]; // Lukujen määrä vähenee aina yhdellä. for (int i = 0, j = 1; j < a.length; i++, j++) { T3 a2[i] = yksiNumeroinenSumma(TÄYDENNÄ); } T4 return TÄYDENNÄ; } /** * Laskee kuinka monta mitäkin sanan kirjainta löytyy jonosta. * @param sana jonka kirjaimia tutkitaan * @param jono josta kirjaimia etsitään * @return kirjainten lukumäärät kokonaislukutaulukossa * @example * <pre name="test"> * #import java.util.Arrays; * Arrays.toString(laskeKirjaimet("apu","saapas")) === "[3, 1, 0]"; * Arrays.toString(laskeKirjaimet("apu","")) === "[0, 0, 0]"; * Arrays.toString(laskeKirjaimet("Apua","saapas")) === "[0, 1, 0, 3]"; * </pre> */ public static int[] laskeKirjaimet(String sana,String jono) { int[] a = new int[sana.length()]; for (int si = 0; si < a.length; si++) { char c = sana.charAt(si); int lkm = 0; for (int ji=0; ji<jono.length(); ji++) T5 TÄYDENNÄ // jos sama kirjain paikoissa si ja ji kasvata lkm a[si] = lkm; } return a; } /** * Lasketaan sanojen rakkausprosentti. * @param nimi1 * @param nimi2 * @return nimien rakkausprosentti * * @example * <pre name="test"> * laskeRakkausprosentti("Lotta","Esko") === 86 * laskeRakkausprosentti("Viivi-Loviisa","Lasse-Sylvester") === 39 * </pre> */ T6 TÄYDENNÄ /** * Lasketaan rakkausprosentti käyttäjän syötteistä * @param args ei käytössä */ public static void main(String[] args) { System.out.println("Ohjelma laskee kahdesta nimestä rakkausprosentin."); Scanner scan = new Scanner(System.in); System.out.print("Anna ensimmäinen nimi: "); String nimi1 = scan.nextLine(); System.out.print("Anna toinen nimi: "); String nimi2 = scan.nextLine(); System.out.printf("Rakkausprosenttinne on %d!%n", laskeRakkausprosentti(nimi1, nimi2)); } }