C-kieli, syksy 2004                                     Harjoitus 1
                                                        vko 43

Tehtävissä voit halutessasi käyttää kurssin alkuvaiheeseen tarkoitettuja
syöttö ja tulostusmakroja (esitetty ohessa, käyttöesimerkki luentorungon
sivulla 11, saatavana kurssin www-sivulta).

Tee ohjelmat. Syötä ne tietokoneelle, käännä ne ja tarkasta niiden
toiminta. Demotilaisuudessa ohjelmat esitetään dataprojektorilla, joten 
tallenna ne keskuskoneelle (cs tai cc). Demoissa otetaan pääteyhteys
keskuskoneeseen.

1. Selvitä, miten vaikuttavat gcc -kääntäjän optiot
   -W
   -O
   -llibrary
   -S
   -DXXX

2. Kirjoita ohjelma, joka kysyy käyttäjältä kolme kokonaislukua, ja
   tulostaa ne suuruusjärjestyksessä pienimmästä suurimpaan

3. Muuta edellistä ohjelmaa siten, että se kysyy kolmen luvun ryhmiä (ja
   tulostaa ryhmän sisällön suuruusjärjestyksessä) toistuvasti kunnes
   käyttäjä antaa kolme samaa lukua yhdeksi ryhmäksi.

4. Kirjoita ohjelma, joka kysyy käyttäjältä 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 käytettävissä olevaa kokonaislukua. Vihje: ota käyttöön
   limits.h, jossa on vakio INT_MAX.

6. Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvun n ja tulostaa
   näytölle n*n kokoisen neliön tähtiä.

---------------------------------------------------------------------
/* 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)
