Laskin ongelmia

Metsäminnni

Miten on järkevintä tehdä yksinkertainen laskin joka laskee plus-, miinus-, kerto- ja jakolaskuja?

Olen saanut aikaiseksi sellaisen laskimen joka kyllä toimii mutta sekoaa jos siihen syöttää kirjaimia...

Nykyinen laskin on tehty do-while-rakenteella.

1-4 numeroilla valitaan laskutoimitus ja 0 lopettaa. Laskutoimitukset suoritetaan aliohjelmissa...

5

1085

    Vastaukset 5

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • pjotrrrrrr

      Kaiketikkin nopein/yksinkertiaisin tapa lienee tehdä laskutoimitukset try-catch rakenteen sisällä. Ohjelman ei ainakaan pitäisi seota sitten.

      Mutta siihen miten tommonen laskin on "järkevintä" tehdä, niin en ota kantaa :) Nykyistä toteutustapaa en kyllä oikein ymmärrä, mutta jos se toimii niin anna palaa xD

    • pjotrrrrr

      Kaiketikkin nopein/yksinkertiaisin tapa lienee tehdä laskutoimitukset try-catch rakenteen sisällä. Ohjelman ei ainakaan pitäisi seota sitten.

      Mutta siihen miten tommonen laskin on "järkevintä" tehdä, niin en ota kantaa :) Nykyistä toteutustapaa en kyllä oikein ymmärrä, mutta jos se toimii niin anna palaa xD

    • Metsäminnni

      Onko kellään mitään esimerkkiä?

      • tämän kaltaista

        Nopeesti miettien näin. Koodi ei suoriltaan toimi et sinne joutuu lisään omaa tauhkaa.
        käyttäjä siis on valinnut minkä laskutoimituksen haluaa:
        while(valid){

        //kysytään lukut
        try{
        double d = Double.parseDouble(luku);
        double p = Double.parseDouble(luku2);
        valid = false;
        }
        catch(ParseException ex){}
        }
        System.out.println("tulos on:" c);


    • ma_vaan__

      Joskus väsäsin rpn-laskimen, tosin se laskee vaan miinus ja plus laskuja, mutta lisäämällä siihen saa helposti jako ja kerto laskut ja toi on tehty c-kielellä, mutta tässä ainaki pääohjelmasta esimerkki (aika huonosti rivittyy :)

      //Laskin käyttää RPN notaatiota (Reverse Polish //Notation) eli se on ns. //pinolaskin.Pinolaskimella laskettaessa annetaan //ensin laskettavat luvut ja sitten vasta //laskutoimitus.


      int main(void)
      {
      Tintstack stack;
      Tboolean succeeded;
      int item, pop_item = 0, i, sum = 0;
      int luku = 0;
      initialize_int_stack(&stack);

      printf("RPN-laskin. Ohjelmalle annetaan yksinumeroisia kokonaislukuja");
      printf("\nja operaatioita , - = ja L. Operaatio = tulostaa pinon");
      printf("\npaallimaisen alkion. Operaatio L lopettaa ohjelman.\n>");
      while((item = getchar()) != 'L') //getchar ottaa vastaan merkin, jos merkki L niin while silmukka päättyy
      {
      fflush(stdin);
      if(item == ' ')
      {
      sum = 0;
      succeeded = pop_int(&stack, &pop_item);
      if(succeeded == 0) //tarkistetaan onko pinossa operandia
      {
      printf("Pinossa ei operandia %d\n", succeeded);
      }
      else
      {
      sum = pop_item sum;
      succeeded = pop_int(&stack, &pop_item);
      if(succeeded == 0) //tarkistetaan onko pinossa operandia
      {
      printf("Pinossa ei operandia\n");
      }
      else
      {
      sum = pop_item sum;
      if(push_int(&stack, sum) == 0) //laitetaan summa pinoon päällimmäiseksi
      {
      printf("/nStack is full"); //push_int() palauttaa 0 jos pino täynnä ja 1 jos pino ei ole täynnä
      }
      else
      {
      //printf("Summa tallennettiin pinoon\n");
      }
      }
      }
      }
      else if(item == '-')
      {
      sum = 0;
      succeeded = pop_int(&stack, &pop_item);
      if(succeeded == 0) //tarkistetaan onko pinossa operandia
      {
      printf("Pinossa ei operandia %d\n", succeeded);
      }
      else
      {
      sum = pop_item-sum; //erotus
      succeeded = pop_int(&stack, &pop_item);
      if(succeeded == 0) //tarkistetaan onko pinossa operandia
      {
      printf("Pinossa ei operandia\n");
      }
      else
      {
      sum = pop_item-sum; //erotus
      if(push_int(&stack, sum) == 0) //Tallennetaan erotus pinoon päällimmäiseksi
      {
      printf("/nStack is full"); //push_int() palauttaa 0 jos pino täynnä ja 1 jos pino ei ole täynnä
      }
      else
      {
      //printf("Erotus tallennettiin pinoon\n");
      }
      }
      }
      }
      else if(item == '=')
      {
      succeeded = pop_int(&stack, &pop_item);
      if(succeeded == 0) //tarkistetaan onko pinossa operandia
      {
      printf("Pinossa ei operandia\n");
      }
      else
      {
      printf("\t \t tulos %d\n", pop_item);
      }
      if(push_int(&stack, pop_item) == 0) //laitetaan takasi pinoon päällimmäiseksi
      {
      printf("/nStack is full"); //push_int() palauttaa 0 jos pino täynnä ja 1 jos pino ei ole täynnä
      }
      }
      else if(isdigit(item)) //onko numero
      {
      if(push_int(&stack, item - '0') == 0) //laitetaan käyttäjän syöttämä merkki pinoon päällimmäiseksi, täytyy vähentää '0' koska ascii
      {
      printf("/nStack is full"); //push_int() palauttaa 0 jos pino täynnä ja 1 jos pino ei ole täynnä
      }
      else
      {
      //printf("Merkki tallennettiin pinoon\n");
      }
      }
      else
      {
      printf("Et antanut oikein\n");
      }
      printf(">");
      }
      print_int_stack (&stack);
      system("PAUSE");   
      return 0;
      }

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Nyt se syksy on sitten alkanut

      Esimerkiksi tänään sataa aamusta iltaan, ja nytkin.
      Maailman menoa
      55
      1022
    2. Minä en ole koskaan

      Rakastanut ketään toista yhtä paljon kuin sinua
      Ikävä
      98
      1004
    3. Tiesitkö? Jorma Uotisen EX-rakas on Helena Lindgren - Nämä ovat välit nyt: "Me ollaan..."

      Jorma Uotinen ja Helena Lindgren olivat avoliitossa v. 1982-1999. Pariskunta oli aikansa näyttävä julkkispari, missä i
      Kotimaiset julkkisjuorut
      21
      852
    4. Vähän pitää

      Kiusia ja näyttää
      Ikävä
      135
      802
    5. Anteeksi J-mies

      Anteeksi että myötävaikutin siihen että rakastuit minuun, jota et voi koskaan saada. Viimeksi kun näimme ja katselimme t
      Ikävä
      121
      786
    6. Olet nainen ollut vaikein rasti

      Eniten olet tunteitani myllännyt ja niitä kuluttanut, ja tuottanut. 🤔
      Ikävä
      55
      774
    7. Kenen viisautta on ollut laittaa tie väärällä murskeella pilalle

      Kenen viisautta on ollut kun Siimeksen/Kylmänpurontie pantu pilalle kun on ajettu liian karkeaa mursketta. Rengasliikke
      Hyrynsalmi
      25
      659
    8. Taidat olla

      Luovuttanut jo minun suhteeni osalta?
      Ikävä
      45
      656
    9. Riittääkö mahkut

      Kaivattuusi 🤭.
      Ikävä
      50
      638
    10. Minä muistan

      Minä muistan sinut nauravana. Sellaisena, joka sai tavallisenkin hetken tuntumaan vähän kevyemmältä, kuin huoneeseen ol
      Ikävä
      45
      610
    11. Mä voisin rakastua noihin tähti silmiin

      Katseesi on niin lumoava nainen💚.
      Ikävä
      19
      607
    12. Jos tullaan toisiamme vastaan, niin

      pitäiskö pysähtyä ja onnitella?
      Ikävä
      46
      578
    13. Voisiko vielä välillemme jotain kehittyä

      Vai heihei ja ei nähdä enää.
      Ikävä
      35
      570
    14. Kuhmolainen opettaja tuomittu vainoamisesta

      https://yle.fi/a/74-20248184 ”Kuusikymppinen kuhmolaisnainen piinasi naapureitaan lähes kahdeksan vuoden ajan. Nainen
      Kuhmo
      13
      570
    15. Siinä kävi mies nyt niin että tämä ämmä muuttaa ulkomaille

      Vuonojen maa kutsuu, joten ei hätää. Et kuule minusta enää. 😂 Lycka till! Ämmä riittää.
      Ikävä
      72
      558
    16. Koska Martina viettää aikaansa lapsiensa kanssa

      Äiti vaan juoksee miehen perässä Tallinnassa, Lontoossa, Turussa. Kyllä oli kätilö oikeassa, kun sanoi, että ei olisi ka
      Kotimaiset julkkisjuorut
      141
      555
    17. Ähtäri on taas TV: n ja radion ykkösuutinen

      Uusi podcast on julkaistu ja on nyt kuunneltavissa. Mot on tehnyt hyvää työtä! Mikko Savola ja kepu ei ota mitään vast
      Ähtäri
      47
      548
    18. Mitä muuta on olemassa kuin lisääntyminen

      Jos mies ei pääse lisääntymään niin mikä hänen osansa elämässä on? mitä jää jäljelle? Hän on vain muiden palvelija kok
      Sinkut
      120
      536
    19. Tilanteenne

      Onko tilanteenne tällä hetkellä hyvä?
      Ikävä
      47
      515
    20. Pahkalassa tapahtuu

      Mitäs on tapahtunut yöllä pahkalan kerrostaloilla.oli poliisia ja ambulanssia taas vaihteeksi
      Parkano
      9
      513
    Aihe