Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Karkausvuoden tarkistus

late [07.06.2013 15:50:18]

#

Hei, olen tehnyt MOOC peruskurssin viikko 1 kaikki tehtävät paitsi -> Tehtävä 21: Karkausvuosi

- jaksaako joku selittää miten tuossa pääsisi eteenpäin?

.."Vuosi on karkausvuosi, jos se on jaollinen 4:llä. Kuitenkin jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin, kun se on jaollinen myös 400:lla.

Tee ohjelma, joka tarkistaa, onko vuosi karkausvuosi."

Eli ensin käsittääkseni jaetaan, mutta liittyykö jakojäännös tähän eli tarkistetaanko vielä pariton/ parillinen... Noh en sotke tämän enempää, mutta tämä on vika tehtävä viikko 1:sestä.

Teuro [07.06.2013 16:11:14]

#

bool onko_karkausvuosi_1(int vuosi) {
	if (vuosi % 4 == 0) {
		if (vuosi % 100 == 0) {
			if (vuosi % 400 == 0) {
				return true;
			} else {
				return false;
			}
		} else {
			return true;
		}
	} else {
		return false;
	}
}

Metabolix [07.06.2013 16:35:02]

#

late kirjoitti:

liittyykö jakojäännös tähän eli tarkistetaanko vielä pariton/ parillinen...

Ehkä sinun kannattaisi lukea opas jakojäännöksestä, niin saattaisit ymmärtää, että jakojäännös ja luvun parillisuuden tarkistaminen eivät ole sama asia.

samip [07.06.2013 19:43:59]

#

Vähän tiiviimpi ja helppolukuisempi versio

bool karkausvuosi(uint vuosi) {
	if (vuosi % 4 != 0) {
		return false;
	}
	if (vuosi % 100 == 0) {
		return vuosi % 400 == 0;
	}
	return true;
}

Metabolix [07.06.2013 22:04:14]

#

Minusta helpoimpia ovat seuraavat vaihtoehdot:

if (vuosi % 400 == 0) return true;
if (vuosi % 100 == 0) return false;
if (vuosi % 4 == 0) return true;
return false;
if (vuosi % 4 != 0) return false;
if (vuosi % 100 != 0) return true;
if (vuosi % 400 != 0) return false;
return true;
return vuosi % 4 == 0 && (vuosi % 100 != 0 || vuosi % 400 == 0);

late [08.06.2013 08:09:41]

#

Joo eihän tämä tosiaan ollutkaan kovin ihmeellinen kun tajuaa että kyse vain jakojäännöksestä. Tietty esimerkeistä hienostunein on Metabolixin, koska se on identtinen mallivastauksen kanssa.

import java.util.Scanner;

public class Karkausvuosi {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        System.out.print("Anna vuosi: ");
        int vuosi = Integer.parseInt(lukija.nextLine());
        if (vuosi % 4 == 0 && ( vuosi % 100 != 0 || vuosi % 400 == 0 ) ) {
            System.out.println("Vuosi on karkausvuosi.");
        } else {
            System.out.println("Vuosi ei ole karkausvuosi.");
        }
    }
}

Alla oma versio, jossa otin mallia Teuron ehdotuksesta, kiitän kaikkia esimerkkejä!

import java.util.Scanner;

public class Karkausvuosi {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);
        // Anna vuosi
        System.out.print("Anna vuosi: ");
        int vuosi = Integer.parseInt(lukija.nextLine());
        // Vuosi on karkausvuosi, jos se on jaollinen 4:llä.
        // Jos vuosi on jaollinen 100:lla, se on karkausvuosi vain silloin,
        // kun se on jaollinen myös 400:lla.
        if (vuosi % 4 == 0) {
            if (vuosi % 100 == 0) {
                if (vuosi % 400 == 0) {
                    System.out.println("Vuosi on karkausvuosi.");
                } else {
                    System.out.println("Vuosi ei ole karkausvuosi.");
                }
            } else {
                System.out.println("Vuosi on karkausvuosi.");
            }
        } else {
            System.out.println("Vuosi ei ole karkausvuosi.");
        }
    }
}

Vastaus

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

Tietoa sivustosta