Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Plausibilität eines Kalenderdatums (Unterprogramme)

Prüfen Sie, ob eine Eingabe zu einem Kalenderdatum sinnvoll ist. Dazu werden Jahr, Monat und Tag eingegeben. Prüfen Sie, ob das Datum existiert. Geben Sie als Resultat einen Boole'schen Wert (true / false) aus. Verwenden Sie für Daten  Donnerstag, 4. Oktober 1582, den Julianischen Kalender. Verwenden Sie für Daten  Freitag, 15. Oktober 1582, den Gregorianischen Kalender. Auf den 4. Oktober 1582 folgte nach Papst Gregors Kalender direkt der 15. Oktober 1582.

Verwenden Sie das Unterprogramm aus Schaltjahre.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

def schaltjahr(jahr):
    schalt = False
    if (jahr%4) == 0:
        schalt = True
        if (schalt%100) == 0:
            schalt = False
            if (schalt%400) == 0:
                schalt = True
    return schalt

#Parameter als Integer eingeben
def pruefe_datum(tag,monat,jahr):
    tage_monat = [0,31,28,31,30,31,30,31,31,30,31,30,31]
    plausibel = True

    if tag > tage_monat[monat]:
        plausibel = False
        if monat == 2:
            if tag == 29:
                if schaltjahr(jahr):
                    plausibel = True
    
    if monat < 1 or monat > 12:
        plausibel = False
        
    if jahr == 1582:
        if monat == 10:
            if tag in [5,6,7,8,9,10,11,12,13,14]:
                plausibel = False

    if jahr < 0:
        plausibel = False

    return plausibel

#Teste Datum
print pruefe_datum(4,5,2100)
print pruefe_datum(12,10,1582)
print pruefe_datum(29,2,2004)
print pruefe_datum(29,2,2003)
                
/*
 *  SANTIS TRAINING MODUL 755
 *  Aufgabe  Plausibilität eines Kalenderdatums
 *  Autor    Chris O'Connor
 *  Datum    21. Februar 2018
 */

package ch.santis.modul755.work;

import java.util.Scanner;

public class Kalenderdatum {

	public static void main(String[] args) {
		new Kalenderdatum().top();
	}

	String iS(String Frage) {
		System.out.print(Frage);
		return new Scanner(System.in).nextLine();
	}
	
	void Splitt(String iDate) {
		int indexOfPunkt  = iDate.indexOf('.');
		int indexOfLPunkt = iDate.lastIndexOf('.');

		Tag   = Integer.parseInt(iDate.substring(0, indexOfPunkt));
		Monat = Integer.parseInt(iDate.substring((indexOfPunkt + 1), indexOfLPunkt));
		Jahr  = Integer.parseInt(iDate.substring((indexOfLPunkt + 1), iDate.length()));		
	}
	
	void SchaltJahr() {
		if(Jahr % 4   == 0) { schaltJahr = true; }
		if(Jahr % 100 == 0) { schaltJahr = false;}
		if(Jahr % 400 == 0) { schaltJahr = true; }
		if(Jahr < 1582 && Jahr % 4 == 0) { schaltJahr = true; }
		
	}
	
	boolean Day() {
		if(schaltJahr == true)                    { Kalender[1] += 1;}
		if(Tag > 0 && Tag <= Kalender[Monat - 1]) { return true;     }
		return false;
	}
	boolean Month() {
		if(Monat > 0 && Monat <= 12) { return true;}
		return false;
	}
	boolean Year() {
		if(Jahr > 0) { return true;}
		return false;
	}
	
	int Tag, Monat, Jahr;
	boolean schaltJahr = false;
	int Kalender[] = {31,28,31,30,31,30,31,31,30,31,30,31};
	
	void top() {
		String iDate = iS("Datum = ");
		Splitt(iDate);
		SchaltJahr();
		if(Year() && Month() && Day()) {
			System.out.println("Datum ist Möglich!");
		}else{
			System.out.println("Datum ist nicht Möglich!");
		}
	}
}
                

Lösung von: Name nicht veröffentlicht

function isLeapYear(y) {
  let a = y < 1582,
      b = y % 4 == 0,
      c = y % 400 == 0;
  return (a && b) || (!a && (b && c));
}

function isReasonableDate(y, m , d) {
  for (let i = 0; i < arguments.length; i++)
    arguments[i] = parseInt(arguments[i]);
  // ober- und untergrenzen
  if (d<1 || d>31 || m<1 || m>12) return false;
  // februar
  if (m == 2) {
    if (d < 29) return true;
    if (d == 29) return isLeapYear(y);
    return false;
  }
  // kurze monate
  if ((m==4 || m==6 || m==9 || m==11) && d==31) return false;
  // 1582
  if (y==1582 && m==10 && d>4 && d<15) return false;
  // qué será, será
  let tomorrow = new Date().setDate(new Date().getDate()+1),
      diq = new Date(y, m-1, d);
  if (diq > tomorrow) return 'maybe';
  return true;
}

// main
let input = prompt('Tajpu daton (tt.mm.jjjj):').split('.');
console.log(
  input.join('.'),
  isReasonableDate(input[2], input[1], input[0])
);
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// C++ 20 | VS-2022
#include <iostream>
#include <vector>
#include <string>

using namespace std::literals;

struct date {
    int day, month, year;
};

inline const auto is_leap_year(const int year_) {
    return (year_ >= 1582 && year_ % 4 == 0 && year_ % 100 != 0 || year_ % 400 == 0);
}

inline const auto get_split_date(const std::string& str_, const char& del_ = ' ') {
    std::vector<std::string> out;
    std::string wrd = "";
    for (const auto& chr : str_)
        if (chr == del_) { out.push_back(wrd); wrd = ""; }
        else { wrd += chr; }
    out.push_back(wrd);
    return out;
}

inline const auto is_excluded_date(const date& date_) {
    const auto& [day, month, year] = date_;
    return year == 1582 && month == 10 && day > 4 && day < 15;
}

inline const auto is_date(const date& date_) {
    if (is_excluded_date(date_)) return false;
    const auto& [day, month, year] = date_;
    const auto feb{ is_leap_year(year) ? 29 : 28 };
    int month_days[]{ 31,feb,31,30,31,30,31,31,30,31,30,31 };
    if (year < 1 || year > 9'999) return false;
    if (month < 1 || month > 12) return false;
    if (day < 1 || day > month_days[month - 1] + 1) return false;
    return true;
}

inline const auto is_date(const std::string& date_) {
    const auto spl{ get_split_date(date_, '.') };
    if (spl.size() != 3) return false;
    return is_date(date{ std::stoi(spl[0]), std::stoi(spl[1]), std::stoi(spl[2]) });
}

inline const std::ostream& print(std::ostream& os_, bool res_) {
    os_ << "date is " << (res_ ? "valid" : "invalid") << "\n";
    return os_;
}

int main() {
    print(std::cout, is_date(date{ 19,2,1952 }));
    print(std::cout, is_date("13.10.1582"s));
    print(std::cout, is_date(date{ 29,2,2024 }));
    print(std::cout, is_date("13.12.2045"s));
}
                

Lösung von: Jens Kelm (@JKooP)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2
Schwierigkeit: k.A.
Webcode: fa38-e9da
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen