html>
1. Kirjoita kirjastofunktioita käyttämättä funktio, joka lajittelee kokonaislukutaulukon alkiot suuruusjärjestykseen.
2. Kirjoita funktio, joka laskee kirjaimien 'a', ... 'z' prosenttiosuudet syötteestä. Tässä voit käyttää apuna sopivia kirjastofunktioita. Mitä ongelmia aiheuttavat kirjaimet ä, å ja ö? Miten voisit laskea myös näiden kirjaimien prosenttiosuudet?
3. Kirjoita reursiivinen funktio, joka laskee kahden luvun suurimman
yhteisen tekijän (syt).
Voit käyttää hyväksi tietoa
syt(a,b) = syt (b, a%b), kun a > 0 ja b > 0 (% tarkoittaa jakojäännöstä.)
Ps. Rekursiosta on syytä tulla ulos heti kun a%b on nolla ja palauttaa
b:n arvo eli esim. syt(4,2) = syt(2,4%2), kun a%b eli 4%2 == 0,
=> syt = 2 (=b). Jos a tai b on 0, niin syt = 0 eli syt(0,b) => syt = 0 ja syt(a,0) => syt = 0.
4. Kirjoita funktio, joka tutkii, onko annettu merkkijono palindromi. Palindromi on merkkijono, joka on sama luettuna etuperin ja takaperin. Huom! välilyöntejä ei huomioida ollenkaan palindromissa. Tunnettu palindromi on 'saippuakauppias', mutta myös 'innostunut sonni' ja 'sinä ja jänis' ovat palindromeja.
5. Kirjoita ohjelma, joka laskee syötteestä eripituisten sanojen frekvenssit tyyliin 'pituus 1: 30 kpl'. Sana päättyy välilyöntiin tai rivinvaihtomerkkiin. Voit olettaa, että sanat ovat korkeintaan 80 merkin mittaisia.
6. Kirjoita ohjelma, jolla voit käsitellä tavallista 52 kortin korttipakkaa. Kirjoita ainakin seuraavat funktiot:
sekoita (int pakka[], int kortteja) /*sekoittaa korttipakan*/ jaa (int pakka[], int kasi[],int kortteja, int n) /*jakaa pelaajalle n korttia eli siirtää n */ /*seuraavaa korttia korttipakasta taulukkoon kasi*/ Käytä satunnaislukujen generointiin standardikirjaston funktioita: void srand (unsigned int_seed) asettaa seed:n rand-satunnaislukujen uudeksi siemenluvuksi int rand (void) palauttaa satunnaisluvun väliltä 0-RAND_MAX. RAND_MAX on vähintään 32767. Esimerkiksi: srand(time(NULL)); /*time (NULL) gives the new seed for rand() */ rand()%(n+1); /* gives a random number between 0 .. n */ rand()%n+1; /* gives a random number between 1 .. n */Vihje: Korttipakassa on neljä maata, joissa jokaisessa on 13 korttia. Voit kuvata kortin kokonaisluvuksi sopimalla, että arvot 0-12 ovat pataa, 13-25 herttaa, 26-38 ruutua ja 39-51 ristiä. Tämän jälkeen saat kortin maan ja arvon seuraavasti: olkoon kortin int-arvo n. Tällöin maa = n/13, arvo = n%13.