Advertisement
Guest User

Age After X Years

a guest
Apr 5th, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.12 KB | None | 0 0
  1. using System;
  2.  
  3. public class HappyBirthday
  4. {
  5.     public static void Main()
  6.     {
  7.         string AgeNowStr; // Тук потребителя въвежда на колко години е в момента//
  8.         int AgeNow; // При коректно въведено число, то се задава на тази променлива//
  9.         int AgeLater; // Това ще е възрастта му след X години//
  10.         string BirthdayAlready;// Тук потребителят въвежда дали вече е имал рожден ден през тази година//
  11.         int HasOrNot = -1; // Това ще е стойност 0 ако е имал рожден ден през тази година и стойност 1 ако е имал рожден ден през тази година//
  12.         // -1 тук ще значи, че още не сме й присвоили стойност
  13.         int XYears; // Това ще е КОРЕКТНИЯТ на потребителя за колко години да се пресметне//
  14.         string XYearsStr; //Това ще е изборът на потребителя за колко години да се пресметне//
  15.         bool isNumber; // Проверка дали въведеното от потребителя е число//
  16.  
  17.         Console.WriteLine("Здравейте!");   //Поздравяваме потребителя//
  18.  
  19.         //AskAgeAgain:    // Тук ще го връщаме, докато се научи да познава числата//
  20.         do
  21.         {
  22.             AskForAge(out AgeNowStr, out AgeNow, out isNumber);
  23.  
  24.             // Проверяваме дали е число и ако е, го задаваме като стойност на AgeNow//
  25.             if (!isNumber)
  26.             {
  27.                 Console.WriteLine("Хайде да не се бъзикаме от самото начало? Годините се въвеждат с числа!");
  28.             }
  29.  
  30.             else if (isNumber && AgeNow <= 0 && AgeNow >= -40)  // Проверяваме дали не е въведено отрицателно число в границата до -40 //
  31.             {
  32.                 Console.WriteLine("Вероятно още сте в студентските гащи на баща си. Вижте си ЕГН-то и въведете отново!");  // Ако се е объркал го подсещаме //
  33.                 //goto AskAgeAgain; // И го връщаме да пробва пак //
  34.             }
  35.  
  36.             // Явно става все по-умен, нека върви напред! //
  37.             else if (AgeNow <= 7 && AgeNow >= 1)   // Проверяваме дали не е прекалено малък за да може да пише (7 е примерна година) //
  38.             {
  39.                 Console.WriteLine("Малкия, още не си се научил да четеш, а вече пишеш! Вашите ще ти се карат, кажи на кака ти да седне пред компютъра!");                
  40.                 //goto AskAgeAgain;
  41.             }
  42.             else if (AgeNow >= 99 && AgeNow <= 100)   // Проверяваме дали не е столетник //
  43.             {
  44.                 Console.WriteLine("Евала! На тези години, с тази пенсия и пред компютър? Страхотно! Сигурно ли е, че имате пулс?");
  45.                 //goto AskAgeAgain; // Връщаме го да си преброи годините пак //
  46.             }
  47.             else if (AgeNow <= -41 || AgeNow >= 101)  // Проверяваме дали не е въведено прекалено голямо число (отрицателно или положително и е примерно) //
  48.             {
  49.                 Console.WriteLine("Сигурни ли сте, че можете да броите до толкова? Ако цифрата е вярна, щяхте да сте в Гинес, а не пред компютъра!");  // Ако се е объркал го подсещаме //
  50.                 //goto AskAgeAgain; // И го връщаме да пробва пак //
  51.             }
  52.             else if (AgeNow < int.MinValue || AgeNow > int.MaxValue )
  53.             {
  54.                 Console.WriteLine("Струва си и за този случай да се измисли някакво оригинално съобщение :) ");
  55.             }
  56.  
  57.             //goto AskAgeAgain; // Връщаме потребителя в началото докато не въведе число //
  58.         } while (!isNumber || AgeNow < 7 || AgeNow > 98);
  59.  
  60.         // AskBirthAgain:  // Тук ще го връщаме, когато натисне нещо различно от Y или N! //
  61.         BirthdayAlready = AskForBirthday();
  62.        
  63.         if (BirthdayAlready == "Y") // Проверяваме дали е натиснал Y //
  64.         {
  65.             HasOrNot = 0;  // goto WrongLimit;
  66.         } // Ако го е направил, задаваме стойност 0 на HasOrNot, защото пресметнатите години ще са валидни за цялата търсена година //
  67.         else if (BirthdayAlready == "N") // Проверяваме дали е натиснал N //
  68.         {
  69.             HasOrNot = 1; // goto WrongLimit;
  70.         }      // Задаваме стойност  1 за да я ползваме като добавка при пресмятането след избраните години. Като добавим 1 ще покажм на колко ще е в края на търсената година, а не просто по същото време//
  71.         else
  72.         {
  73.             Console.Write("Изрично упоменах Y или N! Я, да опитаме пак дали познаваш буквите!"); // Подсещаме го, че трябва да натисне Y или N //
  74.             BirthdayAlready = AskForBirthday();
  75.             //goto AskBirthAgain; // И го връщаме обратно //
  76.         }
  77.  
  78.         //WrongLimit: // Тук ще го връщаме ако въведе некоректни стойности //
  79.         do
  80.         {
  81.             isNumber = AgeAfterXYears(isNumber, out XYears, out XYearsStr);
  82.             if (!isNumber)          // Тук правим проверка дали изобщо е въвел число//
  83.             {
  84.                 Console.WriteLine("Май споменах число? Опитайте пак!");;
  85.                 //goto WrongLimit; // Връщаме потребителя в началото докато не въведе число //
  86.             }
  87.  
  88.             else if (XYears >= 100)         // Проверка дали не иска да живее прекалено дълго:) //
  89.             {
  90.                 Console.WriteLine("Не че съм песимист ама след толкова години дали ще си пишем отново за да видим дали съм сметнал вярно? Хайде от мен да мине столетнико!");
  91.             }
  92.  
  93.             else if (XYears < 0)         // Проверка дали не иска да се подмлади :) //
  94.             {
  95.                 Console.WriteLine("Не че съм песимист ама ... и тук едно оригинално съобщение");
  96.             }
  97.  
  98.         } while (!isNumber || XYears < 0);
  99.                        
  100.             if (HasOrNot == 1)            // роверка дали ще има рожден ден в тази година след пресмятането или ще е минал! //
  101.             {
  102.                 AgeLater = AgeNow + XYears;   // Задаваме възраст по същото време след избраните години //
  103.                 Console.WriteLine("След " + XYears + " години по същото време ще сте на " + AgeLater + " години.");
  104.                 AgeLater = AgeNow + XYears + HasOrNot;     // Добавяме 1-ца за да му кажем на колко ще е в края на годината //
  105.                 Console.WriteLine("Все пак в края на годината ще сте на " + AgeLater + " години, така че не забравяйте да почерпите!");
  106.                 Console.WriteLine("Сега Ви благодаря, че ми загубихте времето с тази толкова важна за Вас информация. Хайде със здраве!");    // Вадим съобщение и го изпращаме по живо, по здраво //
  107.             }
  108.             else if (HasOrNot == 0)
  109.             {
  110.                 AgeLater = AgeNow + XYears;        // Задаваме възраст по същото време след избраните години. Няма да събираме с нищо,зщото по това време рождения му ден ще е минал //
  111.                 Console.WriteLine("След " + XYears + " години по същото време ще сте на " + AgeLater + " години.");
  112.                 Console.WriteLine("Сега Ви благодаря, че ми загубихте времето с тази толкова важна за Вас информация. Хайде със здраве!");
  113.             }
  114.     }
  115.  
  116.     private static string AskForBirthday()
  117.     {
  118.         string BirthdayAlready;
  119.         Console.Write(" Имахте ли вече ЧРД тази година? Въведете Y за ДА  или N  за НЕ "); // Питаме дали вече е имал ЧРД за да изведем точни години по-късно //
  120.         BirthdayAlready = Console.ReadLine();    // Задаваме въведеното на BirthdayAlready //
  121.         return BirthdayAlready;
  122.     }
  123.  
  124.     private static void AskForAge(out string AgeNowStr, out int AgeNow, out bool isNumber)
  125.     {
  126.         Console.Write(" На колко години сте? Не се притеснявайте, няма да кажа на никого! ");    // Искаме от потребителя да въведе възрастта си//
  127.         AgeNowStr = Console.ReadLine();       // Задаваме въведената информация на string AgeNowStr//
  128.         isNumber = int.TryParse(AgeNowStr, out AgeNow);
  129.     }
  130.  
  131.     private static bool AgeAfterXYears(bool isNumber, out int XYears, out string XYearsStr)
  132.     {
  133.         Console.Write("След колко години искате да пресметна възрастта Ви? "); // Очакваме избора на потребителя за колко време да пресметнем //
  134.         XYearsStr = Console.ReadLine(); // Задаваме на XYearsStr въведеното от него//
  135.         isNumber = int.TryParse(XYearsStr, out XYears); // Проверяваме дали е число и ако да - задаваме го на XYears //
  136.         return isNumber;
  137.     }
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement