C-ohjelmointi syksy 2008
Harjoitus 4
25-29.9.2008
double* myAlloc(int n); /*Allocate a block of memory large enough to store n double values. * Return a pointer to the newly allocated block; and a null pointer * if the block cannot be allocated or if n <=0. */ int get(double * block, int size); /* Assume that block points to a block of memory large enough to store * size double values. Read double values from the standard input and * store incoming values in the block of memory passed as the first * parameter. Stop reading when either size values have been read, a * value that rounds to 1 (one) has been encounted, or an invalid * double value has been encounted. * Return the number of values read. */ void show(double *block, int size); /* Assume that block points to a block of memory storing size double * values. Print these values to the standard output, each value on a * separate line. */ double max(double *block, int size); /* Assume that block points to a block of memory storing size double * values. Return the maximum value. */
Tehtävät 3-6. Tee menupohjainen ohjelma (kirjan tehtävä 8-6), joka tunnistaa seuraavat syötteenä annetut komennot:
i n n on kokonaislukuarvoa r name name on tiedostonimi w s r r on kaksoistarkkuuden luku (double) d h q Ohjelma toimii saadun syötteen perusteella seuraavasti: i Varaa muistilohkon n:ää kaksoistarkkuuden lukua varten. Jos on jo valmiiksi varattu muistilohko, niin se vapautetaan. r Lukee kaksoistarkkuuden lukuja annetusta tiedostosta muistilohkoon. Lukeminen epäonnistuu, jos muistia ei ole varattuna. Lukeminen lopetetaan, kun joko varattu muistilohko on täynnä tai lukuja ei voida enää lukea tiedostosta, koska luvut loppuvat tiedostosta (EOF) tai lukemisessa tapahtuu virhe. w Tulostaa muistilohkoon talletetut luvut. s Etsii muistilohkosta annettua lukua ja ilmoittaa, löytyykö se vai ei. Etsiminen epäonnistuu, jos muistilohkoa ei ole varattu. d Tällä säädellään virheenjäljityssanomien tulostusta. Ensimmäisellä kerralla asetetaan virheenjäljitys päälle ja tulostetaan virheenjäljitysinformaatiota, toisella kerralla poistetaan virheenjäljitys ja siihen liittyvä lisäinformaatio. Sen jälkeen aina joka toinen komento asettaa virheenjäljityksen päälle ja joka toinen poistaa sen päältä. On käytössä vain, jos ohjelma on käännetty virheenjäljitysmoodissa (debugging mode). h Näyttää kaikki käytettävissä olevat komennot. q Sulkee kaikki avatut tiedostot, vapauttaa varatun muistitilan ja lopettaa ohjelman suorituksen.
.