/*Tee ohjelma, jossa lasketaan kymmenen Suomen kaupungin lämpötilojen keskiarvo. Lisäksi ohjelmassa lasketaan koko maan ?karkea? keskiarvo annettujen lämpötilalukemien perusteella. Käyttäjä syöttää päätteeltä Suomen eri kaupunkien lämpötilalukemia. Kussakin kaupungissa on useita mittauspisteitä ja näin ollen joka kaupungista saadaan useita mittauslukemia (esim. Lahdessa Launeen lämpötila ja keskustan lämpötila). Käyttäjä antaa päätteeltä kaupungin tunnuksen, joka on joku luvuista 1 ? 10. Virheellisestä kaupunkitunnuksesta annetaan virheilmoitus. Kaupunkitunnusten merkitykset ovat seuraavat: 1 ? Helsinki 2 ? Kuopio 3 ? Lahti 4 ? Lappeenranta 5 ? Maarianhamina 6 ? Mikkeli 7 ? Oulu 8 ? Rovaniemi 9 ? Savonlinna 10 ? Turku Kaupungin tunnuksen jälkeen käyttäjä antaa päätteeltä ao. kaupungin mittauslukeman (= yhden kaupungissa olevan mittauspisteen lukema). Päätteeltä annettavat syöttötiedot tulkitaan loppuneiksi, kun ohjelman käyttäjä antaa kaupungin tunnukseksi 99. Päätteeltä annettavien lähtötietojen joukko voisi olla esimerkiksi: Kaupunki Lämpötila 3 -3.2 1 -3.0 2 10 7 -15 : 3 -3.9 99 99 Ratkaisussa käytetään apuna kahta 1-ulotteista taulukkoa LÄMMÖT[10] ja KAUPLKM[10]. Kymmenalkioiseen LÄMMÖT-taulukkoon lasketaan kunkin kaupungin lämpötilojen summaa ja KAUPLKM-taulukkoon kunkin kaupungin mittauspisteiden lukumäärä (mittauspisteiden lukumäärä voi vaihdella kaupungeittain ohjelman käyttökerrasta toiseen). Toisin sanoen indeksissä 0 molemmissa taulukoissa on Helsingin tietoja, indeksissä 1 Kuopion laskurit, jne. Ohjelman pääosat ovat seuraavat: · alkuarvojen asetukset · luetaan tietoja niin kauan kun niitä riittää ja kasvatetaan vastaavan kaupungin KAUPLKM- ja LÄMMÖT-taulukon alkioita · lasketaan kaupunkien lämpötilojen keskiarvot · lasketaan maan keskiarvo · tulostetaan lasketut tulokset. Mieti myös mitä tapahtuu, jos KAUPLKM-taulukon johonkin alkioon jää arvo 0 (eli jonkin kaupungin mittauspisteitä ei käydä lukemassa). */ #include #define LAMMOT_ARVO 10 #define KAUPLKM_ARVO 10 void KysyTunnus(void); void TulostaKeskiarvot(void); float LAMMOT[LAMMOT_ARVO]; float KAUPLKM[KAUPLKM_ARVO]; int main() { KysyTunnus(); TulostaKeskiarvot(); return 0; } void KysyTunnus(void) { int i,j; int luku; int tunnus=0; do { printf("Anna kaupungin tunnus (1-10) (99 lopettaa)\n"); scanf ("%d", &tunnus); if (tunnus > 10 && tunnus < 1) { printf("Annoit v\x84\x84r\x84n tunnuksen! (%d)\n",tunnus+1); } tunnus--; else { printf(" (99 lopettaa)\n"); float keskiarvo=0; for (i=0; i<10; i++) { int luku=0; printf("Anna l\x84mp\x94tila:\n"); scanf("%d", &luku); if (luku == 99) { break; } else keskiarvo+=luku; } keskiarvo = keskiarvo/i; LAMMOT[tunnus] = keskiarvo; KAUPLKM[tunnus] = i; printf("T\x84m\x84n kaupungin keskiarvo on %.2f\n",keskiarvo); } } while (tunnus == 99); } void TulostaKeskiarvot() { int tunnus=0; for (tunnus=0; tunnus<10; tunnus++) { printf("Kaupungin %d keskiarvo: %.2f\n",tunnus+1,LAMMOT[tunnus]); } }