C-kieli, syksy 2004                                     Harjoitus 1
                                                        vko 43

Tehtviss voit halutessasi kytt kurssin alkuvaiheeseen tarkoitettuja
sytt ja tulostusmakroja (esitetty ohessa, kyttesimerkki luentorungon
sivulla 11, saatavana kurssin www-sivulta).

Tee ohjelmat. Syt ne tietokoneelle, knn ne ja tarkasta niiden
toiminta. Demotilaisuudessa ohjelmat esitetn dataprojektorilla, joten 
tallenna ne keskuskoneelle (cs tai cc). Demoissa otetaan pteyhteys
keskuskoneeseen.

1. Selvit, miten vaikuttavat gcc -kntjn optiot
   -W
   -O
   -llibrary
   -S
   -DXXX

2. Kirjoita ohjelma, joka kysyy kyttjlt kolme kokonaislukua, ja
   tulostaa ne suuruusjrjestyksess pienimmst suurimpaan

3. Muuta edellist ohjelmaa siten, ett se kysyy kolmen luvun ryhmi (ja
   tulostaa ryhmn sislln suuruusjrjestyksess) toistuvasti kunnes
   kyttj antaa kolme samaa lukua yhdeksi ryhmksi.

4. Kirjoita ohjelma, joka kysyy kyttjlt kokonaisluvun n, ja laskee
   sek tulostaa kyseisen luvun kertoman (1*2*3*...*n).

5. Muuta edellist ohjelmaa siten, ett ohjelma varmistaa, ettei kertoma
   ylit suurinta kytettviss olevaa kokonaislukua. Vihje: ota kyttn
   limits.h, jossa on vakio INT_MAX.

6. Kirjoita ohjelma, joka lukee kyttjlt kokonaisluvun n ja tulostaa
   nytlle n*n kokoisen nelin thti.

---------------------------------------------------------------------
/* ckieli.h */

/* C-makroja C-kieli -kurssin alkua varten */
/* Simo Juvaste 25.3.1998 */

/* peruskirjastot */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* lukee kokonaisluvun */
#define lue(luku) scanf("%d", &luku)

/* tulostaa kokonaisluvun */
#define tulosta(luku) printf("%d\n", luku)

/* lukee reaaliluvun */
#define lue_reaali(luku) scanf("%f", &luku)

/* tulostaa reaaliluvun */
#define tulosta_reaali(luku) printf("%f\n", luku)

/* tulostaa merkkijonon */
#define tulosta_merkki(mjono) printf("%s\n", mjono)
