DateTime YourBirthDay = DateTime.Parse(Console.ReadLine());
DateTime TimeNow = DateTime.Today;
int CurrentAge = TimeNow.Year - YourBirthDay.Year;
if (TimeNow.Month <= YourBirthDay.Month && TimeNow.Day <= YourBirthDay.Day)
{
Console.WriteLine("After 10 years you will be {0}", CurrentAge + 9);
}
else
{
Console.WriteLine("After then years you will be {0}", CurrentAge + 10);
}
Console.ReadLine();
Това е моето решение на задачата,мисля,че е най-удачно.
Първия път когато съм изтеглила домашната...
* Date after 10 Years
* Write a program to read your age from the console and print how old you will be after 10 years.
Тегля я сега
* Age after 10 YearsWrite 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.
и сега като съм си пратила домашната от първия вариант грешно ли е или правилно :д
http://pastebin.com/HzTetA9B
Доколкото разбрах от кодът ви искате да направите нещо подобно Цък
Substring замених с Split, string го направих на масив, текущата година промених на int и е взех с DateTime.Now.Year;
Задачата все още не е решена напълно, трябва да направите и проверка за ден, месец и да добавите на колко години ще сте след 10 години.
Може да има хора, които са изпратили предишния вариант и не са видели темата във форума. И като цяло да са имали вярна задача... а сега да не им отговаря на условието.
ЕДИТ: Пробвах със TimeSpan метода, но не ми извежда правилен резултат на конзолата ето го кода.
DateTime birthDay = DateTime.Parse(Console.ReadLine());TimeSpan difference = DateTime.Now.Subtract(birthDay);
Console.WriteLine(difference);
Ето още един вариант, малко по-подробен, но пак не успях да изчисля възрастта в зависимост и от датата, и от месеца.. Пресмятат се само според годината на раждане :(
ПП. Също така не знам дали try-catch блокът е нужен и дали изобщо е правилен, така че може да го игнорирате и да гледате само другата част от кода :D
http://pastebin.com/GRX8HSQU
EDIT: Оправих го.. Финалната работеща версия, може би малко по-тежка, отколкото би трябвало да е:
Колежке, благодаря за отговора ти към моя коментар от по-горе ! От него ми дойде на акъла съвсем малко по-различно решение отново на 3 реда! :)
DateTime birthDay = DateTime.Parse(Console.ReadLine());
TimeSpan difference = DateTime.Now.Subtract(birthDay);
Console.WriteLine(difference.Days/365);
Решение на 15 задача в 3 реда
Ето и пълния код http://pastebin.com/XmddH1Ha
това дето уж проверява грешен инпут - нищо не прави
{
//This was my first solution.It's also working but the algorithm is not right. :)
//Console.Write("Enter your age : ");
//int age = int.Parse(Console.ReadLine());
//Console.WriteLine("After 10 years you will be {0} years old.", age + 10);
//Second (right) solution :)
Console.Write("Please enter your birthday (YYYY-MM-DD) : ");
DateTime birthday = DateTime.Parse(Console.ReadLine());
int afterTenYears = (DateTime.Now.Year - birthday.Year) + 10;
Console.WriteLine("After 10 years you will be {0}.", afterTenYears);
}
За сигурност съм използвал и двата варианта :).На който му харесва може да разкоментира първия.
ЕТО ГО И МОЕТО РЕШЕНИЕ !
ДОСТА СЕ ПОИЗПОТИХ, ДА РОВЯ ИЗ ИНТЕРНЕТ, АМА СТАНА НАКРАЯ И ТО С НЯКОЛКО РЕДА САМО !
ПРОГРАМАТА МИ ИЗЧИСЛЯВА , ОСВЕН ГОДИНИТЕ И МЕСЕЦИТЕ И ДНИТЕ ОТ ВЪЗРАСТТА -САМО ЗА УПРАЖНЕНИЕ РАЗБИРА СЕ - НЕ Е НЕОБХОДИМО !
ВАРИАНТА С ДАДЕНАТА ДАТА НА РАЖДАНЕ :
using System;
using System.Globalization;
class AgeAfter10Years
{
static void Main()
{
//Problem 15. *
//Age after 10 Years
//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.
Console.WriteLine("How old you gonna be in 10 years? I'm going to tell you!");
Console.WriteLine();
Console.WriteLine("Type your birthday with numbers this way [month/day/year], then press [Enter]:" );
Console.WriteLine();
//birtday
string birthday = Console.ReadLine();
DateTime DateOfBirth = Convert.ToDateTime(birthday);
//today
DateTime DateToday = DateTime.Today;
// calculates years
TimeSpan AgeInDays = DateToday.Subtract(DateOfBirth);
double AgeInYears = AgeInDays.TotalDays / 365.25;
Console.WriteLine();
// calculates months
double Months = (AgeInYears - (int)AgeInYears) * 12;
// calculates days
double Days = (Months - (int)Months) * 24;
Console.WriteLine("You are now " + (int)AgeInYears + " years " + (int)Months
+ " months and " + (int)Days + " days" + " old.");
Console.WriteLine();
Console.WriteLine("After 10 years you'll be " + ((int)AgeInYears + 10) + " years "
+ (int)Months + " months and " + (int)Days + " days" + " old.");
Console.WriteLine();
Console.Read();
}
}
И РЕШЕНИЕТО МИ ПРИ ДУГОТО УСЛОВИЕ - ПРИ ДАДЕНА ВЪЗРАСТ
С ХВАЩАНЕ НА ВЪЗМОЖНИ ГРЕШКИ ПРИ ВЪВЕЖДАНЕТО НА ДАННИТЕ:
using System;
class ItCalculatesYourAgeAfter10Years
{
static void Main()
{
Console.WriteLine("Now, I am going to tell you, how old are you going to be, after 10 years. ");
Console.WriteLine();
Console.WriteLine("Type your age and then press <ENTER> ! ");
Console.WriteLine();
string line = Console.ReadLine();
Console.WriteLine();
int value;
if ((int.TryParse(line, out value)) & (value <= 100))
{
Console.WriteLine("Oh, so now you are " + value + " years old!");
Console.WriteLine();
Console.Write("That means, after 10 years you are going to be ");
Console.Write(value + 10);
Console.WriteLine(" years old! ");
}
else
if ((value > 100) & (value < 120))
{
Console.WriteLine("You are going to be in heaven my dear!");
}
else
{
Console.WriteLine("No jokes, please !");
Console.WriteLine();
Console.WriteLine("This is not a valid age !");
}
Console.ReadLine();
}
}
И РЕШЕНИЕТО МИ ПРИ ДУГОТО УСЛОВИЕ - ПРИ ДАДЕНА ВЪЗРАСТ :
using System;
class ItCalculatesYourAgeAfter10Years
{
static void Main()
{
Console.WriteLine("Now, I am going to tell you, how old are you going to be, after 10 years. ");
Console.WriteLine();
Console.WriteLine("Type your age and then press <ENTER> ! ");
Console.WriteLine();
string line = Console.ReadLine();
Console.WriteLine();
int value;
if ((int.TryParse(line, out value)) & (value <= 100))
{
Console.WriteLine("Oh, so now you are " + value + " years old!");
Console.WriteLine();
Console.Write("That means, after 10 years you are going to be ");
Console.Write(value + 10);
Console.WriteLine(" years old! ");
}
else
if ((value > 100) & (value < 120))
{
Console.WriteLine("You are going to be in heaven my dear!");
}
else
{
Console.WriteLine("No jokes, please !");
Console.WriteLine();
Console.WriteLine("This is not a valid age !");
}
Console.ReadLine();
}
}
Опитах това решение.Как точно трябва да се напише датата на раждане?
На мен ми дава Exception всеки път като пробвам.