Hei, kaipaisin apua seuraavan tehtävän kanssa R:llä
Vuosi on karkausvuosi, jos se on jaollinen neljällä, mutta ei sadalla. Kuitenkin 400:lla jaolliset vuodet ovat karkausvuosia. Vuosi 4000 ei kuitenkaan ole karkausvuosi. Laadi funktio, joka tulostaa karkausvuodet vuosilukuväliltä vuosi1-vuosi2. Esimerkiksi f(2000,2010) palauttaisi karkausvuodet sisältävän
vektorin (2000,2004,2008).
Alustat tyhjän vektorin. Loopissa käyt läpi vuodet vuosi1 - vuosi2 ja kunkin vuoden kohdalla tarkistat onko se karkausvuosi. Jos on, lisäät vektoriin ko. vuoden. Lopuksi palautat vektorin.
Tajuan kyllä teoriatasolla miten tuo tehdään, mutta aina kun yritän tehdä R:llä niin ei anna haluttua vastausta :(
No mikä noista toimenpiteistä aiheuttaa ongelmaa?
- Funktion tekeminen?
- Tyhjän vektorin muodostaminen?
- Vuosilukuvälin läpikäynti loopissa?
- Karkausvuoden tarkastaminen?
- Vuoden lisääminen vektoriin?
- muuttujan palauttaminen funktiosta?
Ainakin yksi lähestymistapa ongelmaan R:ssä on se, että tehdään ensin vektori kaikista vuosista ja suodatetaan tämä sitten tiedolla, onko kyseessä karkausvuosi.
vuodet = seq(alku, loppu) karkausvuodet = vuodet[onko_karkausvuosi(vuodet)]
Karkausvuoden tarkastuksessa on olennaista käyttää myös logiikassa vektorioperaatioita & ja | eikä yhden arvon operaatioita && ja ||.
Itse tekisin jotenkin näin:
for vuosi=alku to loppu; vuosi++ karkaus = false if vuosi == 4000 karkaus = false else if (vuosi % 400) == 0 karkaus = true else if (vuosi % 100) == 0 karkaus = false else if (vuosi % 4) == 0 karkaus = true if karkaus then tulosta vuosi next
Aihe on jo aika vanha, joten et voi enää vastata siihen.