Loading...
design.angelova avatar design.angelova 69 Точки

Ново решение на задачата за пресмятане на възрастта от домашно 1

Докато слушах и гледах видеото за Оператори и изрази ми хрумня как да подобря решението си на задачата за пресмятане на годините от домашно номер 1:, така че да стане малко по-интелигенто.

using System;
using System.Collections.Generic;

class AgeCalculation
{
static void Main()
{
Console.WriteLine("What is your birthay date? Please use FORMAT: dd.mm.yyyy");
string year = (Console.ReadLine().Substring(6));
int bornYear = int.Parse(year);
int currentYear = DateTime.Now.Year;
int age = currentYear - bornYear;
Console.WriteLine("Your age is " + age);
Console.WriteLine("After 10 years you'll be {0} years old", age + 10);

}
}

Ъпдейтнах си кода и прикачих отново домашното си. Правилна ли е тази методика, преди да е изтекъл срока за прикачване на конкретното домашно?

 

Тагове:
1
Programming Basics
Anonymous:
Duplicate of https://softuni.bg/forum/questions/details/34
dimitarstoyanov90 avatar dimitarstoyanov90 164 Точки

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

1
rodytooo avatar rodytooo 3 Точки

Щом имаш по-добро решение може да си го ъпдейтваш в системата, поради тази причина и бутона за качване на домошно е още активен.:)

1
mzografski avatar mzografski 189 Точки

Ами не е най-добрия вариант,  защото аз, например,  след точно 10 години на днешната дата още няма да съм навършил годините. Така че помисли за проверка и за това,  дали днешната дата е преди или след датата на раждане. Хинт: всеки DateTime обект има член DayOfYear. 

Поздрави. 

7
vladeto87 avatar vladeto87 9 Точки

Моят код е подобен.

using System;


class ageafter10Years
{
      static void Main()
      {
              Console.WriteLine("Enter your birth date:");
              int birthdate = int.Parse(Console.ReadLine());
              int youragenow = (DateTime.Today.Year) - birthdate;
              int agein10years = (DateTime.Today.Year + 10) - birthdate;
              Console.WriteLine("You are {0} years old", youragenow);
              Console.WriteLine("In ten years you will be {0}", agein10years);
       }
}

 

Работи само като въведеш година на раждане.  Как да го оправя, за да работи с дата.

 

 

0
petio.bs avatar petio.bs 50 Точки

Понеже използваш int няма как да ти прочете датата като целочислено число. използвай DateTime. Това е моето решение :
        Console.WriteLine("Type in your birth date (YYYY.MM.DD):");
        DateTime BirthDate = DateTime.Parse(Console.ReadLine());
        DateTime CurrentDate = DateTime.Today;
        int Age = CurrentDate.Year - BirthDate.Year;
        if(CurrentDate.Month <= BirthDate.Month && CurrentDate.Day < BirthDate.Day)
            Console.WriteLine("You are now {0} years old and in 10 years you will be {1} years old.", Age - 1, Age + 9);
        else
            Console.WriteLine("You are now {0} years old and in 10 years you will be {1} years old.", Age, Age + 10);

0
vladeto87 avatar vladeto87 9 Точки

petio.bs, тествах твоя код и работи, но има един проблем. Независимо кой месец въведа, винаги ми показва един и същ резултат, ако рожденият ден не ти е минал, трябва да показва резултата - 1, защото не си ги навършил все още. Който знае как да го оправим, нека сподели плс.

1
Fleshian avatar Fleshian 379 Точки

Тук е моето решение в Pastebin


Напрвил съм един логически оператор който преведен с думи проверява:
Ако месеца в койото съм роден е по-голям от сегашния месец значи все още не съм навършил възраста която трябва да навърша през годината и му казавам age--; ИЛИ
ако месеца ми на раждане е същия с месеца който е сега И сегашния ден е по малък от деня ми на раждане пак му казвам age--
Така че ако датата е по-голяа от рожденната значи съм навършил годните и след 10 години ще бъда точно на вързаста ми + 10; 

4
TodorovH avatar TodorovH 216 Точки

По-горе е обяснено как от mzografski!

0
petio.bs avatar petio.bs 50 Точки

Оправих си задачата : цък

Все пак мисля, че решението на Fleshian е по - добро.

0
vgrozev avatar vgrozev 0 Точки

Със DateTime може да се ползват всякакви по-известни формати като: mm/dd/yyyy, mm.dd.yyyy, dd Month yyyy, Month dd yyyy….. и т.н. Само че нас ни интересува само годината и без това :-))

 

ето едно друго ресхение:

class AgeAfterTenYears
{
    static void Main()
    {
        Console.Write("Please enter your birthday in any of the popular formats: ");

        DateTime birthDate = DateTime.Parse(Console.ReadLine());
        Console.WriteLine("\n");

        int currentAge = DateTime.Now.Year - birthDate.Year;

        Console.WriteLine("Your current age is: {0} years old.\n", currentAge);
        Console.WriteLine("After 10 years you will be {0} years old.\n", currentAge + 10);
     }
}

0
tsv.georgieva avatar tsv.georgieva 35 Точки

Ето го и моето решение. Сложила съм коментари и съм дала пример. :)

using System;

class AgeAfterTenYears
{
static void Main()
{


//Reading your birthday
//For example 18.03.1990
Console.Write("Enter your birthday:");
DateTime birthday = DateTime.Parse(Console.ReadLine());

 

//Creating a variable with today's date
//For example 14.03.2014
DateTime today = DateTime.Today;

 

//Caluculating your age
//age = 2014 - 1990 = 24
int age = today.Year - birthday.Year;

 

//If yor birthdate is bigger than today's date minus your age, 1 is substracted from your age
// 18.03.1990 > 14.03.1990, so your age is 23, not 24
if (birthday > today.AddYears(-age)) age--;

//Printing how old you are now
//23
Console.WriteLine("You are {0} years old today.",age);

//Printing your age after 10 years
//33
Console.WriteLine("You will be {0} years old in 10 years", age+10);
}
}

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.