C-kursi k2005 Marttinen & Niklander Kokeen 08.06.2005 arvostelusta 1.tehtävä (Liisa Marttinen) Funktion voi toteuttaa * joko tallettamalla vokaalimerkit taulukkoon ja vertaamalla parametrina saadun merkkijonon jokaista merkkiä näihin talletettuihin vokaalimerkkeihin char vokaalit[] = "aAeEiIoOuUyYåÅäÄöÖ"; * tai vertaamalla merkkijonon kutakin merkkiä kaikkiin vokaalimerkkeihintyyliin if((c= ='a' || (c= ='A') || (c= ='e') || ... || (c= = 'Ö')) tätä voi lyhentää muuttamalla ensin kaikki merkit isoiksi tai pieniksi kirjaimiksi (toupper tai tolower + ctype.h ) vokaalilaskuria kasvatetaan aina, kun saadusta merkkijonosta löytyy vokaali. Kun merkkijonon kaikki merkit on tutkittu (joko tiedetään jonon pituus (strlen + string.h) tai havaitaan merkkijonon lopetusmerkki (*p = = '\0') ), niin palautetaan löydettyjen vokaalien määrä. Pääohjelma lukee käyttäjän antaman merkkijonon (scanf:lla tai getchar:lla) sille varaamaansa taúlukkoon ja antaa taulukon osoitteen parametrina aliohjelmalle. Pääohjelma tulostaa taulukkoon talletetun merkkijonon ja funktion palauttaman tiedon sen vokaalien lukumäärästä. Kun funktio ja sen pääohjelma sijaitsevat eri tiedostoissa, niin kumpaankin on liitettävä sen tarvitsemien kirjastofunktioiden otsakkeet (#include ) ja molempien alkuun on liitettävä vokaali.h. (#include "vokaali.h"), joka sisältää ainakin funktion prototyypin. Arvostelusta: * luettavalle merkkijonolle ei varata mitään tilaa -2 p * virhe toimintalogiikassa -2p * vokaaleissa virheitä (esim. isot kirjaimet tai ääkköset puuttuvat) -1 p * vokaalit-taulukon alkuasetus väärin -1 p * käytetty kirjastofunktioita, mutta ei liitetty sen otsaketta -1p * #include "vokaali.h" puuttuu -1 p * merkkijonon lopetustestauksessa while (p != NULL) -1p (seuraa segmentation fault) * char [] jono tai char taulu kun tarkoitetaan taulukkoa tai osoitinta taulukkoon -1p * pikkuvirheitä ( upper(), brek, , puolipiste ';'puuttuu tai on liikaa