karkausvuosi

Teen harrastuksen vuoksi ohjelmaa, jonka avulla voi laskea lainan takaisinmaksun. Nyt ongelmaksi näyttää muodostuvan kaksi asiaa.

1. Lyhennyksien kokonaissumma on suurempi kuin alkuperäinen laina.

2. Karkausvuosi pitäisi ottaa huomioon kun helmikuussa on silloin yksi päivä enemmän.

Tällä hetkellä minulla on normaalin vuoden päivät taulukossa. Kuukaudet[12] = {31.00, 28.00 jne... };
71230
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Minä aina joskus harrastuksen vuoksi vastailen viesteihin täällä. Toisinaan kysymykset ovat lyhyitä ja ytimekkäitä, toisinaan eivät. Jos kysymys on epäselvä, niin en tiedä mihin vastata.

Tällä hetkellä minulla on aikomus lähteä hieman ulkoilemaan.

Äänestä
  • Eli siis miten voin valita" oikean taulukon? jos on vaikkpa kaksi erilaista taulukkoa toisessa taulukossa indeksi 1 osoittaa helmikuulle lukua 28.00 ja toisesa 29.00.

    Selkenikö?

    Voisi kait ajatella funktiota, joka palauttaa vaikkapa 1 jos on karkausvuosi ja 0 jos ei ole.

    Mutta mutta miten tämä tehdään?

    Äänestä

  • jtr kirjoitti:

    Eli siis miten voin valita" oikean taulukon? jos on vaikkpa kaksi erilaista taulukkoa toisessa taulukossa indeksi 1 osoittaa helmikuulle lukua 28.00 ja toisesa 29.00.

    Selkenikö?

    Voisi kait ajatella funktiota, joka palauttaa vaikkapa 1 jos on karkausvuosi ja 0 jos ei ole.

    Mutta mutta miten tämä tehdään?

    No ei mahdottoman selkeää ole vieläkään, mutta ehkä karkausvuoden laskentamekanismi auttaa. Vuosi X on karkaus vuosi jos se on neljällä jaollinen ( X % 4 == 0) paitsi jos se on myös sadalla jaollinen ( X % 100 == 0) paitsi jos se on myös neljälläsadalla jaollinen ( X % 400 == 0).

    Siis 2000 oli karkausvuosi, koska se on jaollinen 4:llä ja 400:lla (ja sadalla, mutta se ei haittaa, koska se on jaollinen 400:lla). 1996 on kv. koska se on neljällä jaollinen. 1900 ei ole karkausvuosi vaikka se on neljällä jaollinen koska se on sadalla jaollinen, mutta ei neljälläsadalla.

    Tätäkö haet?

    Äänestä

  • jtr kirjoitti:

    Eli siis miten voin valita" oikean taulukon? jos on vaikkpa kaksi erilaista taulukkoa toisessa taulukossa indeksi 1 osoittaa helmikuulle lukua 28.00 ja toisesa 29.00.

    Selkenikö?

    Voisi kait ajatella funktiota, joka palauttaa vaikkapa 1 jos on karkausvuosi ja 0 jos ei ole.

    Mutta mutta miten tämä tehdään?

    >...miten tämä tehdään?


    int is_leap_year(int year) {
    /*
    // leap year:
    // is divisable by 4 and not by 100
    // is divisable by 400
    */
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    return 1; /* leap */
    else
    return 0; /* no leap */
    }

    http://www.c.happycodings.com/Miscellaneous/code34.html

    Äänestä

  • näin. kirjoitti:

    >...miten tämä tehdään?


    int is_leap_year(int year) {
    /*
    // leap year:
    // is divisable by 4 and not by 100
    // is divisable by 400
    */
    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    return 1; /* leap */
    else
    return 0; /* no leap */
    }

    http://www.c.happycodings.com/Miscellaneous/code34.html

    Mutta tuossa on virhe.

    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

    Oletan että pitäisi olla:
    if((year % 4 == 0) || (year % 100 != 0 && year % 400 == 0))

    Koska karkausvuosi on joka neljäs vuosi, mutta joka sadas vuosi jos se on myös neljälläsadalla vuodella jaollinen. Näion se ainakin toimii eli kiitoksia vaan.

    Äänestä

  • jtr kirjoitti:

    Mutta tuossa on virhe.

    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

    Oletan että pitäisi olla:
    if((year % 4 == 0) || (year % 100 != 0 && year % 400 == 0))

    Koska karkausvuosi on joka neljäs vuosi, mutta joka sadas vuosi jos se on myös neljälläsadalla vuodella jaollinen. Näion se ainakin toimii eli kiitoksia vaan.

    >...tuossa on virhe.

    Nyt on tainnut jäädä kotiläksyt lukematta mutta se ei näköjään lannista hinkua julistaa. :)

    Nimenomaan tuo alkuperäinen (ylempi) if-lause toimii oikein. Ja logiikallakin ymmärtää että tuo alempi ei voi toimia oikein kun se on "or"-ehto neljällä jaolliselle joten noilla lopuilla tarkasteluilla ei ole mitään merkitystä koska vasemmanpuoleinen ehto toteutuu joka tapauksessa aina myös täysillä vuosisadoilla.

    Ota ja kokeile jos et usko.

    Ja jos on miestä niin pyydät näsäviisauttasi anteeksi neuvojalta.

    Äänestä

  • jtr kirjoitti:

    Mutta tuossa on virhe.

    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

    Oletan että pitäisi olla:
    if((year % 4 == 0) || (year % 100 != 0 && year % 400 == 0))

    Koska karkausvuosi on joka neljäs vuosi, mutta joka sadas vuosi jos se on myös neljälläsadalla vuodella jaollinen. Näion se ainakin toimii eli kiitoksia vaan.

    Kokeile ajaa vuodet 3000 ja 2200 omalla versiol-
    lasi.Nehän eivät ole karkausvuosia,mutta sinun
    tulkinnallasi ovat!!

    Äänestä

Kommentoi aloitusta


jtr kirjoitti:

Teen harrastuksen vuoksi ohjelmaa, jonka avulla voi laskea lainan takaisinmaksun. Nyt ongelmaksi näyttää muodostuvan kaksi asiaa.

1. Lyhennyksien kokonaissumma on suurempi kuin alkuperäinen laina.

2. Karkausvuosi pitäisi ottaa huomioon kun helmikuussa on silloin yksi päivä enemmän.

Tällä hetkellä minulla on normaalin vuoden päivät taulukossa. Kuukaudet[12] = {31.00, 28.00 jne... };

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu