Kratki testi

2009/2010

Prvi kratek test

  1. Sestavi program, ki prebere celoštevilski znesek in ugotovi, najmanj koliko kovancev potrebujemo, da ga izplačamo, če imamo na voljo samo kovance v vrednostih po 1, 5 in 10 €. Program naj izpiše tudi, koliko katerih kovancev potrebujemo. Primer:

    Vnesi znesek: 123
    Vrednost 123 lahko izplacamo s 15 kovanci.
    Potrebujemo 3 kovancev po 1 evro, 0 kovancev po 5 evrov in 12 kovancev po 10 evrov.

    Neuradna rešitev: znesek.c

  2. Sestavi program, ki prebere teže štirih uteži. Program naj preveri, ali se da uteži postaviti na starinsko tehtnico tako, da bo uravnotežena. Če se jih da postaviti na tehtnico, naj program še izpiše, koliko uteži je na eni in koliko na drugi strani. Primeri:

    Vnesi tezo 1. utezi: 3
    Vnesi tezo 2. utezi: 5
    Vnesi tezo 3. utezi: 6
    Vnesi tezo 4. utezi: 1
    Utezi ni mogoce postaviti na tehtnico.

    Vnesi tezo 1. utezi: 13
    Vnesi tezo 2. utezi: 5
    Vnesi tezo 3. utezi: 15
    Vnesi tezo 4. utezi: 7
    Utezi lahko postavimo na tehtnico: 2-2.

    Vnesi tezo 1. utezi: 8
    Vnesi tezo 2. utezi: 5
    Vnesi tezo 3. utezi: 20
    Vnesi tezo 4. utezi: 7
    Utezi lahko postavimo na tehtnico: 1-3 oz. 3-1.

    Neuradna rešitev: tehtnica.c, tehtnica2.c

  3. Sestavi program, ki prebere 8-mestno naravno število, ki predstavlja datum v obliki yyyymmdd. Program naj iz tega števila izlušči tri celoštevilske vrednosti (dan, mesec in leto) ter preveri, ali je datum smiselen. Datum je smiselen, če je dan med 1 in 31, mesec pa med 1 in 12 (poenostavljen koledar). Primeri:

    Vnesi osemmestno stevilo: 20080317
    Datum 17.3.2008 je smiseln.

    Vnesi osemmestno stevilo: 20091330
    Datum 30.13.2009 ni smiseln.

    Vnesi osemmestno stevilo: 20101000
    Datum 0.10.2010 ni smiseln.

    Neuradna rešitev: datum.c

Drugi kratek test

  1. Dr. E bi rad vzgojil n bakterij, odpornih na unobtanium. V ta namen začne s 100 bakterijami. Vsak dan se število bakterij podvoji, vendar Dr. E hoče samo odporne bakterije, zato konec vsakega desetega dne kulturo izpostavi unobtaniumu. Preživi natanko en odstotek bakterij (zaokroženo navzdol; če je imel npr. Dr. E 15472 bakterij, jih preživi 154).

    Sestavi program, ki bo prebral število n in Dr. E-ju povedal, na kateri dan bo populacija štela vsaj n bakterij. Ob dneh, na katere so bakterije obsevane, se upošteva število bakterij po obsevanju. Primera:

    Vnesi koncno stevilo bakterij: 12345
    Populacija bo dosegla 12345 bakterij 7. dan.

    Vnesi koncno stevilo bakterij: 123456
    Populacija bo dosegla 123456 bakterij 17. dan.

    Neuradna rešitev: unobtanium.c

  2. Na postaji čaka vlak s 25 vagoni, ki ga želimo natovoriti z rižem. Na prvi vagon damo n zrn riža, na vsak naslednji vagon pa 2 * (število zrn na prejšnjem vagonu) - 7 zrn. Nosilnost vsakega od vagonov je 109 zrn.

    Sestavi program, ki prebere število n s tipkovnice (predpostavi, da bo vedno veljalo n > 7) in pove, ali lahko napolnimo vse vagone, ne da bi jih polomili. Če tega ne moremo storiti, naj program izpiše, koliko vagonov vendarle lahko napolnimo. Primeri:

    Vnesi stevilo zrn na prvem vagonu: 9
    Napolnimo lahko vse vagone.

    Vnesi stevilo zrn na prvem vagonu: 555
    Napolnimo lahko 21 vagonov.

    Vnesi stevilo zrn na prvem vagonu: 123
    Napolnimo lahko 24 vagonov.

    Neuradna rešitev: zito.c

  3. Pleme ljudožercev je bilo na zadnjem pohodu precej uspešno: zajeli so n prijetno tolstih pripadnikov sovražnega plemena. Še dobro; zaloge hrane so jim namreč ravnokar pošle. Zdaj jih zanima, koliko časa bo trajala nova zaloga.

    Da se nasitijo, vsak dan skuhajo 7 ljudi. Ker pa so vraževerni, v primeru, da jim po tistem ostane 13 * k ljudi (za neko pozitivno celo število k), v kotel hitro vtaknejo še enega.

    Sestavi program, ki prebere število n in izračuna, za koliko dni zadoščajo zaloge. Če jim na koncu ostane 6 ali manj ujetnikov, to ne zadošča za še en obrok. Primera:

    Vnesi stevilo zajetih ljudi: 123
    Zaloga ziveza bo trajala 17 dni.

    Vnesi stevilo zajetih ljudi: 61234
    Zaloga ziveza bo trajala 8635 dni.

    Neuradna rešitev: ljudozerci.c

Tretji kratek test

  1. Tepenčani so v Butale poslali tajnega agenta. Agent Tepenčanom pošilja informacije o Butalcih in ker noče, da bi Butalci to izvedeli, si omisli nezlomljivo šifro. Izbere si neko naravno število n (lahko tudi 0) in sporočilo zakodira na naslednji način:

    kjer je koda znaka njegovo mesto v angleški abecedi, začenši z 0.

    Sestavi program, ki bo prebral sporočilo in začetni zamik ter izpisal zakodirano sporočilo. Predpostaviš lahko, da je sporočilo sestavljeno iz samih velikih črk angleške abecede brez presledkov. Primer:

    Vnesi sporocilo: VBUTALAHSIJESONCE
    Vnesi zamik: 3
    Zakodirano sporocilo: YWVNTLLHZARNWGBPG

    Neuradna rešitev: sifra.c

  2. Kralj Leonidas je na vojnem pohodu. Domov bi rad poslal sporočilo, a noče, da bi njegovi nasprotniki izvedeli vsebino, če bi ujeli sla. Zato si omisli preprosto šifro. Sporočilo, ki je niz dolžine n, razcepi na nize dolžine m in jih zapiše po vrsti enega pod drugega, nato pa prebere po stolpcih od zgoraj navzdol in od leve proti desni.

    Zgled: Če hočemo zakodirati sporočilo abcdefghij in je m = 4, najprej (navidezno) zapišemo

    abcd
    efgh
    ij

    Potem pošljemo aeibfjcgdh.

    Sestavi program ki bo prebral sporočilo in vrednost m, ter izpisal zakodirano sporočilo. Primer:

    Vnesi sporocilo: Nasprotnik je obkoljen.
    Vnesi m: 4
    Zakodirano sporocilo: Nriekeaok onst ol.pnjbj

    Neuradna rešitev: leonidas.c

  3. Sestavi program, ki bo preveril, ali je v danem nizu zapisan naslov elektronske pošte. Pravila za preverjanje so zelo poenostavljena. Pravilen naslov je sestavljen iz malih črk angleške abecede, med njimi pa mora biti natanko ena afna. V delu naslova za afno mora biti še vsaj ena pika.

    Primeri pravilnih naslovov:

    janez@gorenjska.si
    marija@fmf.unilj.si

    Primeri napačnih naslovov:

    Joze-23@fmf.si (vsebuje nedovoljene znake)
    @severni.pol (afna na začetku)
    mojca@ (afna na koncu)
    rok@maribor@slo (več kot ena afna)
    rok.novak@lj.si (pika pred afno)
    eva@celje (za afno ni pike)

    Dva zgleda:

    Vnesi niz: janez@gorenjska.si
    Niz bi lahko bil elektronski naslov.

    Vnesi niz: Joze-23@fmf.si
    Niz ne more biti elektronski naslov.

    Neuradna rešitev: email.c

Četrti kratek test

  1. Sestavi funkcijo koncnica, ki za parametra dobi dve besedi s skupnim korenom (npr. "pomoc" in "pomozen"). Na podlagi teh dveh besed naj ugotovi, kako dolg je skupni koren (v zgornjem primeru 4 znake: "pomo"), vrne pa nov niz, ki predstavlja končnico prve besede, tj. vse znake, ki se pojavijo za skupnim korenom. Končnica naj se začne z vezajem (v zgornjem primeru naj funkcija vrne "-c").

    Ne pozabi na funkcijo main, s katero boš preveril delovanje svoje funkcije.

    Nekaj zgledov:

    Vnesi 1. niz: debeluh
    Vnesi 2. niz: debelina
    Koncnica 1. besede: -uh

    Vnesi 1. niz: pek
    Vnesi 2. niz: pekarna
    Koncnica 1. besede: -

    Vnesi 1. niz: koleraba
    Vnesi 2. niz: kolac
    Koncnica 1. besede: -eraba

    Neuradna rešitev: koncnica.c

  2. Sestavi funkcijo stik, ki za parametra dobi dva niza, ter sestavi in vrne nov niz, ki ga dobimo kot stik prvega in obrnjenega drugega niza. Vhodna niza sta lahko različnih dolžin.

    Ne pozabi na funkcijo main, s katero boš preveril delovanje svoje funkcije.

    Nekaj zgledov:

    Vnesi 1. niz: abcd
    Vnesi 2. niz: efgh
    Rezultat: abcdhgfe

    Vnesi 1. niz: abcd
    Vnesi 2. niz: efghijk
    Rezultat: abcdkjihgfe

    Vnesi 1. niz: abcdefg
    Vnesi 2. niz: hijk
    Rezultat: abcdefgkjih

    Neuradna rešitev: stik.c

  3. Sestavi funkcijo preplet, ki za parametra dobi dva niza enake dolžine, ter sestavi in vrne nov niz, ki ga dobimo tako, da jemljemo po en znak izmenično iz prvega in drugega niza.

    Ne pozabi na funkcijo main, s katero boš preveril delovanje svoje funkcije.

    Zgled:

    Vnesi 1. niz: abcd
    Vnesi 2. niz: efgh
    Rezultat: afch

    Neuradna rešitev: preplet.c


Last modification: January 19, 2009.