0

Hallo,

ich übe gerade pascal und habe im Netz eine Aufgabe gefunden, die ich lösen könnte. Eine Lösung ist leider nicht angegeben.

Könnte mir bitte da jemand helfen! Es wäre sehr nett! Danke im Voraus.

Die Aufgabe lautet:

Aufgabenstellung:

Entwickeln Sie ein Pascal-Programm, mit dessen Hilfe Sie das Alter (Jahre) einer Person bestimmen!

Einzugeben sind nur der Name und das Geburtsdatum der Person. Bei der Eingabe des Geburtsdatums ist darauf zu achten, daß die Eingabe von Tag, Monat und Jahr nicht durch das Betä„tigen der Enter-Taste unterbrochen wird. z.B: Geburtstag: 12.05.1970

Schwerpunkte

  1. Das aktuelle Datum erhalten Sie aus dem Betriebssystem.

  2. Die Eingabe des Geburtsdatums muß als ein String erfolgen. Dieser String muß in die Teilzeichenketten Tag, Monat und Jahr auseinandergenommen werden. Die einzelnen Strings können Sie in numerische Werte umwandeln.

  3. Gehen Sie zuerst so vor, daß Sie die letzten 4 Zeichen des Strings als Jahr identifizieren, wandeln diese in einen numerischen Wert um und berechnen das Alter in Jahren.

  4. Ändern Sie dann das Programm dahingehend, daß die Eingabe der Jahreszahl beliebig in den Formen "1970" oder "70" erfolgen kann.

  5. Ändern Sie dann das Programm dahingehend, daß die Eingabe von Tag, Monat und Jahr beliebig sein kann. z.B: 12.5.70 oder 1.1.90 oder 1.2.1991 usw.

Die Aufgabe ist hier zu finden: https://linksharing.samsungcloud.com/1meMWOl34mUN

gefragt

Punkte: 10

 
Kommentar schreiben
1 Antwort
0

Hi,

bin durch Zufall auf die Frage gestoßen und hab mich aus Interesse mal dran gesetzt.
Meine Lösung ist die folgende:

procedure TForm1.btnGoClick(Sender: TObject);
var
  datumText : String;
  datumArray : TStringArray;
  datumJahr,datumMonat,datumTag : Integer;
  aktuellesDatum : String;
  aktDatumArray : TStringArray;
  aktJahr, aktMonat, aktTag : Integer;
  alter : String; 
begin
     datumText := edtEingabe.Text;
     //Validierung fehlt halt noch
     // Text aufteilen
     datumArray := datumText.Split('.');
     datumJahr := StrtoInt(datumArray[2]);
     datumMonat := StrtoInt(datumArray[1]);
     datumTag := StrtoInt(datumArray[0]);

     //aktuelles Datum holen
     aktuellesDatum := DateToStr(Date);
     aktDatumArray := aktuellesDatum.Split('.');
     aktJahr := StrtoInt(aktDatumArray[2]);
     aktMonat := StrtoInt(aktDatumArray[1]);
     aktTag := StrtoInt(aktDatumArray[0]);

     // Falls Jahr nur mit zwei Ziffern angegeben ist
     if datumJahr < 100 Then
     begin
          // Jahr aufspalten und letzte zwei Ziffern mit dem aktuellen Jahr vergleichen
           if StrToInt(copy(aktDatumArray[2],3,4)) > datumJahr Then
           begin
                 datumJahr :=  2000 + datumJahr;
                 ShowMessage('True');
           end
           else begin
                datumJahr := 1900 + datumJahr;
           end;
     end;

     // Fallunterscheidung
     If ((aktMonat > datumMonat) OR ((aktMonat = datumMonat) AND (aktTag >= datumTag))) Then
        begin
             alter := IntToStr(aktJahr-datumJahr);
        end
        else begin
             alter := IntToStr(aktJahr-datumJahr-1);
        end;
     pnlAusgabe.Caption := 'Dein Alter ist ' + alter;
end;

Das Formular dazu sieht dann so aus: Formular running mit Objektinsprektor auf der linken Seite

Ist definitiv nicht schön, funktioniert aber.

Diese Antwort melden
geantwortet

Punkte: 10

 

Kommentar schreiben