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

1136

    Vastaukset 10

    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ä.

    Takaisin ylös

    Luetuimmat keskustelut

    1. Ei käy sääliksi sitä miestä

      Sitä saa mitä tilaa.
      Ikävä
      176
      1550
    2. Muistakaa pojat tämä.

      Mies joka haluaa naisen, löytää keinon. Ei epäröi eikä hämmennä. Tekee kaiken eteenne.
      Ikävä
      100
      758
    3. En ehkä onnistu siinä

      Kovasti minä yritän näyttää kauniilta, vain sinua varten, mutta en taida onnistua siinä.
      Ikävä
      58
      725
    4. Muhun rakastuu kaikki naiset, mut mä en rakastu niihin

      Mun vaatimustaso on 10+ Mut mua tavottelee 7+ naiset
      Ikävä
      203
      588
    5. Oletko päättänyt

      Että luovutat minun suhteeni
      Ikävä
      48
      546
    6. Mies,oletko koskaan...

      Käyttänyt maksullista naista?
      Ikävä
      126
      546
    7. Pahoin pelkään nainen

      että pidät minua epäempaattisena, itsekeskeisenä, narsistisena ja kylmänä ihmisenä. Oletko koskaan ajatellut, että minus
      Ikävä
      50
      528
    8. Kirjoita kolme sanaa

      mistä kaivattusi voisi sinut tunnistaa.
      Suhteet
      37
      526
    9. Viesti jonka haluaisit lähettää...

      hänelle. Onko jokin pieni tunniste jonka vain te tiedätte. Onko naiselta miehelle tai toisinpäin, joku joku päivämäärä
      Ikävä
      15
      500
    10. toivottavasti kohta jo kohdataan

      😍😍😍😍😍 sinua olen odottanut varmasti koko elämäni
      Ikävä
      25
      493
    Aihe