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
← Обратно