C-programmeerimise eksamiülesanded Bitimuster * Trüki ekraanile kasutaja antud arvu bitid. * Kasutaja tipitud nullide ja ühtede jada salvesta täisarvuna tekstifaili. Hiljem loe see arv failist ning väljasta taas ekraanile. * Ühes tekstifailis on tühikutest ja ristidest koosnev muster (32 rida, 64 tähte reas). Talleta see muster arvudena biti kaupa teise faili. Hiljem loe arvud failist ning taasta muster. Viidaring * Loo andmetüüp, mis koosneks täisarvust ning viidast samatüübilisele rakule. Loo kaks eksemplari ning pane nad üksteisele viitama. Testi tulemust. * Loo alamprogramm, mis kontrolliks, kas etteantud viidaahel moodustab silmuse ning viimasel juhul teata, mitmest elemendist ringahel koosneb. * Loo alamprogramm ringikujulisse viidaahelasse elemendi lisamiseks ning teine sellisest ahelast elemendi eemaldamiseks. Nende kahe abil ühenda kaks ringikujulist viidaahelat. Andmepuu * Loo andmetüüp, mis koosneks kuni 30 tähe pikkusest tekstist ning viidast samatüübilisele rakule. Loo sellisest tüübist eksemplar, väärtusta ning trüki tulemus. * Koosta selle abil lõik ülikooli struktuurist, kusjuures iga raku tekst on vastava üksuse nimi ning viit näitab tase kõrgemal olevale üksusele. Samaaegselt hoia viitu kõigile rakkudele massiivis ning trüki iga raku kohta välja, mis ta nimi ning millistesse kõrgematesse üksustesse ta kuulub. * Lisaks eelmisele lisa võimalused andmete ja seoste lisamiseks ja muutmiseks klaviatuuri abil. Kahendpuu * Loo andmetüüp, mis koosneks täisarvust ning viidast kahele samatüübilisele rakule. Loo kolm eksemplari, nii et kaks järgmist oleksid esimese küljes. Trüki tulemused esimese kaudu. * Loo alamprogramm, millele antakse ette viit vastava tüüpi rakule. Kui viida väärtus pole NULL, siis trüki väärtus ning käivita sama alamprogramm mõlema alaneva viida puhul. * Hoolitse trükkimisel, et treppimise abil oleks näha, milline väärtus millise alla kuulub. Väljasta puus leiduvate väärtuste summa. Morse * Koosta pliiatsi ja paberi abil morsemärkidest kahendpuu. * Koosta sarnane puu arvutisse omaloodud andmetüübi ja viitade abil. Väljasta oma puu abil jada ... --- ... tulemus. * Loe oma andmepuust taas välja massiivi igale tähele vastava jada tarvis. Koosta arhiveerimisprogramm tekstifaili morsestamiseks ning taastekstistamiseks. a .- b -... c -.-. d -.. e . f ..-. g --. h .... i .. j .--- k -.- l .-.. m -- n -. o --- p .--. q --.- r .-. s ... z --.. t - u ..- v ...- w .-- ä .-.- öõ ---. ü ..-- x -..- y -.-- 1 .---- 2 ..--- 3 ...-- 4 ....- 5 ..... 6 -.... 7 --... 8 ---.. 9 ----. 0 ----- . .-.-.- , --..-- ? ..--.. Püüdmismäng * Mängualaks on 10*10 massiiv, kus mängijat tähistab + ning kolli X. Trüki seis ekraanile. * Mängija saab tähtedega anda käsklusi liikumaks vasakule/paremale/üles/alla. Koll astub iga korraga ühe sammu mängija poole. Iga sammu järgi trükitakse tulemus ekraanile. * Lisaks eelmisele paigutatakse mängija ja koll algselt juhuslikult. Ekraanil on kaks posti (tähisega O), mille peale ei saa minna. Loetakse kokku, mitmendal käigul koll tabas mängija. Labürint * Mängualaks on 10*10 massiiv, kus mängijat tähistab +, poste O ning aaret a. Trüki seis ekraanile. * Mängulaua andmed loetakse sisse failist. Mängija saab tähtedega anda käsklusi liikumaks vasakule/paremale/üles/alla. Posti peale ei saa liikuda. Iga sammu järgi trükitakse tulemus ekraanile. Mäng lõpeb jõudmisega aardeni. * Lisaks eelmisele loetakse aardeni jõudmisel uus tase selle olemasolul sisse failist. Lugemisel kontrollitakse, et vastava taseme puhul üldse mängijal on võimalik aardeni liikuda. FAT * Tekstifaili igal real on kaks tühikuga eraldatud arvu. Väljasta esimesel real teisel kohal olev arv. * Esimesel kohal olev arv tähistab ploki numbrit ning teisel kohal olev arv ploki numbrit, millisest plokist peaks vastava ploki läbimisel jätkama. Kui teiseks arvuks on 0, siis tähendab see tühja viita. Väljasta plokkide loetelu alates esimesest kuni jõutakse tühja viidani. * Lisaks eelmisele peab programm vigadeta hakkama saama ka siis, kui algandmed pole korrektsed, st. osutatakse olematule elemendile või satuvad viidad tsüklisse. Nimeserver * Igal tekstifaili real on kirjas masina IP aadress ning nimi. Kasutajalt küsitakse nimi ning väljastatakse aadress. * Lisaks eelmisele kontrollitakse, et poleks ei kattuvaid aadresse ega nimesid. * Lisaks eelmisele hoitakse eraldi failis meeles, mitu korda iga masinat on nime või aadressi järgi küsitud. Statistika * Tekstifailis on kirjas inimeste pikkused. Leia suurim pikkus. * Lisaks eelmisele leia mediaan (väärtus, millest on pooled suuremad ning pooled väiksemad). * Lisaks eelmisele leia 25% ja 75% kvantiilid ning joonista vastav diagramm (karp ja vurrud). Bitinihutus * Küsi kasutajalt arv (<256) ning väljasta see kujul, kus vasakpoolseim bitt on tõstetud paremale ning ülejäänud ühe võrra vasakule. * Lisaks eelmisele küsi kasutajalt, mitme biti võrra tahetakse arvu bitte keerata. * Võrreldes eelmisega keera kasutaja etteantud arvu võrra terve faili iga baidi bitte. Kooditabel * Väljastatakse kasutajalt küsitud tähest ühe tähe võrra suurema koodiga täht. * Massiivides on kirjas, millised tähed millistega asendatakse. Kasutajalt küsitud lause väljastatakse, olles eelnevalt teinud määratud asendused. * Lisaks eelmisele on asenduste tabel võimalik sisse lugeda failist ning teisendada saab mõlemas soovitud suunas. Kontrollitakse, et ka tagasiteisendamine oleks kadudeta võimalik, st., et iga uut koodi on võimalik saada vaid ühest algsest koodist. Pinu * Kasutajalt küsitakse kaks arvu ning väljastatakse need vastupidises järjekorras. * Iga kord, kui kasutaja kirjutab positiivse arvu, lisatakse see pinu lõppu (peale). Kui kasutaja kirjutab nulli, siis väljastatakse pinu pealmine element ning eemaldatakse see pinust. * Realiseeri sarnane pinu nii massiivi kui viitadega ühendatud elementide abil. Järjekord * Küsi kasutajalt kaks arvu ning väljasta neist esimene. * Iga käsuga saab kasutaja määrata, kas ta soovib arvu lisada või küsida. Sisestatud arv lisatakse lõppu, eemaldamise puhul väljastatakse arv ja eemaldatakse algusest. Sisestatud arvude hulk võib olla piiratud massiivi maksimaalse pikkusega. * Realiseeri järjekord nii massiivi kui viitadega ühendatud elementide abil. Massiivi puhul võib samaaegne järjekorras olevate elementide arv olla piiratud massiivi pikkusega, pideval lisamisel ja eemaldamisel aga piiranguid ei seata.