Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: R: karkausvuositehtävä

onneton [24.02.2021 12:44:41]

#

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).

Grez [24.02.2021 14:12:23]

#

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.

onneton [24.02.2021 17:20:16]

#

Tajuan kyllä teoriatasolla miten tuo tehdään, mutta aina kun yritän tehdä R:llä niin ei anna haluttua vastausta :(

Grez [24.02.2021 20:43:14]

#

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?

Metabolix [24.02.2021 21:12:01]

#

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 ||.

TapaniS [25.02.2021 08:48:30]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta