C# For Dummies

Глава 11. Създаване и използване на обекти

1. Напишете програма, която прочита от конзолата година и проверява дали е високосна.

Упътване: Използвайте структурата DateTime.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter year: ");
    int year = Int32.Parse(Console.ReadLine());
    if ((((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)))
        Console.WriteLine("{0} is leap year.", year);
    else
        Console.WriteLine("{0} isn't a leap year.", year);
}

2. Напишете програма, която генерира и принтира на конзолата 10 случайни числа в интервала [100, 200].

Упътване: Използвайте класа Random. Можете да генерирате произволни числа в интервала [0, 100] и към всички да прибавите 100.
Решение:
static void Main(string[] args)
{
    Random r = new Random();
    for (int i = 0; i < 10; i++)
        Console.WriteLine(r.Next(100, 201));
}

3. Напишете програма, която извежда на конзолата кой ден от седмицата е днес.

Упътване: Използвайте структурата DateTime.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter year: ");
    int year = Int32.Parse(Console.ReadLine());
    Console.Write("Enter month: ");
    int month = Int32.Parse(Console.ReadLine());
    Console.Write("Enter day: ");
    int day = Int32.Parse(Console.ReadLine());
    
    DateTime dateValue = new DateTime(year, month, day);
    Console.WriteLine(dateValue.ToString("ddd"));
}

4. Напишете програма, която извежда на стандартния изход броя на дните, часовете и минутите, които са изтекли от включването на ком­пютъра до момента на изпълнението на програмата. За реализацията изпол­звайте класа Environment.

Упътване: Използвайте свойството Environment.TickCount, за да получите броя на изтеклите милисекунди. Използвайте факта, че в една секунда има 1000 милисекунди и пресметнете минутите, часовете и дните.

Решение:

5. Напишете програма, която по дадени два катета намира хипотенузата на правоъгълен триъгълник. Реализирайте въвеждане на дължините на катетите от стандартния вход, а за пресмятането на хипотенузата използвайте методи на класа Math.

Упътване: Хипотенузата на правоъгълен триъгълник се намира с помощта на известната теорема на Питагор: a2 + b2 = c2, където a и b са двата катета, а c е хипотенузата. Коренувайте двете страни, за да получите формула за дължината на хипотенузата. За реализацията на корену­ването използвайте метода Sqrt(…) на класа Math.

Решение:
static void Main(string[] args)
{
    Console.Write("First side: ");
    int a = Int32.Parse(Console.ReadLine());
    Console.Write("Second side: ");
    int b = Int32.Parse(Console.ReadLine());
    
    Console.Write("Hypotenuse is: " + Math.Sqrt(Math.Pow(a,2) + Math.Pow(b,2)));
}

6. Напишете програма, която пресмята лице на триъгълник по:
a. дължините на трите му страни;
b. дължината на една от страните и височината към нея;
c. дължините на две от страните му и ъгъла между тях в градуси.

Упътване: За първата подточка на задачата използвайте Хероновата формула:
, където .

За втората подточка използвайте формулата: .

За третата използвайте формулата: 

Решение:
Link
7. Дефинирайте свое собствено пространство Chapter11 и поставете в него двата класа Cat и Sequence, които използвахме в примерите на текущата тема. Направете още едно собствено пространство с име Chapter11.Examples и в него направете клас, който извиква класовете Cat и Sequence.

Упътване: Създайте нов проект във Visual Studio, щракнете с десния бутон върху папката му и изберете от контекстното меню Add -> New Folder. След като въве­дете име на папката и натиснете [Enter], щракнете с десния бутон върху новосъздадената папка и изберете Add -> New Item… От списъка изберете Class, за име на новия клас въведете Cat и натиснете [Add]. Подменете дефиницията на новосъздадения клас с дефиницията, която дадохме в тази тема. Направете същото за класа Sequence.

Решение:
Link
8. Напишете програма, която създава 10 обекта от тип Cat, дава им имена от вида CatN, където N e уникален пореден номер на обекта, и накрая извиква метода SayMiau() на всеки от тях. За реализацията използвайте вече дефинираното пространство Chapter11.

Упътване: Създайте масив с 10 елемента от тип Cat. Създайте в цикъл 10 обекта от тип Cat (използвайте конструктор с параметри), като ги присвоя­вате на съответните елементи от масива. За поредния номер на обек­тите използвайте метода NextValue() на класа Sequence. Накрая отново в цикъл изпълнете метода SayMiau() на всеки от елементите на масива.

Решение:
Link
9. Напишете програма, която пресмята броя работни дни между днешната дата и дадена друга дата след днешната (включително). Работните дни са всички дни без събота и неделя, които не са официални празници, като по изключение събота може да е работен ден, когато се отра­ботват почивни дни около празниците. Програмата трябва да пази списък от предварително зададени официални празници, както и списък от предварително зададени работни съботи.

Упътване: Използвайте класа System.DateTime и методите в него. Можете да завъртите цикъл от днешната дата (DateTime.Now.Date) до крайната дата, увеличавайки последователно деня чрез метода AddDays(1).

Решение:
Link

10. Дадена е последователност от цели положителни числа, записани едно след друго като символен низ, разделени с интервал. Да се напише програма, която пресмята сумата им. Пример: "43 68 9 23 318" = 461.

Упътване: Използвайте String.Split(' '), за да разцепите символния низ по интервалите, след което с Int32.Parse(…) можете да извлечете отделните числа от получения масив от символни низове.

Решение:
Link

11. Напишете програма, която генерира случайно рекламно съобщение за някакъв продукт. Съобщенията трябва да се състоят от хвалебст­вена фраза, следвани от хвалебствена случка, следвани от автор (първо и второ име) и град, които се избират от предварително подготвени списъци. Например, нека имаме следните списъци:
- Хвалебствени фрази: {"Продуктът е отличен.", "Това е страхотен продукт.", "Постоянно ползвам този продукт.", "Това е най-добрият продукт от тази категория."}.
- Хвалебствени случки: {"Вече се чувствам добре.", "Успях да се променя.", "Той направи чудо.", "Не мога да повярвам, но вече се чувствам страхотно.", "Опитайте и вие. Аз съм много доволна."}.
- Първо име на автор: {"Диана", "Петя", "Стела", "Елена", "Катя"}.
- Второ име на автор: {"Иванова", "Петрова", "Кирова"}.
- Градове: {"София", "Пловдив", "Варна", "Русе", "Бургас"}.
Тогава програма би могла да изведе следното случайно-генерирано рекламно съобщение:
Постоянно ползвам този продукт. Опитайте и вие. Аз съм доволна. -– Елена Петрова, Варна

Упътване: Използвайте класа System.Random и неговия метод Next(…).

Решение:
Link
12. Напишете програма, която изчислява стойността на даден числен израз, зададен като стринг. Численият израз се състои от:
- реални числа, например 5, 18.33, 3.14159, 12.6;
- аритметични оператори: +, -, *, / (със стандартните им приоритети);
- математически функции: ln(x), sqrt(x), pow(x,y);
- скоби за промяна на приоритета на операциите: ( и ).
Обърнете внимание, че числовите изрази имат приоритет, например изразът -1 + 2 + 3 * 4 - 0.5 = (-1) + 2 + (3 * 4) - 0.5 = 12.5.

Упътване: Задачата за пресмятане на числов израз е доста трудна и е малко вероятно да я решите коректно без да прочетете от някъде как се решава. За начало разгледайте статиите в Wikipedia за \"Shunting-yard algorithm\", която описва как се пре­образува израз от нормален в обратен полски запис (postfix notation), и статията за пресмятане на постфиксен израз .

Решение:
Link
← Обратно