C# For Dummies

Глава 9. Методи

1. Напишете метод, който при подадено име отпечатва в конзолата "Hello, !" (например "Hello, Peter!" ).

Упътване: Използвайте метод с параметър string. Ако ви е интересно, вместо да правите програма, която да тества дали даден метод работи коректно, можете да потърсите в Интернет информация за "unit testing" и да си напишете собствени unit тестове върху методите, които създавате. За всички добри софтуерни продукти се пишат unit тестове.

Решение:
class Program
{
    static void ReturnName(string name)
    {
        Console.WriteLine("Hello {0}", name);
    }
    
    static void Main(string[] args)
    {
        Console.Write("Enter name: ");
        ReturnName(Console.ReadLine());
    }
}

2. Създайте метод GetMax() с два целочислени (int) параметъра, който връща по-голямото от двете числа. Напишете програма, която прочита три цели числа от конзолата и отпечатва най-голямото от тях, изпол­звайки метода GetMax().

Упътване: Използвайте свойството Max(a, b, c) = Max(Max(a, b), c).

Решение:
Link
3. Напишете метод, който връща английското наименование на послед­ната цифра от дадено число. Примери: за числото 512 отпечатва "two"; за числото 1024 – "four".

Упътване: Използвайте остатъка при деление на 10 и switch конструкцията.

Решение:
Link
4. Напишете метод, който намира колко пъти дадено число се среща в даден масив. Напишете програма, която проверява дали този метод работи правилно.

Упътване: Методът трябва да приема като параметър масив от числа (int[]) и търсеното число (int).

Решение:
Link
5. Напишете метод, който проверява дали елемент, намиращ се на дадена позиция от масив, е по-голям, или съответно по-малък от двата му съседа. Тествайте метода дали работи коректно.

Упътване: Елементите на първа и последна позиция в масива, ще бъдат сравнявани съответно само с десния и левия си съсед.

Решение:
Link
6. Напишете метод, който връща позицията на първия елемент на масив, който е по-голям от двата свои съседи едновременно, или -1, ако няма такъв елемент.

Упътване: Модифицирайте метода, имплементиран в предходната задача.

Решение:
Link
7. Напишете метод, който отпечатва цифрите на дадено десетично число в обратен ред. Например 256, трябва да бъде отпечатано като 652.

Упътване: Има два начина:
Първи начин: Нека числото е num. Докато num ≠ 0 отпечатваме последната му цифра (num % 10) и след това разделяме num на 10.
Втори начин: преобразуваме числото в string и го отпечатваме отзад напред чрез for цикъл.

Решение:
Link
8. Напишете метод, който пресмята сумата на две цели положителни цели числа. Числата са представени като масив от цифрите си, като последната цифра (единиците) са записани в масива под индекс 0. Направете така, че метода да работи за числа с дължина до 10 000 цифри.

Упътване: Трябва да имплементирате собствен метод за умножение на големи числа. На нулева позиция в масива пазете единиците, на първа позиция – десетиците и т.н. Когато събирате 2 големи числа, единиците на сумата ще е (firstNumber[0] + secondNumber[0]) % 10, десетиците ще са равни на (firstNumber[1] + secondNumber[1]) % 10 + (firstNumber[0] + secondNumber[0])/10 и т.н.

Решение:
Link
9. Напишете метод, който намира най-големия елемент в част от масив. Използвайте метода за да сортирате възходящо/низходящо даден масив.

Упътване: Първо напишете метод, който намира максималния елемент в целия масив, и след това го модифицирайте да намира такъв елемент от даден интервал.

Решение:
Link
10. Напишете програма, която пресмята и отпечатва n! за всяко n в интервала [1…100].

Упътване: Трябва да имплементирате собствен метод за умножение на големи цели числа, тъй като 100! не може да се събере в long. Можете да представите числата в масив в обратен ред, с по една цифра във всеки елемент. Например числото 512 може да се представи като {2, 1, 5}. След това умножението можете да реализирате, както сте учили в училище (умножавате цифра по цифра и събирате резултатите с отместване на разрядите).
Друг, по-лесен вариант да работите с големи числа като 100!, е чрез библиотеката System.Numerics.dll, която можете да използвате в проектите си като преди това добавите референция към нея. Потърсете информация в Интернет как да използвате библиотеката и класът System.Numerics.BigInteger.

Решение:
Link
11. Напишете програма, която решава следните задачи:
- Обръща последователността на цифрите на едно число.
- Пресмята средното аритметично на дадена поредица от числа.
- Решава линейното уравнение a * x + b = 0.
Създайте подходящи методи за всяка една от задачите.
Напишете програмата така, че на потребителя да му бъде изведено текстово меню, от което да избира коя от задачите да решава.
Направете проверка на входните данни:
- Десетичното число трябва да е неотрицателно.
- Редицата не трябва да е празна.
- Коефициентът a не трябва да е 0.

Упътване: Създайте първо необходимите ви методи. Менюто реализирайте чрез извеждане на списък от номерирани действия (1 - обръщане, 2 - средно аритметично, 3 - уравнение) и избор на число между 1 и 3.

Решение:
Link

← Обратно