Kuukausierän laskemisen kaava?

korotusongelma

Olen kirjoittamassa ohjelmaa, jolla voisi laskea kuukausittaista lainaerää. Erän kaava on matemaattisesti seuraava:

maksu = iP / 1 - ( 1 i)^-n

Missä kaavassa siis:

P = lainattu rahamäärä
i = kuukausittainen korkoprosentti
n = maksuerien lukumäärä

Ongelmana on tuon muuttaminen C-kielelle. Se ilmeisesti vaatii pow-kirjastofunktion (math.h-tiedostosta) käyttöä. Käsittääkseni perussyntaksi on:

pow(x,y)

Missä siis lasketaan x potenssiin y. Miten sitä pitäisi soveltaa ylläolevaan kaavaan? Mitä tulee x:n ja mitä y:n paikalle?

10

1042

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • sudhfsiduhf

      miten olis pow((1 i),-n);

      • korotusongelma

        Niinpäs taitaakin olla. Kiitokset avusta! :) Ei ole juuri nyt kääntäjää saatavilla koneella ja menen välillä kaavoissa sekaisin...


    • Anonyymi

      #include <math.h>
      #include <stdio.h>

      float laskeKuukausierä(float P, float i, int n){
      float maksu = 0;
      float korotettu = pow((1 + i), -n);

      maksu = i * P / (1 - korotettu);

      return maksu;
      }

      int main(){
      float lainattuSumma = 10000.0;
      float korkoprosentti = 0.01;
      int erienLkm = 12;

      float kuukausierä = laskeKuukausierä(lainattuSumma, korkoprosentti, erienLkm);
      printf("Kuukausierä: %.2f
      ", kuukausierä);

      return 0;
      }

      • Anonyymi

        Matemaattiset funktiot ottavat ja palauttavat liukuluvut double-tyyppisinä, joten koodissa float:in sijaan olisi järkevää käyttää double-tyyppiä. Tai vaihtoehtoisesti pow() funktio tulisi korvata powf() funktiolla, joka on lisätty standardiin C99:n myötä.

        Myös printf() funktio olettaa argumentin "%f"-kentälle olevan double-muodossa. Float-tyyppinen argumentti korotetaan automaattisesti double-tyyppiseksi, mistä syntyy ylimääräistä koodia aivan tarpeettomasti.

        Float-tyyppi oli käyttökelpoinen joskus kauan sitten, kun liukuluvuilla laskettiin ilman matematiikkaprosessorin tukea ja kun muistia oli kaikkiaan käytettävissä sellaiset 640 kilotavua. Nykyään float-tyypille on hyvin vähän jos lainkaan tarvetta, double on luontevampi em. syistä.


      • Anonyymi
        Anonyymi kirjoitti:

        Matemaattiset funktiot ottavat ja palauttavat liukuluvut double-tyyppisinä, joten koodissa float:in sijaan olisi järkevää käyttää double-tyyppiä. Tai vaihtoehtoisesti pow() funktio tulisi korvata powf() funktiolla, joka on lisätty standardiin C99:n myötä.

        Myös printf() funktio olettaa argumentin "%f"-kentälle olevan double-muodossa. Float-tyyppinen argumentti korotetaan automaattisesti double-tyyppiseksi, mistä syntyy ylimääräistä koodia aivan tarpeettomasti.

        Float-tyyppi oli käyttökelpoinen joskus kauan sitten, kun liukuluvuilla laskettiin ilman matematiikkaprosessorin tukea ja kun muistia oli kaikkiaan käytettävissä sellaiset 640 kilotavua. Nykyään float-tyypille on hyvin vähän jos lainkaan tarvetta, double on luontevampi em. syistä.

        Kehotankin siis käyttämään double-tyyppiä float-tyypin sijaan matemaattisissa funktioissa ja printf() funktiossa, jotta vältetään ylimääräisen koodin syntymistä ja varmistetaan tarkempi laskenta. Lisäksi pow() funktio kannattaa vaihtaa powf() funktioon, jos halutaan nimenomaan float-tyyppistä tulosta. Tämä lisää koodin luettavuutta ja ylläpidettävyyttä.


    • Anonyymi

      Yritin kerran myös kunnekas huomasinkin päässeeni ulosotolle. En tarjoudu toiste.

    • Anonyymi

      Kuukausierä: 888.49

    • Anonyymi

      Muuten ihan hyvä, mutta kaava on päin honkia.

      • Anonyymi

    • Anonyymi

      maksu = iP / 1 - ( 1 i)^-n
      = iP - i^(-n)
      = iP - (-i)^n
      = i*P - ( (n%4==0) ? ( 1 : n%4==1 ? ( -i : ( n%4==2 ? -1 : i)) ) ) )

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

    Luetuimmat keskustelut

    1. Sannan kirja USA:n bestseller!

      "Congratulations to Sanna Marin's HOPE IN ACTION, officially a USA TODAY bestseller!" Kertoo Scribner. Mitäs persut tä
      Maailman menoa
      41
      10583
    2. Yritystuet 10 mrd. vuodessa, eli yrittäjäriski valtiolla kuten kommunismissa

      Pelkästään Viking Linen viinanhakuristeilyitä sponsoroidaan 20 miljoonalla eurolla vuosittain. Dieselin verotukikin on
      Yrittäjyys
      126
      10142
    3. Oikeistolainen luki Med mod att leda : en biografi

      ...ei tykänny Sanna Marinista
      Maailman menoa
      22
      7927
    4. Sture Fjäder haluaa tuensaajien nimet julki

      Kokoomuspoliitikko haluaa yli 800 euroa kuukaudessa tukia saavien nimet julki. Ehkä olisi syytä julkaista myös kuvat? h
      Maailman menoa
      177
      6334
    5. Metsäalan rikolliset

      Jokohan alkaa vähitellen kaatua kulissit näillä ihmiskauppaa harjoittavilla firmoilla.
      Sotkamo
      30
      4922
    6. Milloin viimeksi näit kaivattusi?

      Toimisitko nyt toisin kuin siinä tilanteessa teit?
      Ikävä
      56
      4743
    7. Ruotsalaistoimittaja: "Sanna Marinin saunominen saa minut häpeämään"

      Sanna Marinin kirja saa täyslaidallisen ruotsalaislehti Expressenissä perjantaina julkaistussa kolumnissa.....voi itku..
      Maailman menoa
      117
      4076
    8. Maahanmuuttajat torjuvat marjanpoiminnan - "emme ole rottia"

      Ruotsalaisen journalistin selvitys paljasti, miksi maahanmuuttajat kieltäytyvät työstä. Taustalla vaikuttavat kulttuuris
      Maailman menoa
      125
      3429
    9. Missä vaiheessa

      Päätit luovuttaa suhteeni?
      Ikävä
      62
      3147
    10. Adonikselle

      Kuvittelitko oikeasti, että ootan sua? Kuvittelitko, että voit noin vain vetäyttä ja kun tulet takaisin, kaikki on niin
      Ikävä
      226
      3085
    Aihe