Guest User

Untitled

a guest
Jun 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.29 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <locale.h>
  5.  
  6.  
  7. int main(void) {
  8.    setlocale(LC_ALL, "finnish");
  9.    //alustus
  10.    int iKaupunki[10]={0,0,0,0,0,0,0,0,0,0}; //kaupunkien taulukko
  11.    double dLammot[10]={0,0,0,0,0,0,0,0,0,0}; //lämpötilojen taulukko
  12.    double dKA[10]={0,0,0,0,0,0,0,0,0,0}; //lämpötilojen keskiarvo-taulukko
  13.    int iYksi=0; //kaupunki skannin muuttuja
  14.    double dKaksi=0; //lämpötila skannin muuttuja
  15.    int i=0; //silmukoissa käytetty muuttuja
  16.    int iJako=0; //koko maan lämpötilojen keskiarvon laskentaan tarkoitettu muuttuja, KAUPUNKIEN LUKUMÄÄRÄ (jakaja)
  17.    double dLampo=0; //koko maan lämpötilojen keskiarvon lasketaan tarkoitettu muuttuja, LÄMPÖTILOJEN YHTEENLASKETTU SUURUUS (jaettava)
  18.    int fail = 1;
  19.  
  20.  
  21.        printf("Jee terve tuloa kaupunkien keskilämpötilalaskemisohjelmistoon lolololol\n");
  22.        printf("kaupungit ovat:\n");    
  23.        printf("1 – Helsinki\n");
  24.        printf("2 – Kuopio\n");
  25.        printf("3 – Lahti\n");
  26.        printf("4 – Lappeenranta\n");
  27.        printf("5 – Maarianhamina\n");
  28.        printf("6 – Mikkeli\n");
  29.        printf("7 – Oulu\n");
  30.        printf("8 – Rovaniemi\n");
  31.        printf("9 – Savonlinna\n");
  32.        printf("10 – Turku\n");
  33.        printf("99 - OHJELMAN LOPETUS\n\n");
  34.  
  35.        printf("Anna kaupungin numero (1-10) tai lopeta ohjelma syöttämällä 99\n");
  36.        scanf ("%d", &iYksi);  //skannataan haluttu kaupungin numero
  37.            //lol ei saa käyttää break; komentoo ni on pakko suorittaa toi vitun While lauseke vasta TÄN JÄLKEE :D:D: typerää, mut ei voi mitää... ainaki toimii !!
  38.            // nää samat äskeiset kaks rivii on myös WHILE silmukan sisällä, viimesenä, koska muuten tää homma ei pelittäis.. on pakko kysyy ainaki kerra ;)
  39.        if(iYksi <0 || iYksi >9){ //tarkistetaan, onko kaupungin numero luettelossa
  40.             printf("Annoit kelvottoman numeron, pässi!\n");
  41.             fail = 0;
  42.             iYksi = 99;
  43.        }
  44.        while(iYksi != 99) { // pysytään while loopissa kunnes käyttäjä haluaa lopettaa syöttämällä iYksi arvoksi 99 .. jeejee, simppeliä
  45.            iYksi--; //vähennetää yks, koska numerot taulukossa on 0-9, ja kaupungit on 1-10 :P
  46.            iKaupunki[iYksi]++; //syötetyn arvon kohta taulukossa, eli jos kaupunki on helsinki, ni sen numeroa lisätään yhdellä, kätevää eikö? :D
  47.  
  48.            printf(".. ja lämpötila\n");
  49.            scanf ("%lf", &dKaksi); //kysytään lämpötila, joka on siis Double tyyppi koska voi olla yks desimaali
  50.            dLammot[iYksi] = dLammot[iYksi]+dKaksi; //hassun näköne, mut aika helppo: lämpötaulukon kohtaan, joka vastaa jo syötettyä kaupunki, lisätään lämpötila joka syötettiin ennen tätä riviä.
  51.            printf("Anna kaupungin numero (1-10)\n"); //ja sama paska toistuu taas.. jeejee
  52.            scanf ("%d", &iYksi); //nää on ne kaks samaa riviä mitä tossa ennen while-silmukkaa on, mut pakko suorittaa while-silmukan sisälläkin, koska muuten tää ei toimi. ja jos käyttäjä antaa 99 ni homma loppuu tähän.
  53.            if(iYksi <0 || iYksi >9){ //tarkistetaan, onko kaupungin numero luettelossa TAAAAS!
  54.                 printf("Annoit kelvottoman numeron, pässi!\n");
  55.                 fail = 0;
  56.                 iYksi = 99;
  57.             }
  58.        }
  59.        /*===========================
  60.        noin, tarvittavat tiedot kaupungeista ja lämpötiloista on
  61.        nyt kerätty. seuraavaksi lasketaan keskilämpötilat vain
  62.        niistä kaupungeista, mitkä syötettiin
  63.       ===========================*/
  64.  
  65.  
  66.        for(i=0 ; i<10 ; i++) {
  67.            if(iKaupunki[i]>0) {
  68.                dKA[i] = dLammot[i] / iKaupunki[i];
  69.                iJako++; /*aina kun tää silmukka suoritetaan, eli jonkun
  70.                         kaupungin keskiarvo lasketaan, lisätään tähän
  71.                         yksi jotta saadaan jakaja kaikille annetuille arvoille.*/
  72.                dLampo = dLammot[i] + dLampo; //aina kun tää silmukka suoritetaan, lisätään dLampoon kaikki annetut lämpöarvot.
  73.            }
  74.        }
  75.            /*äskeinen silmukka laskee jokaiselle kaupungille
  76.            keskilämpötilan, jos iKaupunki[arvo] on nollaa isompi
  77.            luku, eli jos sinne on laitettu jotai, ni se laskee,
  78.            jos ei, ni skippaa seuraavaan, nii kaua ku kaikki kaupungit o läpi.
  79.            Keskiarvojen laskemine o hoidettu kätevästi silmukassa
  80.            pyörivällä muuttujalla, joka suurenee ja samalla hoitaa taulukoiden arvot :D*/
  81.            dLampo = dLampo / iJako; // lasketaan koko maan keskilämpötila.
  82.  
  83.  
  84.        /* toi seuraava on tehty switch-casella koska en
  85.        tajuu miten sen muuten vois tehä. siin käytetää break;-komentoa
  86.        jotta systeemi ei kusis.. mut breakkia ei saa käyttää
  87.        ni mitä vittuu täs pitää tehä :D:D:D ??????? */
  88.         for(i=0 ; i<10 ; i++) {
  89.             if(iKaupunki[i]>0) {
  90.                 switch( i ) {
  91.                 case 0:
  92.                     printf("Helsingin keskilämpötila on %.1lf\n ", dKA[i]);
  93.                     break;
  94.                 case 1:
  95.                     printf("Kuopion keskilämpötila on %.1lf\n ", dKA[i]);
  96.                     break;
  97.                 case 2:
  98.                     printf("Lahden keskilämpötila on %.1lf\n ", dKA[i]);
  99.                     break;
  100.                 case 3:
  101.                     printf("Lappeenrannan keskilämpötila on %.1lf\n ", dKA[i]);
  102.                     break;
  103.                 case 4:
  104.                     printf("Maarianhaminan keskilämpötila on %.1lf\n ", dKA[i]);
  105.                     break;
  106.                 case 5:
  107.                     printf("Mikkelin keskilämpötila on %.1lf\n ", dKA[i]);
  108.                     break;
  109.                 case 6:
  110.                     printf("Oulun keskilämpötila on %.1lf\n ", dKA[i]);
  111.                     break;
  112.                 case 7:
  113.                     printf("Rovaniemen keskilämpötila on %.1lf\n ", dKA[i]);
  114.                     break;
  115.                 case 8:
  116.                     printf("Savonlinnan keskilämpötila on %.1lf\n ", dKA[i]);
  117.                     break;
  118.                 case 9:
  119.                     printf("Turun keskilämpötila on %.1lf\n ", dKA[i]);
  120.                     break;
  121.                 }//switch päättyy
  122.             }//if päättyy
  123.         }//for päättyy
  124.         /*noin nyt on tulostettu kaupunkien keskilämpötilat..
  125.         mut edelleenki .. miten se tehtäis ilman break; komentoa?? en tajuu :ooooo*/
  126.  
  127.         /*/tää seuraava if lause on vähä turha,
  128.         ei tätä oikeesti tarvis pistää ton printin
  129.         takia tähän, mut laitoin vaa et "näyttää
  130.         hienommalta" niinku jukkaki aina tekee kaiken :D:D:DDD*/
  131.  
  132.                if(fail == 1){
  133.                 printf("Koko Suomen keskilämpötila on %.1lf\n ", dLampo);
  134.                 }/*tää IF siis tarkistaa, onko se ohjelman alussa
  135.                  annettu numero menny väärin, ja kattoo et onko toi
  136.                  "fail" muuttuja 1, eli jos on, ni numerot on menny
  137.                  oikein ja koko suomen keskiarvo tulostetaan näkyviin*/
  138.    getch();
  139.    return 0;
  140.  
  141. }
Add Comment
Please, Sign In to add comment