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

827

    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. Mihin sinussa haluan koskea

      Tilanne, että pääsisin tutustumaan eri kohtiin sinussa, mitä haluaisin kokeilla. Käsiin haluaisin tutustua, hieroa niitä
      Ikävä
      42
      2266
    2. Sairaammaksi menee: Musk alkaa sensuroida Zelenskyin viestintää X:ssä

      IL: Musk puuttuu Zelenskyin viestintään – X:ään tulossa muutoksia "Elon Musk sanoo korjaavansa X:n, jotta käyttäjät voi
      Maailman menoa
      236
      2055
    3. Kerro nyt jotain

      Itsestäsi minkä haluaisit kaivattusi tietävän?
      Ikävä
      111
      1548
    4. Toisen ihmisen sydämellä

      leikkiminen on äärettömän moraalitonta. Antaa turhiaa toiveita ja sitten olla kuin mitään ei olisi tapahtunut. Kuinka vo
      Ikävä
      144
      1291
    5. On tämä meidän ikäero jo turhan suuri

      Kannattaisi tutustua samanikäisiin.
      Ikävä
      115
      1217
    6. PAM:in mainos, älä mene tänään ruokakauppaan

      kannatan kovasti kaupan työntekijöille lisää liksa. MUTTA lakossa on huonoa, nyt kauppiaat näkevät kuinka vähällä henki
      Ammattiliitot
      138
      1114
    7. Oho! Toivo Sukari paljastaa erikoisista iltatoimista Nadja-vaimon kanssa: "Hän aina putsaa mun..."

      Oho! Onpa iltatoimet tällä pariskunnalla. Toivo Sukari ja Nadja Sukari menivät naimisiin v. 2019. Lue lisää: https://
      Suomalaiset julkkikset
      27
      1107
    8. Millaisena luonteena

      Pidät kaivattuasi??
      Ikävä
      74
      1009
    9. Mitä ajattelet kun

      Katsot kaivattuasi silmiin? Mitä näet silmissä?
      Ikävä
      65
      973
    10. Olen otettu, mutta turhaan kulta testailet

      Sinua minä vaan ❤️
      Ikävä
      70
      960
    Aihe