2009/2010
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
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
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
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
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
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
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
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
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
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
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
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.