58127-1 C-ohjelmointi - syksy 1997 Harjoitustehtävät 5, 24.11. - 30.11. Läsnäolo: 3 tehtävää 1. Kirjoita funktio, joka laskee kahden 10*10 -matriisin summan. Matriisit lasketaan yhteen summaamalla vastinalkiot keskenään. Palauta tulos muuttujaparametrissa. Kirjoita myös pääohjelma. 10*10 -matriisi on kaksiulotteinen 10*10 -taulukko 2. Kirjoita ohjelma, joka muuttaa merkkijono-osoitin -taulukkoa käyttämällä syötteen numerot tekstimuotoon: 0 = nolla, 1 = yksi,...,9 = yhdeksän. Muut merkit tulostuvat sellaisenaan. Älä käytä switch- tai else-if -rakennetta. 3. Kirjoita ohjelma, joka poistaa parametreina saamansa sanat syötteen riveistä. Kirjoita ohjelmaa varten funktio char *poista(char *rivi, char *sana); joka poistaa yhden annetun sanan rivistä. Varaudu siihen, että komentorivillä saatetaan antaa useita poistettavia sanoja. 4. Suunnittele sopivat rakenteet imaginaariluvuille. Kirjoita näitä rakenteita käyttävät funktiot imaginaarilukujen yhteen- ja kertolaskulle sekä imaginaariluvun tulostukselle. Imaginaariluku muodostuu reaaliosasta ja imaginaariosasta: x = a+bi. Yhteenlaskussa lasketaan lukuja yhteen termeittäin, kertolaskussa i*i = -1. Voit olettaa, että kertoimet a ja b ovat kokonaislukuja. 5. Kirjoita yleinen komentotulkin runko käyttäen funktio-osoitinta. Komentotulkkiin tulee pystyä lisäämään helposti uusia käskyjä. Käskyjä ei tarvitse toteuttaa, vaan riittää, että komentotulkista kutsutaan oikeaa funktiota. Jokainen funktio saa parametrina merkkijonon, jossa ovat kaikki sen saamat varsinaiset parametrit yhdessä. Funktio palauttaa nollasta eroavan arvon, jos komennon suoritus onnistui. Siis yhden funktion prototyyppi on muotoa int komento(char *parametrit); Kirjoita myös pääohjelma, jolla testaat komentotulkin toimintaa. Jokainen komento tulostaa testiohjelmassa vain nimensä ja saamansa parametrit. Vihje: Muodosta rakenne, jossa ovat kentät komennon nimelle ja vastaavalle funktio-osoittimelle. Rakenna sen jälkeen taulukko, jossa jokaiselle komentoa vastaavalle rakenteelle tulee oma alkio. 6. Kirjoita ohjelma, joka tulostaa syötteen pisimmän rivin. Et voi olettaa riville maksimipituutta. ______________________________________________________________________