C# For Dummies

Глава 4. Вход и изход от конзолата


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

Упътване: Използвайте методите Console.ReadLine() и Int32.Parse().

Решение:
static void Main(string[] args)
{
    Console.Write("Enter radius: ");
    int a = Int32.Parse(Consle.ReadLine());
    Console.Write("Second number: ");
    int b = Int32.Parse(Consle.ReadLine());
    Console.Write("Third number: ");
    int c = Int32.Parse(Consle.ReadLine());
    Console.WriteLine("Result is {0}", a + b + c);
}

2. Напишете програма, която чете от конзолата радиуса "r" на кръг и отпечатва неговия периметър и обиколка.

Упътване: Използвайте константата Math.PI и добре известните формули от планиметрията.

Решение:
static void Main(string[] args)
{
    Console.Write("Enter radius: ");
    int r = Int32.Parse(Consle.ReadLine());
    Console.WriteLine("P is {0} and S is {1}", 2 * Math.PI * r, Math.PI * r * r);
}

3. Дадена фирма има име, адрес, телефонен номер, факс номер, уеб сайт и мениджър. Мениджърът има име, фамилия и телефонен номер. Напишете програма, която чете информацията за фирмата и нейния мениджър и я отпечатва след това на конзолата.

Упътване: Форматирайте текста с Write(…) или WriteLine(…).

Решение:
Link
4. Напишете програма, която отпечатва три числа в три виртуални колони на конзолата. Всяка колона трябва да е с широчина 10 символа, а числата трябва да са ляво подравнени. Първото число трябва да е цяло число в шестнадесетична бройна система, второто да е дробно положи­телно, а третото – да е дробно отрицателно. Последните две числа да се закръглят до втория знак след десетичната запетая.

Упътване: Използвайте форматиращите настройки, предоставени от съставното форматиране и метода Console.WriteLine().

Решение:
static void Main(string[] args)
{
    int hexNum = 2015;
    Console.WriteLine("|0x{0,-8:X|", hexNum);
    double fractNum = -1.856;
    Console.WriteLine("|0,-10:f2}|", fractNum);
}

5. Напишете програма, която чете от конзолата две цели числа (int) и отпечатва, колко числа има между тях, такива, че остатъкът им от деленето на 5 да е 0. Пример: в интервала (17, 25) има 2 такива числа.

Упътване: Има два подхода за решаване на задачата:
Първи подход: Използват се математически хитрини за оптимизирано изчисляване, базирани на факта, че всяко пето число се дели на 5.
Вторият подход е по-лесен, но работи по-бавно. Чрез for цикъл може да се провери всяко число в дадения интервал. За целта трябва да прочетете от Интернет как се използва for цикъл.

Решение:
static void Main(string[] args)
{
    int counter = 0;
    
    Console.Write("Enter first number: ");
    int a = Int32.Parse(Console.ReadLine());
    Console.Write("Enter second number: ");
    int b = Int32.Parse(Console.ReadLine());
    
    for (int i = a; i <= b; i++)
    {
        if (i % 5 == 0) counter++;
    }
    
    Console.WriteLine("{0} numbers found.", counter);
}

6. Напишете програма, която чете две числа от конзолата и отпечатва по-голямото от тях. Решете задачата без да използвате условни конструкции.

Упътване: По-голямото от двете числа можете да намерите с функцията Math.Max(a, b), а по-малкото с Math.Min(a, b).

Решение:
static void Main(string[] args)
{    
    Console.Write("Enter first number: ");
    int a = Int32.Parse(Console.ReadLine());
    Console.Write("Enter second number: ");
    int b = Int32.Parse(Console.ReadLine());
    
    Console.WriteLine("{0} >= {1}", Math.Max(a, b), Math.Min(a, b));
}

7. Напишете програма, която чете пет числа и отпечатва тяхната сума. При невалидно въведено число да се подкани потребителя да въведе друго число.

Упътване: Можете да прочетете числата в пет различни променливи и накрая да ги сумирате. При парсване на поредното число използвайте условно парсване с TryParse(…). При въведено невалидно число повторете четенето на число. Можете да сторите това чрез while цикъл с подходящо условие за изход. За да няма повторение на код, можете да раз­гледате конструк­цията за цикъл "for".

Решение:
Link
8. Напишете програма, която чете пет числа от конзолата и отпечатва най-голямото от тях.

Упътване: Трябва да използвате конструкцията за сравнение "if", за която можете да прочетете в Интернет.

Решение:
Link
9. Напишете програма, която чете коефициентите a, b и c от конзолата и решава уравнението: ax2+bx+c=0. Програмата трябва да принтира реалните решения на уравнението на конзолата.

Упътване: Използвайте добре познатия метод за решаване на квадратни уравнения. Разгледайте внимателно всички възможни случаи.

Решение:
Link
10. Напишете програма, която прочита едно цяло число n от конзолата. След това прочита още nна брой числа от конзолата и отпечатва тяхната сума.

Упътване: Четете числата едно след друго и натрупвайте тяхната сума в променлива, която накрая изведете на конзолата.

Решение:
static void Main(string[] args)
{    
    int sum = 0;
    
    Console.Write("Enter numbers count: ");
    int length = Int32.Parse(Console.ReadLine());
    
    for (int i = 0; i < length; i++)
    {
        Console.Write("Enter {0} number: ", i + 1);
        sum += Int32.Parse(Console.ReadLine());
    }
    
    Console.WriteLine("Sum of all numbers is {0}.", sum);
}

11. Напишете програма, която прочита цяло число n от конзолата и отпечатва на конзолата всички числа в интервала [1…n], всяко на отделен ред.

Упътване: Използвайте комбинация от цикли и методите Console.ReadLine(),Console.WriteLine() и Int32.Parse().

Решение:
static void Main(string[] args)
{    
    int sum = 0;
    
    Console.Write("Enter number: ");
    int length = Int32.Parse(Console.ReadLine());
    
    for (int i = 1; i <= length; i++)
    {
        Console.WriteLine(i);
    }    
}

12. Напишете програма, която отпечатва на конзолата първите 100 числа от редицата на Фибоначи: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ...

Упътване: За решение на задачата използвайте 2 временни променливи, в които да пазите последните 2 пресметнати стойности и с цикъл пресмятайте останалите (всяко следващо число в редицата е сума от последните две).

Решение:
static void Main(string[] args)
{    
    int num1 = 0;
    int num2 = 1;
    int sum = 1;
    int count = 0;
    
    Console.WriteLine(num1);
    
    while(count < 100)
    {
        sum = num1 + num2;
        num1 = num2;
        num2 = sum;
        Console.WriteLine(num2);
        count++;
    }
}

13. Напишете програма, която пресмята сумата (с точност до 0.001):1 + 1/2 - 1/3 + 1/4 - 1/5 + ...

Упътване: Натрупвайте сумата в променлива с цикъл и пазете старата сума, докато разликата между двете суми стане по-малка от точността (0.001).

Решение:
static void Main(string[] args)
{    
    Console.Write("Enter last number: ");
    int length = Int32.Parse(Console.ReadLine());
    double sum = 1.0;
    
    for (int i = 2; i <= length; i++)
    {
        sum += (1.0 / i);
    }
    
    Console.WriteLine("{0:F3}", sum);
}

← Обратно