JOENSUUN YLIOPISTO
Tietojenkäsittelytieteen laitos

Ohjelmoinnin alkeet 173104

Harjoitus 5


  1. Saat harjoituksissa vetäjältä oheisen ohjelman sähköisessä muodossa ja ohjeet, kuinka sitä käsitellään.

    program palindrome(input,output);
    const MaxLen = 8;
    var len, i: integer;
        pali: Boolean;
        candidate: array [1..MaxLen] of char;
    begin
        repeat
            write('Anna pituus: ');
            readln(len);
            if (len < 1) or (len > MaxLen)
                then writeln('Täytyy olla välillä 1..', MaxLen)
        until (len >= 1) and (len <= MaxLen);
        for i := 1 to len do begin
            write('Anna ', i, '. kirjain: ');
            readln(candidate[i])
        end;
        pali := true;
        for i := 1 to len do
            pali := pali and (candidate[i] = candidate[len-i+1]);
        if pali
            then write('Jono on')
            else write('Jono ei ole');
        writeln(' palindromi.')
    end.
    
  2. Kirjoita määrittelyt seuraaville Pascal-taulukoille käyttäen hyväksesi joka kohdassa sopivia vakio-, tyyppi- ja muuttujamäärittelyjä
  3. Taulukko Rivi, johon mahtuu 80 merkkiä.
  4. Taulukko PvKulut, johon voidaan tallettaa rahan kulutus kunakin kuukauden päivänä (euroina).
  5. Taulukko AlkuKuu, johon voidaan tallettaa päivien 1-15 kulut (euroina).
  6. Taulukko KKulut, johon voidaan tallettaa kuukausikulut koko vuodelle (euroina).
  7. Taulukko OnVarattu, jossa tieto merkeistä 'A'..'Z', onko merkki jo "varattu" johonkin käyttöön vai ei.
  8. Tee Pascal-ohjelma, joka lukee silmukassa rivin merkkejä näppäimistöltä yksi kerrallaan ja sijoittaa ne merkkitaulukkoon Rivi. Taulukon Rivi määrittelyt voit lainata tehtävästä 2. Taulukkoon sijoittaminen loppuu, kun löytyy # (lopetusmerkki) tai viimeistään silloin, kun taulukkoon Rivi ei enää mahdu merkkejä.

    Lukemisen loputtua tulostetaan syötetty rivi käänteisessä järjestyksessä, esim.:

    Anna rivi (lopuksi #): Kukkuu kukkuu #
    Rivi takaperin: uukkuk uukkuK
    

  9. Muunna edellä kirjoittamaasi ohjelmaa siten, että taulukkoon Rivi mahtuu useita rivejä (256 merkkiä) ja syötteen loppumerkki voi olla mikä tahansa käyttäjältä kysyttävä merkki. Siten syöte voi käsittää useitakin rivinvaihtoja ennen loppumerkkiä. Lisäksi taulukkoon Rivi luetut merkit tulostetaan näytölle korkeintaan 60 merkin pituisina tulostusriveinä. Rivi voidaan tällä kertaa "taittaa" sanaväleistä piittaamatta.