C-ohjelmointi syksy 2007


Harjoitus 4

27-28.9.2007

  1. Kirjoita alter(x,y), joka muuttaa x:n arvon x-y:ksi ja y:n arvon 2:ksi (x ja y ovat tyyppiä double).
  2. Käytä osoittimia seuraavan ongelman ratkaisussa (kirjoita kokonainen ohjelma):
    1. Luo muistilohko 30 kaksoistarkkuuden luvun tallettamiseen.
    2. Lue kaksoistarkkuuden lukuja stardardi syöttövirrasta. Lopeta lukeminen kun mikä tahansa seuraavista ehdoista täyttyy
      1. 30 lukua on luettu
      2. EOF on löytynyt
      3. negatiivinen luku on luettu
    3. Etsi lohkoon talletuista arvoista maksimiarvo.

    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.
    
  3. Laadi funktio, joka toteuttaa komennon i vaatimat toimenpiteet eli varaa muistilohkon komennossa ilmoitetulle määrälle kaksoistarkkuuden lukuja. Käytä parametreja järkevästi.

  4. Laadi kaksi funktiota, joista toinen toteuttaa komennon r toimenpiteet eli lukee lukuja annetusta tiedostosta muistilohkoon ja toinen toteuttaa komennon w toimenpiteet eli tulostaa muistilohkoon talletetut luvut näytölle.

  5. Laadi funktio, joka toteuttaa komennon s toimenpiteet eli tutkii löytyykö annettu luku muistilohkosta.

  6. Laadi pääohjelma, joka lukee ja tarkistaa syötteen ja saatuaan kelvollisen komennon suorittaa sen edellyttämät toimenpiteet. Komennon voi antaa sekä pienenä että isona kirjaimena. Pääohjelmassa itsessään on toteutettu toiminnot h ja q eli komentojen näyttö ja ohjelman lopetus. Komennon d saadessaan ohjelma voi tarvittaessa ilmoittaa, että sitä ei ole vielä toteutettu. Virheellisen syötteen saadessaan ohjelma tulostaa ohjeen komentojen käytöstä.

.