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
1108
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
Vesikin maksaa, miksei hengitysilma?
Jatkuvasti itketään ettei ole rahaa mihinkään, mutta tilastojen mukaan rahaa on enemmän kuin koskaan, joten miksei asial341952Satuolennoista tarinointi ei kuulu peruskoulun tehtäviin
Opetustunteja on muutenkin käytössä vain rajallinen määrä. Eli nämä satuhommat koulun ulkopuolelle vapaaehtoisiin harras1651890Suomalainen perheenisä vaatii Suvivirren esittämisestä hyvityksiä
Itse lapsena uskonnonopetuksesta vissiin traumoja saanut ihka suomalainen (!) perheenisä vaatii Espoon kaupungilta korva3801782Mies profiloin sinut
Etsit täysin hallittavaa mutta samalla poikkeuksellista ihmistä. Etsit jotain mitä et koskaan tule saamaan.2161248- 921113
Kiantama kartelli
Onko alhaisempaa kuin toimia ensin kartellissa ja lopuksi koittaa pelastaa nahkasa vasikoimalla muut kun jää kiinni? Eip34970- 95765
Kiantama oy
Tämän päivän uutiset.....https://www.is.fi/taloussanomat/art-2000012036470.html.15698Saako 60 v vielä töitä? Arto Nyberg puhuu suoraan elämästä ilman töitä
Arto Nyberg täyttää tänään 60 v. Onnea! Nyberg totuttiin näkemään suoran haastatteluohjelman kapteenina vuodesta toise47665- 32664