Софтуерно Инженерство
Loading...
mihayloff14 avatar mihayloff14 825 Точки

Задача свързана с DateTime и if clause

Здравейте,

Една от задачите за домашно е следната:

Write a program to read your birthday from the console and print how old you are now and how old you will be after 10 years.

Успях да направя същественото, но се затруднявам с "доизглаждането" на програмата.
Кодът ми е следният:

using System;

class AgeAfter10yrs
 {
     static void Main()
    {
            string startdate;
            Console.WriteLine("Please, type in your birthdate (dd-mm-yyyy)");
            startdate = Console.ReadLine();
            DateTime bday = DateTime.Parse(startdate);
            DateTime now = DateTime.Now;
            TimeSpan ts1 = now.Subtract(bday);
            DateTime dt = new DateTime(0001, 01, 01);
            TimeSpan ts2 = new TimeSpan(365, 0, 0, 0);
            TimeSpan ts3 = new TimeSpan(3650, 0, 0, 0);
            dt = dt + ts1 - ts2;
            Console.WriteLine("Your current age is:{0}",dt.ToString("yy"));
            dt = dt + ts3;
            Console.WriteLine("Your Age after 10 years will be:{0}",dt.ToString("yy"));

     }
}

Върпросът ми е:
1. Как би трябвало да постъпя, за да може в случай, че се въведе различна стойност от (dd-mm-yyyy) да връща обратно към първоначалния случай? Очевидно е, че трябва if clause, но в случая стойността не е проста.

2. Въпреки че има малка вероятност (но все пак сме устремени към съвършенството), го има проблема с високосни години. Ако беше pascal, проблема би бил по-лесен (чрез mod), но очевидно тук не става по същия начин. Това е необходимо, за да се знае дали в уравнението да се използва като стойност, за даден ts(timespan) - 365 или 366.

 

Благодаря предварително за вниманието.

 

Тагове:
0
Programming Basics
aslv1 avatar aslv1 304 Точки

Трябва да сложиш въвеждането в цикъл - т. е. докато въведената дата не се „парсне“ успешно - продължаваш да искаш въвеждане.

Колкото до въпроса с годините, си напълно прав, например 1000 дни не може да се каже точно колко години са. Вече ти си решаваш как ще постъпваш - дали ще извеждаш броя на дните или ще даваш приблизителна оценка за годините.

0