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?
Kuukausierän laskemisen kaava?
10
987
Vastaukset
- 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
Saahan tuolla kaavalla jonkinlaisen kuukausierän laskettua. Mutta jos aloittaja tavoitteli annuiteettilainan takaisinmaksuerää, sen laskentakaava on hieman toinen.
https://fi.wikipedia.org/wiki/Annuiteettilaina
- 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
- 953839
Nainen olet minun
Olen ominut sinut itselleni, täysin itsekkäistä syistä. Haluan rakastella sinua nainen, toivottavasti sinäkin minua. Oli473215Sille ei voi enää mitään
Miten kaikki meni aiemmin. Oon aivan lukossa 🔒 Tuskin uskallat enää mitää tehdä. Ehkä pitää luovuttaa vaan.1002827- 1362510
Harmi jos ei enään nähdä
Ehkä se on parempi näin kuitenkin. Ehkä jotain uutta löytyy. Uskon ja toivon että olet onnellinen. Sinussa on kaikki572460- 612398
Miten suhtauisitte jos kaivattunne sanoisi, ettei hänestä ole seurusteluun
mutta seksi, hellyys ja yhdessäolo kelpaa kyllä??1172387Vau miten upea nainen!
Näytit todella tyrmäävältä. 🤩😍 En meinannut saada katsettani irti sinusta.212334Kunpa minä tietäisin
Olisipa minulla tietoa, siitä oletko sinä nainen kiinnostunut minusta, miehestä joka tätäkirjoittaa, vai olenko minä aiv232326- 642090