/* tonitiet.c */ /* Malli tietueesta tietueessa /vl-94 */ #include #include #define TUOMAREITA 5 #define KIERROKSIA 2 #define K_PISTE 60.0 typedef struct { double pituus; /* hyppyjen pituudet metrein„ */ double tuomarit[TUOMAREITA]; /* tuomaripisteet */ double pisteet; /* Yhteistulos */ } Kierros_tyyppi; typedef struct { Kierros_tyyppi kierros[KIERROKSIA]; double lopputulos; } Tulos_tyyppi; typedef struct { char nimi[8]; int nro; Tulos_tyyppi tulos; } Kilpailija_tyyppi; /****************************************************************************/ double paras(const double luvut[],int lkm) { double ehdokas=luvut[0]; int i; for (i=1; i ehdokas ) ehdokas = luvut[i]; return ehdokas; } /****************************************************************************/ double huonoin(const double luvut[],int lkm) { double ehdokas=luvut[0]; int i; for (i=1; ituomarit,TUOMAREITA); kierros->pisteet = 0; if ( summa == 0 ) return 1; /* Pisteit„ ei voi laskea! */ kierros->pisteet = kierros->pituus - K_PISTE + summa; return 0; } /****************************************************************************/ int main(void) { Kilpailija_tyyppi toni,matti; /* Kirjoita miten C-kielell„ suoritetaan sijoitukset: toni: nimi <- "Toni N" nro <- 3 1. kierroksen pituus <- 107 2. kierroksen tuomareiden pisteet <- 19,18,19.5,18,20 matti: nimi <- "Matti N" nro <- 7 2. kierroksen pituus <- 109 1. kierroksen pisteet <- 125 Lopputulos <- 251 */ strcpy(toni.nimi,"Toni N"); toni.nro = 3; toni.tulos.kierros[0].pituus = 107; toni.tulos.kierros[1].tuomarit[0] = 19.0; toni.tulos.kierros[1].tuomarit[1] = 18.0; toni.tulos.kierros[1].tuomarit[2] = 19.5; toni.tulos.kierros[1].tuomarit[3] = 18.0; toni.tulos.kierros[1].tuomarit[4] = 20.0; strcpy(matti.nimi,"Matti N"); matti.nro = 7; matti.tulos.kierros[1].pituus = 109; matti.tulos.kierros[0].pisteet = 125; matti.tulos.lopputulos = 251; toni.tulos.kierros[1].pituus = 109; laske_pisteet(&toni.tulos.kierros[1]); printf("%s: 2. kierroksen pisteet: %4.1lf\n",toni.nimi, toni.tulos.kierros[1].pisteet); return 0; }