четвъртък, 14 февруари 2013 г.

Android: Полезни приложения и уиджети - част 2

В тази публикация ще продължа темата за полезните приложения за операционната система Андроид. Първата част от темата може да намерите тук.

KingsoftOffice- безплатно офис приложение за Андроид. С помощта му може да се четат, редактират и създават word, excel и power point документи и презентации. Като допълнение може да се разглеждат и pdf файлове.

Moon+Reader – приложение за четене на електронни книги. Поддържаните формати са epub, mobi, chm, cbr, cbz, umd, fb2, txt и html. Приложението има безплатна и платена версия. При платената версия няма реклами и като допълнение има поддръжка за pdf файлове. Поддръжката за pdf файлове включва попълване на форми. Всички други допълнителни възможности може да се видят в Google Play.

MX Playerедин от най-добрите плеъри мултимедийни плеъри за Android. Едно от основните му предимства е възможността за многоядрено декодиране. Чете всякакви видео формати и всякакви субтитри. Също като при BS player и тук има пачове за различни видове процесори. В платената версия няма реклами.

RealCalc – много добър калкулатор включващ множество функции.  Калкулатора може да работи с двоични, осмични, десетични и шестнайсетични числа. Има си тригонометрични функции и побитови операции. Приложението с нищо не отстъпва на сайънтифик калкулаторите. Приложението има и платена версия.

SenseAnalog Clock – най-добрия безплатен комбиниран уиджет за часовник и прогноза за времето. Като допълнение приложението може да показва данни за свободната рам памет, свободно място на вътрешната памет и SD картата, нивото и температурата на батерията.

SkyDriveприложение за Cloud услугата на Microsoft. На мен лично SkyDrive най-много ми допада най-вече заради размера безплатно място за съхранение на файлове, което е 7GB. Google Drive и DropBox предлагат значително по-малко безплатно място. Основното, за което използвам SkyDrive е бекъп на всичко което правя в академията.

SmartToоls – полезно приложение с множество инструменти за измерване на най-различни величини. С приложението могат да се измерват дължина, ъгли, дистанция и ново на шума. Като допълнение има и нивелир и компас. Приложението е платено.

Songkick – едно много интересно приложение с което може да следите  турнетата на любимите си банди. Приложението сканира всичката музика в Android  устройството и изготвя списък на изпълнителите. След тази процедура много лесно може да се следят всички изпълнители и да се направи списък с мероприятията, които искаме да посетим. Друга опцията е проследяването на събития за даден град. Тази опция е много полезна за следене на събитията в града в който живеем.

TuneinRadio приложение за слушане на онлайн радиостанции. Радиостанциите могат да се сортират по различен критерии като музика, новини, спорт и други. Приложението прави и списък с най-често слушаните радио станции. В платената версия има и опция за запис на това което слушаме.

WifiAnalyzer – приложение с което може да анализираме безжичните мрежи около нас. Приложението е много полезно когато имаме доста мрежи наоколо и искаме да изберем най-малко натоварения канал.

Тъй като тенденцията е към увеличаване на броя на приложенията в Google Play няма как да изредя всяко едно приложение, което ми е направило впечатление. С течение на времето когато натрупам още впечатления от нови и полезни приложения ще ги споделя.

понеделник, 28 януари 2013 г.

Android: Полезни приложения и уиджети

Мобилната платформа на Google набира все повече популярност и предлага все повече функционалности. След 10 версии на операционната и над 700 000 приложения в Google Play става все по-трудно да бъдат открити наистина добрите приложения. Въпреки стотиците класации на приложения в интернет, винаги се намират и доста добри приложения извън тези класации. В Google Play редовно има намаления на платени приложения и така човек може да си купи стойностни приложения на добра цена. След натрупан няколко годишен опит с платформата реших, че е време да споделя приложенията, които използвам ежедневно и които ми улесняват живота многократно.

920  Text Editorтекстов редактор, който  е доста удобен за четене на код на различни езици.  Поддържани езици са C, C++, C#, Java, Javascript,PHP, HTML и още доста други. Писането е доста трудно, но не и невъзможно, но само за много дребни корекции по кода. Това е най-доброто приложение на темата, което намерих в Google Play.

AppCache CleanerЕдно много полезно приложение, което изчиства кеша, който трупат инсталираните приложения. При повече инсталирани приложения това приложение може да освободи около 100-150MB. Много е полезно за телефони, които нямат слот за SD карти.

aTorrent – най-добрия безплатен торент клиент за мен с множество настройки. Има опция за автоматично включване с пускането на телефона(таблета), опция за сваляне само през Wi-Fi или сваляне когато е включен към ток. Последното е полезно тъй като свалянето точи доста бързо батерията. Интерфейса е доста опростен и има доста опции за сортиране на торентите. Приложението има и платена версия в която няма реклами.

AVGFree – безплатна антивирусна програма от AVG. До сега не съм имал проблеми с вируси за Андроид и не знам дали това е най-доброто приложение. От към опции доста са се постарали. Освен стандартните опции, които предлага всяка една антивирусна програма в тази има Task Killer, Battery Consumption, Data Usage, App Locker.  Друго което предлага програмата е Anti-Theft опция. Чрез нея може да се локализира телефона ако е пуснат GPS-а, да се заключи дистанционно или да се изтрият данните от устройството от разстояние.

BSPlayer Free – добре познатият медия плеър. Възпроизвежда всякакви аудио и видео формати и няма никакви проблеми с четенето на субтитри във формат str, txt и sub. Има поддръжка за двуядрени и четириядрени процесори и поддържа хардуерно ускорение. Хубавото при този плеър е че има пачове за различни поколения ARM процесори. Има и платена версия в която няма реклами.

BulgariaAndroid – приложение, което събира на едно място всички български приложения в Google Play. Приложенията могат да се избират по различни категории.

CallMeter 3G – едно безкрайно полезно приложение с помощта на което може да се следи месечния тарифен план. Могат да се наблюдават входящите и изходящите минути, SMS-и и изразходвания мобилен интернет. Към приложението има и уиджети с които всичката информация за мобилния план е на едно скролване разстояние.

ColorNoteприложение и уиджет с помощта на които може да се създават бележки, списъци и ToDo листове. Уиджета е  в няколко различни размера и дава възможност за избор в зависимост от свободното налично място на десктопа.

ESFile Explorer -  един от най-добрите файлови мениджъри за Андроид. Приложението освен файлов мениджър разполага и с мениджър на инсталираните програми, клауд клиент, FTP клиент и Samba клиент. Приложението има и вграден плеър за аудио и видео файлове.

Free Internet – приложение, което помага за намирането на отключени Wi-Fi мрежи в България. Като допълнение при намиране на избрана точка приложението може да предложи най-кратък маршрут до нея.

HDWidgets – уиджети показващи час, дата, прогноза за времето и различни системни показатели. Уиджетите са съвместими както с телефони, така и с таблети тъй като се предлагат в различни размери. За момента има само платена версия.

JuiceDefender – приложение за подобряване и оптимизиране на живота на батерията. За съжаление Android устройствата нямат много добър живот на батерията и едно такова приложение дава възможност за оптимизиране на системата и постигане на по-добър живот на батерията. Приложението има три версии: безплатна, плюс, и ултимейт. В безплатната версия са активни Balanced и Aggressive профилите,  а в другите две версии има и Extreme профил. Приложението има доста опции за контрол за различни опции на операционната система. Някои възможности на приложението изискват root.

Това са само част от нещата, които използвам ежедневно. В най-скоро време ще напиша и за останалите приложения, които използвам. Към момента приложенията вървят на версия 4.2.1. и не съм срещал много проблеми. Тъй като с последния ми апарат съм минал през всички версии от Андроид 4.0.3 насам мога да кажа, че приложенията редовно се ъпдейтват, за да могат да вървят безпроблемно с най-новата и актуална версия на операционната система.

сряда, 16 януари 2013 г.

C#: Loops

Лекцията за цикли е последната от първата част от обучението по C#. В домашното има няколко задачи, които изчисляват факториели и много трябва да се внимава с тях, тъй като лесно може да препълнят използвания тип данни. Видео и материали от лекцията могат да бъдат намерени тук.

1. Write a program that prints all the numbers from 1 to N.
using System;

class PrintNumbersFromOneToN
{
    static void Main()
    {
        Console.WriteLine("Enter one number");
        int number = int.Parse(Console.ReadLine());
        for (int i = 1; i <= number; i++)
        {
            Console.WriteLine(i);
        }
    }
}

2. Write a program that prints all the numbers from 1 to N, that are not divisible by 3 and 7 at the same time.
using System;

class PrintNumbersFromOneToNNotDivisibleByThreeAndSeven
{
    static void Main()
    {
        Console.WriteLine("Enter a number: ");
        int number = int.Parse(Console.ReadLine());
        for (int i = 1; i <= number; i++)
        {
            if (i % 3 != 0 && i % 7 != 0)
            {
                Console.WriteLine(i);
            }
        }
    }
}

3. Write a program that reads from the console a sequence of N integer numbers and returns the minimal and maximal of them.
using System;

class MinimalAndMaximalOfNIntigerNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter the count of numbers:");
        int number = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a number:");
        int currentNumber = int.Parse(Console.ReadLine());
        int minNumber;
        int maxNumber;
        minNumber = maxNumber = currentNumber;
        for (int i = 1; i < number; i++)
   {
                Console.WriteLine("Enter a number:");
                currentNumber = int.Parse(Console.ReadLine());
                if (currentNumber > maxNumber)
                {
                    maxNumber = currentNumber;
                }
                if (currentNumber < minNumber)
             {
                    minNumber = currentNumber;
             }
   }
        Console.WriteLine("The smallest number is: {0}" , minNumber);
        Console.WriteLine("The biggest number is: {0}" , maxNumber);
    }
}

4. Write a program that calculates N!/K! for given N and K (1<K<N).
using System;

class DivideFactorials
{
    static void Main()
    {
        Console.WriteLine("Enter a value for N");
        int n = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for K (1 < K < N )");
        int k = int.Parse(Console.ReadLine());
        double nFactorial = 1;
        double kFaktorial = 1;
        for (int i = n; i > 0; i--)
        {
            nFactorial *= i;
        }
        for (int j = k; j > 0; j--)
        {
            kFaktorial *= j;
        }
        double result = nFactorial / kFaktorial;
        Console.WriteLine("N!/K! = {0}" ,result);
    }
}

5. Write a program that calculates N!*K! / (K-N)! for given N and K (1<N<K).
using System;

class MultiplyFactorials
{
    static void Main()
    {
        Console.WriteLine("Enter a value for N:");
        int n = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for K (1 < N < K)");
        int k = int.Parse(Console.ReadLine());
        int differenceNK = n - k;
        double nFactorial = 1;
        double kFactorial = 1;
        double differeceNKFactorial = 1; 
        for (int i = n; i > 0; i--)
        {
            nFactorial *= i;
        }
        for (int i = k; i > 0; i--)
        {
            kFactorial *= i;
        }
        for (int j = differenceNK; j > 0; j--)
        {
            differeceNKFactorial *= j;
        }
        double result = (nFactorial * kFactorial) / differeceNKFactorial;
        Console.WriteLine("N!*K!/(N-K)!= {0}" , result);
    }
}

6. Write a program that, for a given two integer numbers N and X, calculates the S = 1 + 1!/X + 2!/X2 + … + N!/XN.
using System;

class CalculateSumS
{
    static void Main()
    {
        Console.WriteLine("Enter a Value for N:");
        int n = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for X:");
        int x = int.Parse(Console.ReadLine());
        double sum = 1;
        double factorial = 1;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                factorial *= j;
            }
            sum += factorial / Math.Pow(x, i);
            factorial = 1;
        }
        Console.WriteLine("Sum S is equal to: {0}", sum);
    }
}

7. Write a program that reads a number N and calculates the sum of the first N members of the sequence of Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …
Each member of the Fibonacci sequence (except the first two) is a sum of the previous two members.
using System;

class CalculateSumOfFibonacciSequence
{
    static void Main()
    {
        Console.WriteLine("Enter a value for the Fibonacci members:");
        int members = int.Parse(Console.ReadLine());
        int firstMember = 0;
        int secondMember = 1;
        int sum = 0;
        for (int i = 1; i <= members; i++)
        {
            sum = firstMember + secondMember;
            firstMember = secondMember;
            secondMember = sum;
        }
        Console.WriteLine("The sum of first {0} members is equal to: {1}" , members , secondMember - 1);
    }
}

8. Write a program that calculates the greatest common divisor (GCD) of given two numbers. Use the Euclidean algorithm (find it in Internet).
using System;

class GreatestCommonDivisorOfTwoNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter a value for the first number:");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for the second number:");
        int secondNumber = int.Parse(Console.ReadLine());
        int temp;
        if (firstNumber == secondNumber)
        {
            Console.WriteLine("First number is equal to second number");
        }
        if (firstNumber > secondNumber)
        {
            while (firstNumber % secondNumber != 0)
            {
             temp = firstNumber % secondNumber;
             firstNumber = secondNumber;
             secondNumber = temp;
            }
            Console.WriteLine("The gratest common divisor is: {0}" , secondNumber);
        }
        if (secondNumber > firstNumber)
        {
            while (secondNumber % firstNumber != 0)
            {
             temp = secondNumber % firstNumber;
             secondNumber = firstNumber;
             firstNumber = temp;
            }
            Console.WriteLine("The gratest common divisor is: {0}" , firstNumber);
        }
    }
}

10. In the combinatorial mathematics, the Catalan numbers are calculated by the following formula:
Write a program to calculate the Nth Catalan number by given N.
using System;
using System.Numerics;

class NthCatalanNumber
{
    static void Main()
    {
        Console.WriteLine("Cn = (2n)!/(1 + n)!*n!");
        Console.Write("Enter a value for n: ");
        int number = int.Parse(Console.ReadLine());
        BigInteger firstFactorial = 1;
        BigInteger secondFactorial = 1;
        BigInteger thirdFactorial = 1;
        for (int i = number * 2; i > 0; i--)
        {
            firstFactorial *= i;
        }
        for (int j = number + 1; j > 0; j--)
        {
            secondFactorial *= j;
        }
        for (int k = number; k > 0; k--)
        {
            thirdFactorial *= k;
        }
        BigInteger catalanNumber = firstFactorial / (secondFactorial * thirdFactorial);
        Console.WriteLine("Cn = {0}" , catalanNumber);
    }
}

11. Write a program that prints all possible cards from a standard deck of 52 cards (without jokers). The cards should be printed with their English names. Use nested for loops and switch-case.
using System;

class PrintAllCards
{
    static void Main()
    {
        for (int i = 1; i <= 4; i++)
        {
            
            for (int j = 1; j <= 13; j++)
            {
                switch (i)
                {
                    case 1: Console.Write("Clubs "); break;
                    case 2: Console.Write("Diamonds "); break;
                    case 3: Console.Write("Hearts "); break;
                    case 4: Console.Write("Spades "); break;
                    default: break;
                }
                switch (j)
                {
                    case 1: Console.WriteLine("deuce"); break;
                    case 2: Console.WriteLine("three"); break;
                    case 3: Console.WriteLine("four"); break;
                    case 4: Console.WriteLine("five"); break;
                    case 5: Console.WriteLine("six"); break;
                    case 6: Console.WriteLine("seven"); break;
                    case 7: Console.WriteLine("eight"); break;
                    case 8: Console.WriteLine("nine"); break;
                    case 9: Console.WriteLine("ten"); break;
                    case 10: Console.WriteLine("jack"); break;
                    case 11: Console.WriteLine("queen"); break;
                    case 12: Console.WriteLine("king"); break;
                    case 13: Console.WriteLine("ace"); break;
                    default: break;
                }
            }
        }
    }
}

12. Write a program that reads from the console a positive integer number N (N < 20) and outputs a matrix like the following:
N = 3 N = 4
using System;

class MatrixOutput
{
    static void Main()
    {
        Console.WriteLine("Enter one number between 1 and 20: ");
        int number = int.Parse(Console.ReadLine());
        for (int i = 1; i <= number; i++)
        {
            Console.WriteLine(" ");
            for (int j = i; j <= number - 1 + i; j++)
            {
                Console.Write(" " + j + " ");
            }
        }
    }
}

събота, 5 януари 2013 г.

C#: Conditional Statements

Ето ги и задачите от лекцията Conditional Statements. Задачите от домашните не са никак трудни като цяло, но има някои при които има повече писане. Последната задача ми отне малко повече време докато я напиша. Видео и материали от лекцията могат да бъдат намерени тук.

1. Write an if statement that examines two integer variables and exchanges their values if the first one is greater than the second one.
using System;

class ExchangeValuesOfTwoVariables
{
    static void Main()
    {
        Console.WriteLine("Enter a value for for the first variable: ");
        int firstValue = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for the second variable:");
        int secondValue = int.Parse(Console.ReadLine());
        int maxValue = firstValue;
        if (firstValue > secondValue)
        {
            firstValue = secondValue;
            secondValue = maxValue;
            Console.WriteLine("First variable is equal to {0} and second variable is equal to {1}", firstValue, secondValue);
        }
        else if (firstValue == secondValue)
        {
            Console.WriteLine("The values are equal");
        }
        else
        {
            Console.WriteLine("Second value is bigger than first value");
        }
    }
}

2. Write a program that shows the sign (+ or -) of the product of three real numbers without calculating it. Use a sequence of if statements.
using System;

class SignOfThreeRealNumbersProduct
{
    static void Main()
    {
        Console.WriteLine("Enter the first real number;");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second real number");
        int secondNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third real number");
        int thirdNumber = int.Parse(Console.ReadLine());
        if (firstNumber < 0 && secondNumber < 0 && thirdNumber < 0)
        {
            Console.WriteLine("The sign of the product is '-'");
        }
        else if (firstNumber < 0 ^ secondNumber < 0 ^ thirdNumber < 0)
        {
            Console.WriteLine("The sign of the product is '-'");
        }
        else
        {
            Console.WriteLine("The sign of the product is '+'");
        }
    }
}

3. Write a program that finds the biggest of three integers using nested if statements.
using System;

class BiggestOfThreeNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter the first number: ");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number: ");
        int secondNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third number: ");
        int thirdNumber = int.Parse(Console.ReadLine());
        if (firstNumber > secondNumber & firstNumber > thirdNumber)
        {
            Console.WriteLine("The biggest number is: {0}", firstNumber);
        }
        else
        {
            if (firstNumber < secondNumber & secondNumber > thirdNumber)
            {
                Console.WriteLine("The biggest number is: {0}", secondNumber);
            }
            else
            {
                Console.WriteLine("The biggest number is: {0}", thirdNumber);
            }
        }
    }
}

4. Sort 3 real values in descending order using nested if statements.
using System;

class SortingThreeRealValues
{
    static void Main()
    {                                                                           
        Console.WriteLine("Enter the first number: ");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number: ");
        int secondNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third number: ");
        int thirdNumber = int.Parse(Console.ReadLine());
        if (firstNumber < secondNumber)
        {
            if (secondNumber < thirdNumber)
            {
                Console.WriteLine("The order of the numbers is: {0} {1} {2}", firstNumber, secondNumber, thirdNumber);
            }
            else
            {
                if (firstNumber > thirdNumber)
                {
                    Console.WriteLine("The order of the numbers is: {0} {1} {2}", thirdNumber, firstNumber, secondNumber);
                }
                else
                {
                    Console.WriteLine("The order of the numbers is: {0} {1} {2}", firstNumber, thirdNumber, secondNumber);
                }
            }
        }
        if (firstNumber > secondNumber)
        {
            if (secondNumber > thirdNumber)
            {
                Console.WriteLine("The order of the numbers is: {0} {1} {2}", thirdNumber, secondNumber, firstNumber);
            }
            else
            {
                if (firstNumber > thirdNumber)
                {
                    Console.WriteLine("The order of the numbers is: {0} {1} {2}", secondNumber, thirdNumber, firstNumber);
                }
                else
                {
                    Console.WriteLine("The order of the numbers is: {0} {1} {2}", secondNumber, firstNumber, thirdNumber);
                }
            }
        }
    }
}

5. Write program that asks for a digit and depending on the input shows the name of that digit (in English) using a switch statement.
using System;

class NameOfADigit
{
    static void Main()
    {
        Console.WriteLine("Enter one digit: ");
        int digit = int.Parse(Console.ReadLine());
        switch (digit)
        {
            case 1: Console.WriteLine("One"); break;
            case 2: Console.WriteLine("Two"); break;
            case 3: Console.WriteLine("Three"); break;
            case 4: Console.WriteLine("Four"); break;
            case 5: Console.WriteLine("Five"); break;
            case 6: Console.WriteLine("Six"); break;
            case 7: Console.WriteLine("Seven"); break;
            case 8: Console.WriteLine("Eigth"); break;
            case 9: Console.WriteLine("Nine"); break;
            case 0: Console.WriteLine("Zero"); break;
            default: Console.WriteLine("Error"); break;
        }
    }
}

6. Write a program that enters the coefficients a, b and c of a quadratic equation a*x2 + b*x + c = 0 and calculates and prints its real roots. Note that quadratic equations may have 0, 1 or 2 real roots.
using System;

class QuadraticEquation
{
    static void Main()
    {
        Console.WriteLine("Enter value for 'a'");
        double a = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter value for 'b'");
        double b = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter value for 'c'");
        double c = double.Parse(Console.ReadLine());
        double d = b * b - (4 * a * c);
        Console.WriteLine("d = {0}" , d);
        if (d < 0)
        {
            Console.WriteLine("There are no real roots");
        }
        else if (d == 0)
        {
            double x = (-1 * b) / (2 * a);
            Console.WriteLine("x = {0}" , x);
        }
        else
        {
            double x1 = ((-1 * b) + Math.Sqrt(d)) / (2 * a);
            double x2 = ((-1 * b) - Math.Sqrt(d)) / (2 * a);
            Console.WriteLine("x1 = {0}" , x1);
            Console.WriteLine("x2 = {0}" , x2);
        }
    }
}

7. Write a program that finds the greatest of given 5 variables.
using System;

class GreatestOfFiveVariables
{
    static void Main()
    {
        Console.WriteLine("Enter the first variable: ");
        int firstVariable = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second variable: ");
        int secondVariable = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third variable: ");
        int thirdVariable = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the fourth variable: ");
        int fourthVariable = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the fifth variable: ");
        int fifthVariable = int.Parse(Console.ReadLine());
        if (firstVariable > secondVariable & firstVariable > thirdVariable & firstVariable > fourthVariable & firstVariable > fifthVariable)
        {
            Console.WriteLine("The biggest number is: {0}", firstVariable);
        }
        else if (secondVariable > firstVariable & secondVariable > thirdVariable & secondVariable > fourthVariable & secondVariable > fifthVariable)
        {
            Console.WriteLine("The biggest number is: {0}", secondVariable);
        }
        else if (thirdVariable > firstVariable & thirdVariable > secondVariable & thirdVariable > fourthVariable & thirdVariable > fifthVariable)
        {
            Console.WriteLine("The biggest number is: {0}", thirdVariable);
        }
        else if (fourthVariable > firstVariable & fourthVariable > secondVariable & fourthVariable > thirdVariable & fourthVariable > fifthVariable)
        {
            Console.WriteLine("The biggest number is: {0}", fourthVariable);
        }
        else if (fifthVariable > firstVariable & fifthVariable > secondVariable & fifthVariable > thirdVariable & fifthVariable > fourthVariable)
        {
            Console.WriteLine("The biggest number is: {0}", fifthVariable);
        }
    }
}

8. Write a program that, depending on the user's choice inputs int, double or string variable. If the variable is integer or double, increases it with 1. If the variable is string, appends "*" at its end. The program must show the value of that variable as a console output. Use switch statement.
using System;

class RecognizeTypeOfVariable
{
    static void Main()
    {
        Console.WriteLine("Choose type of variable: int , double or string:");
        string variable = Console.ReadLine();
        Console.WriteLine("Enter a value for the variable");
        string value = Console.ReadLine();
        switch (variable)
        {
            case "int": Console.WriteLine(int.Parse(value) + 1); break;
            case "double": Console.WriteLine(double.Parse(value) + 1); break;
            case "string": Console.WriteLine(value + "*"); break;
            default: Console.WriteLine("Error"); break;
        }
    }
}

9. We are given 5 integer numbers. Write a program that checks if the sum of some subset of them is 0. Example: 3, -2, 1, 1, 8 -> 1+1-2=0.
using System;

class SumOfSubset
{
    static void Main()
    {
        Console.WriteLine("Enter the first number:");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number: ");
        int secondNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third number:");
        int thirdNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the fourth number:");
        int fourthNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the fifth number: ");
        int fifthNumber = int.Parse(Console.ReadLine());
        if (firstNumber + secondNumber + thirdNumber == 0 | firstNumber + secondNumber + fourthNumber == 0 | firstNumber + secondNumber + fifthNumber == 0)
        {
            Console.WriteLine("The sum of some subset is equal to zero");
        }
        else if (firstNumber + thirdNumber + fourthNumber == 0 | firstNumber + thirdNumber + fifthNumber == 0 | firstNumber + fourthNumber + fifthNumber == 0)
        {
            Console.WriteLine("The sum of some subset is equal to zero");
        }
        else if (secondNumber + thirdNumber + fourthNumber == 0 | secondNumber + thirdNumber + fifthNumber == 0 | secondNumber + fourthNumber + fifthNumber == 0 | thirdNumber + fourthNumber + fifthNumber == 0)
        {
            Console.WriteLine("The sum of some subset is equal to zero");
        }
        else
        {
            Console.WriteLine("There is no sum of subset equal to zero.");
        }
    }
}

10. Write a program that applies bonus scores to given scores in the range [1..9]. The program reads a digit as an input. If the digit is between 1 and 3, the program multiplies it by 10; if it is between 4 and 6, multiplies it by 100; if it is between 7 and 9, multiplies it by 1000. If it is zero or if the value is not a digit, the program must report an error.
Use a switch statement and at the end print the calculated new value in the console.
using System;

class BonusScores
{
    static void Main()
    {
        Console.WriteLine("Enter one digit:");
        string digit = Console.ReadLine();
        int newDigit;
        bool check = int.TryParse(digit, out newDigit);
        if (!check)
        {
            Console.WriteLine("Not a digit");
        }
        else
        {
            switch (newDigit)
            {
                case 1: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 10); break;
                case 2: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 10); break;
                case 3: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 10); break;
                case 4: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 100); break;
                case 5: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 100); break;
                case 6: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 100); break;
                case 7: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 1000); break;
                case 8: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 1000); break;
                case 9: Console.WriteLine("Result is : {0}" , int.Parse(digit) * 1000); break;
                case 0: Console.WriteLine("Error"); break;
                default:
                    break;
            }
        }
    }
}

10. Write a program that converts a number in the range [0...999] to a text corresponding to its English pronunciation. Examples:
0 -> "Zero"
273 -> "Two hundred seventy three"
400 -> "Four hundred"
501 -> "Five hundred and one"
711 -> "Seven hundred and eleven"
using System;

class NumbersToText
{
    static void Main()
    {
        Console.WriteLine("Enter one number between 0 and 999");
        int number = int.Parse(Console.ReadLine());
        if (number > 99 & number <= 999)
        {
            int hundreds = number / 100;

            switch (hundreds)
            {
                case 1: Console.Write("One hundred "); break;
                case 2: Console.Write("Two hundred "); break;
                case 3: Console.Write("Three hundred "); break;
                case 4: Console.Write("Four hundred "); break;
                case 5: Console.Write("Five hundred "); break;
                case 6: Console.Write("Six hundred "); break;
                case 7: Console.Write("Seven hundred "); break;
                case 8: Console.Write("Eight hundred "); break;
                case 9: Console.Write("Nine hundred "); break;
                default:
                    break;
            }
            int tens = ((number) - (hundreds * 100));

            if (tens >= 20)
            {
                tens = tens / 10;
                switch (tens)
                {
                    case 2: Console.Write("and twenty"); break;
                    case 3: Console.Write("and thirty"); break;
                    case 4: Console.Write("and fourty"); break;
                    case 5: Console.Write("and fifty"); break;
                    case 6: Console.Write("and sixty"); break;
                    case 7: Console.Write("and seventy"); break;
                    case 8: Console.Write("and eighty"); break;
                    case 9: Console.Write("and ninety"); break;
                    default:
                        break;
                }
                int ones = ((number) - (hundreds * 100 + tens * 10));

                switch (ones)
                {
                    case 1: Console.WriteLine(" one"); break;
                    case 2: Console.WriteLine(" two"); break;
                    case 3: Console.WriteLine(" three"); break;
                    case 4: Console.WriteLine(" four"); break;
                    case 5: Console.WriteLine(" five"); break;
                    case 6: Console.WriteLine(" six"); break;
                    case 7: Console.WriteLine(" seven"); break;
                    case 8: Console.WriteLine(" eight"); break;
                    case 9: Console.WriteLine(" nine"); break;
                    default:
                        break;
                }
            }
            else
            {

                switch (tens)
                {
                    case 1: Console.WriteLine("and one"); break;
                    case 2: Console.WriteLine("and two"); break;
                    case 3: Console.WriteLine("and three"); break;
                    case 4: Console.WriteLine("and four"); break;
                    case 5: Console.WriteLine("and five"); break;
                    case 6: Console.WriteLine("and six"); break;
                    case 7: Console.WriteLine("and seven"); break;
                    case 8: Console.WriteLine("and eight"); break;
                    case 9: Console.WriteLine("and nine"); break;
                    case 10: Console.WriteLine("and ten"); break;
                    case 11: Console.WriteLine("and eleven"); break;
                    case 12: Console.WriteLine("and twelve"); break;
                    case 13: Console.WriteLine("and thirteen"); break;
                    case 14: Console.WriteLine("and fourteen"); break;
                    case 15: Console.WriteLine("and fifteen"); break;
                    case 16: Console.WriteLine("and sixteen"); break;
                    case 17: Console.WriteLine("and seventeen"); break;
                    case 18: Console.WriteLine("and eighteen"); break;
                    case 19: Console.WriteLine("and nineteen"); break;

                    default:
                        break;
                }
            }
        }
        if (number < 100 & number > 19)
        {
            int tensSecond = number / 10;
            switch (tensSecond)
            {
                case 2: Console.Write("Twenty"); break;
                case 3: Console.Write("Thirty"); break;
                case 4: Console.Write("Fourty"); break;
                case 5: Console.Write("Fifty"); break;
                case 6: Console.Write("Sixty"); break;
                case 7: Console.Write("Seventy"); break;
                case 8: Console.Write("Eighty"); break;
                case 9: Console.Write("Ninety"); break;
                default:
                    break;
            }
            int onesSecond = number - tensSecond * 10;
            switch (onesSecond)
            {
                case 1: Console.WriteLine(" one"); break;
                case 2: Console.WriteLine(" two"); break;
                case 3: Console.WriteLine(" three"); break;
                case 4: Console.WriteLine(" four"); break;
                case 5: Console.WriteLine(" five"); break;
                case 6: Console.WriteLine(" six"); break;
                case 7: Console.WriteLine(" seven"); break;
                case 8: Console.WriteLine(" eight"); break;
                case 9: Console.WriteLine(" nine"); break;
                default:
                    break;
            }
        }
        else
        {
            switch (number)
            {
                case 1: Console.WriteLine("One"); break;
                case 2: Console.WriteLine("Two"); break;
                case 3: Console.WriteLine("Three"); break;
                case 4: Console.WriteLine("Four"); break;
                case 5: Console.WriteLine("Five"); break;
                case 6: Console.WriteLine("Six"); break;
                case 7: Console.WriteLine("Seven"); break;
                case 8: Console.WriteLine("Eight"); break;
                case 9: Console.WriteLine("Nine"); break;
                case 10: Console.WriteLine("Ten"); break;
                case 11: Console.WriteLine("Eleven"); break;
                case 12: Console.WriteLine("Twelve"); break;
                case 13: Console.WriteLine("Thirteen"); break;
                case 14: Console.WriteLine("Fourteen"); break;
                case 15: Console.WriteLine("Fifteen"); break;
                case 16: Console.WriteLine("Sixteen"); break;
                case 17: Console.WriteLine("Seventeen"); break;
                case 18: Console.WriteLine("Eighteen"); break;
                case 19: Console.WriteLine("Nineteen"); break;

                default:
                    break;
            }
        }
    }
}

четвъртък, 3 януари 2013 г.

C#: Console Input Output

Вход и изход от конзолата е една от най-лесните, кратки и приятни лекции до сега в курса по C#. Задачите от домашното към лекцията са сравнително лесни. Видео и материали от лекцията може да се намерят тук.

1. Write a program that reads 3 integer numbers from the console and prints their sum.
using System;

class ReadThreeNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter the first number: ");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number: ");
        int secondNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the third number: ");
        int thirdNumber = int.Parse(Console.ReadLine());
        int sum = firstNumber + secondNumber + thirdNumber;
        Console.WriteLine("The sum is equal to {0}: ", sum);
    }
}

2. Write a program that reads the radius r of a circle and prints its perimeter and area.
using System;

class ReadRadiusOfCircle
{
    static void Main()
    {
        Console.WriteLine("Enter the radius of the circle: ");
        double radius = double.Parse(Console.ReadLine());
        double area = Math.PI * radius * radius;
        double perimeter = 2 * Math.PI * radius;
        Console.WriteLine("Perimeter is equal to: {0}", perimeter);
        Console.WriteLine("Area is equal to: {0}", area);
    }
}

3. A company has name, address, phone number, fax number, web site and manager. The manager has first name, last name, age and a phone number. Write a program that reads the information about a company and its manager and prints them on the console.
using System;

class CompanyInformation
{
    static void Main()
    {
        Console.WriteLine("Enter the name of the company:");
        string companyName = Console.ReadLine();
        Console.WriteLine("Enter the address of the company:");
        string address = Console.ReadLine();
        Console.WriteLine("Enter the phone Number: ");
        string phoneNumber = Console.ReadLine();
        Console.WriteLine("Enter the fax number:");
        string faxNumber = Console.ReadLine();
        Console.WriteLine("Enter the web site Address: ");
        string webSite = Console.ReadLine();
        Console.WriteLine("Enter the first name of the manager:");
        string managerFirstName = Console.ReadLine();
        Console.WriteLine("Enter the last name of the manager: ");
        string managerLastName = Console.ReadLine();
        string managerFullName = managerFirstName + " " + managerLastName;
        Console.WriteLine("Enter the age of the manager:");
        byte age = byte.Parse(Console.ReadLine());
        Console.WriteLine("Enter the phone number of the manager:");
        string managerPhoneNumber = Console.ReadLine();
        Console.WriteLine("Company Information");
        Console.WriteLine("Companu name: {0}", companyName);
        Console.WriteLine("Company Address: {0}", address);
        Console.WriteLine("Company phone number: {0}", phoneNumber);
        Console.WriteLine("Company fax number: {0}", faxNumber);
        Console.WriteLine("Company Web site: {0}", webSite);
        Console.WriteLine("Company manager: {0}", managerFullName);
        Console.WriteLine("Manager information");
        Console.WriteLine("Manager first name: {0}", managerFirstName);
        Console.WriteLine("Manager last name: {0}", managerLastName);
        Console.WriteLine("Manager age {0}", age);
        Console.WriteLine("Manager phone number: {0}", managerPhoneNumber);
    }
}

4. Write a program that reads two positive integer numbers and prints how many numbers p exist between them such that the reminder of the division by 5 is 0 (inclusive). Example: p(17,25) = 2.
using System;

class BetweenTwoNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter the first number:");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number:");
        int secondNumber = int.Parse(Console.ReadLine());
        int firstNumberDivide = firstNumber / 5;
        int secondNumberDivide = secondNumber / 5;
        int difference = Math.Max(firstNumberDivide, secondNumberDivide) - Math.Min(firstNumberDivide, secondNumberDivide);
        Console.WriteLine("P({0},{1})={2}", firstNumber, secondNumber, difference);
    }
}

5. Write a program that gets two numbers from the console and prints the greater of them. Don’t use if statements.
using System;

class GreaterNumber
{
    static void Main()
    {
        Console.WriteLine("Enter the first number:");
        int firstNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the second number:");
        int secondNumber = int.Parse(Console.ReadLine());
        int greaterNumber = Math.Max(firstNumber, secondNumber);
        Console.WriteLine("Greater number is: {0}", greaterNumber);
    }
}

6. Write a program that reads the coefficients a, b and c of a quadratic equation ax2+bx+c=0 and solves it (prints its real roots).
using System;

class QuadraticEquation
{
    static void Main()
    {
        Console.WriteLine("Enter value for 'a'");
        double a = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter value for 'b'");
        double b = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter value for 'c'");
        double c = double.Parse(Console.ReadLine());
        double d = b * b - (4 * a * c);
        Console.WriteLine("d = {0}", d);
        if (d < 0)
        {
            Console.WriteLine("There are no real roots");
        }
        else if (d == 0)
        {
            double x = (-1 * b) / (2 * a);
            Console.WriteLine("x = {0}" , x);
        }
        else
        {
            double x1 = ((-1 * b) + Math.Sqrt(d)) / (2 * a);
            double x2 = ((-1 * b) - Math.Sqrt(d)) / (2 * a);
            Console.WriteLine("x1 = {0}" , x1);
            Console.WriteLine("x2= {0}" , x2);
        }
    }
}

7. Write a program that gets a number n and after that gets more n numbers and calculates and prints their sum.
using System;

class GetANumber
{
    static void Main()
    {
        Console.WriteLine("Enter one number:");
        int number = int.Parse(Console.ReadLine());
        int sum = 0;
        for (int i = 0; i < number; i++)
        {
            Console.WriteLine("Enter a value:");
            sum += int.Parse(Console.ReadLine());

        }
        Console.WriteLine("The sum is: {0}", sum);
    }
}

8. Write a program that reads an integer number n from the console and prints all the numbers in the interval [1..n], each on a single line.
using System;

class PrintNumbersInInterval
{
    static void Main()
    {
        Console.WriteLine("Enter a number");
        int n = int.Parse(Console.ReadLine());
        for (int i = 1; i <= n; i++)
        {
            Console.WriteLine(i);
        }
    }
}

9. Write a program to print the first 100 members of the sequence of Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, …
using System;

class FibonacciSequence
{
    static void Main()
    {
        int number1 = 0;
        int number2 = 1;
        int sum = 1;
        while (number1 < 600)
        {
            sum = number1 + number2;
            number1 = number2;
            number2 = sum;
            Console.WriteLine(number2);
        }
    }
}

10. Write a program to calculate the sum (with accuracy of 0.001): 1 + 1/2 - 1/3 + 1/4 - 1/5 + ...
using System;

class CalculateSum
{
    static void Main()
    {
        decimal sum = 1m;
        decimal previousSum = 1m;
        decimal counter = 2m;
        do
        {
            previousSum = sum;
            if (counter % 2 == 0)
            {
                sum += (decimal)1 / counter;
            }
            else
            {
                sum -= (decimal)1 / counter;
            }
            counter++;
        } while (Math.Abs(sum - previousSum) >= (decimal)0.001m);
        Console.WriteLine("{0:0.000}", sum);
    }
}

вторник, 1 януари 2013 г.

C#: Operators, Expressions and Statements

Ето ги и домашните от лекцията Operators, Expressions and Statements. Темата не е от най-лесните и в същото време е доста важна. На мен лично побитовеите операции ми отнеха доста време докато започна да се справям с тях. Видео и материали за лекцията може да се намерят тук.

1. Write an expression that checks if given integer is odd or even.
using System;

class OddOrEven
{
    static void Main()
    {
        Console.WriteLine("Enter one Number:");
        int number = int.Parse(Console.ReadLine());
        int reminder = number % 2;
        if (reminder == 0)
        {
            Console.WriteLine("The number is even");
        }
        else
        {
            Console.WriteLine("The number is odd");
        }
    }
}

2. Write a boolean expression that checks for given integer if it can be divided (without remainder) by 7 and 5 in the same time.
using System;

class DivideByFiveAndSeven
{
    static void Main()
    {
        Console.WriteLine("Enter one number:");
        int number = int.Parse(Console.ReadLine());
        int fiveReminder = number % 5;
        int sevenReminder = number % 7;
        if (fiveReminder == 0 && sevenReminder == 0)
        {
            Console.WriteLine("The number can be divided to 5 and to 7 at the same time");
        }
        else
        {
            Console.WriteLine("The number can't be divided to 5 and to 7 at the same time");
        }
    }
}

3. Write an expression that calculates rectangle’s area by given width and height.
using System;

class RectangleArea
{
    static void Main()
    {
        Console.WriteLine("Enter the width of the rectangle:");
        float width = float.Parse(Console.ReadLine());
        Console.WriteLine("Enter the height of the rectangle");
        float height = float.Parse(Console.ReadLine());
        float area = width * height;
        Console.WriteLine("Area = {0}", area);
    }
}

4. Write an expression that checks for given integer if its third digit (right-to-left) is 7. E. g. 1732 -> true.
using System;

class CheckThirdDigit
{
    static void Main()
    {
        Console.WriteLine("Enter a number to check (minimum 3 digits)");
        int number = int.Parse(Console.ReadLine());
        number /= 100;
        number %= 10;
        if (number == 7)
        {
            Console.WriteLine("The third digit from right to left is 7");
        }
        else
        {
            Console.WriteLine("The third digit from right to left is not 7");
        }
    }
}

5. Write a boolean expression for finding if the bit 3 (counting from 0) of a given integer is 1 or 0.
using System;

class FindingThirdBit
{
    static void Main()
    {
        Console.WriteLine("Enter one number: ");
        int number = int.Parse(Console.ReadLine());
        int bitMove = number >> 3;
        int reminder = bitMove % 2;
        if (reminder == 0)
        {
            Console.WriteLine("Third bit is 0");
        }
        else
        {
            Console.WriteLine("Third bit is 1");
        }
        //Second variant
        int mask = 1;
        mask <<= 3;
        if ((mask & number) > 0)
        {
            Console.WriteLine("Third bit is 1");
        }
        else
        {
            Console.WriteLine("Third bit is 0");
        }
    }
}

6. Write an expression that checks if given point (x,  y) is within a circle K(O, 5).
using System;

class PointInCircle
{
    static void Main()
    {
        double radius = 5;
        double area = Math.PI * Math.Sqrt(radius);
        Console.WriteLine("Enter a value for 'x': ");
        double x = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for 'y': ");
        double y = double.Parse(Console.ReadLine());
        if ((x * x + y * y) <= radius * radius)
        {
            Console.WriteLine("The point is inside the Circle");
        }
        else
        {
            Console.WriteLine("The point is outside the Circle");
        }
    }
}

7. Write an expression that checks if given positive integer number n (n <= 100) is prime. E.g. 37 is prime.
using System;

class PrimeNumbers
{
    static void Main()
    {
        Console.WriteLine("Enter a number between 1 and 100: ");
        byte number = byte.Parse(Console.ReadLine());
        if (number == 2 | number == 3 | number == 5 | number == 7 | number == 11 | number == 13 | number == 17 | number == 19 | number == 23 | number == 29 | number == 31 | number == 37 | number == 41 | number == 43 | number == 47 | number == 53 | number == 59 | number == 61 | number == 67 | number == 71 | number == 73 | number == 79 | number == 83 | number == 89 | number == 97)
        {
            Console.WriteLine("The number is prime");
        }
        else
        {
            Console.WriteLine("The number is not prime");
        }
    }
}

8. Write an expression that calculates trapezoid's area by given sides a and b and height h.
using System;

class TrapezoidsArea
{
    static void Main()
    {
        Console.WriteLine("Enter a number for side 'a': ");
        float a = float.Parse(Console.ReadLine());
        Console.WriteLine("Enter a number for side 'b'");
        float b = float.Parse(Console.ReadLine());
        Console.WriteLine("Enter a number for the height 'h'");
        float h = float.Parse(Console.ReadLine());
        float area = ((a + b) * h) / 2;
        Console.WriteLine("The area is equal to: {0}", area);
    }
}

9. Write an expression that checks for given point (x, y) if it is within the circle K( (1,1), 3) and out of the rectangle R(top=1, left=-1, width=6, height=2).
using System;

class PointInCircleAndOutRectangle
{
    static void Main()
    {
        double r = 3;
        Console.WriteLine("Enter a value for 'x': ");
        double x = double.Parse(Console.ReadLine());
        Console.WriteLine("Enter a value for 'y': ");
        double y = double.Parse(Console.ReadLine());
        if ((((x - 1) * (x - 1) + (y - 1) * (y - 1)) <= r * r) && !((x >= -1 && x <= 4) && (y <= 1 && y >= -1)))
        {
            Console.WriteLine("The point is inside the Circle and Outside Rectangle");
        }
        else
        {
            Console.WriteLine("The point is outside the Circle and Outside the Ractangle");
        }
    }
}

10. Write a boolean expression that returns if the bit at position p (counting from 0) in a given integer number v has value of 1. Example: v=5; p=1 -> false.
using System;

class CheckABitAtPosition
{
    static void Main()
    {
        Console.WriteLine("Enter a numner to check:");
        int number = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a bit position to check if it is 1:");
        int position = int.Parse(Console.ReadLine());
        int check = 1;
        int mask = check << position;
        Console.WriteLine((mask & number) == 0 ? false : true);
    }
}

11. Write an expression that extracts from a given integer i the value of a given bit number b. Example: i=5; b=2 -> value=1.
using System;

class ValueOfBit
{
    static void Main()
    {
        Console.WriteLine("Enter a numner to check:");
        int number = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a bit position to checked");
        int position = int.Parse(Console.ReadLine());
        int check = 1;
        int mask = check << position;
        Console.WriteLine((mask & number) != 0 ? 1 : 0);
    }
}

12. We are given integer number n, value v (v=0 or 1) and a position p. Write a sequence of operators that modifies n to hold the value v at the position p from the binary representation of n.
Example: n = 5 (00000101), p=3, v=1 -> 13 (00001101)
n = 5 (00000101), p=2, v=0 -> 1 (00000001)
using System;

class ModifyBit
{
    static void Main()
    {
        Console.WriteLine("Enter one number number: ");
        int number = int.Parse(Console.ReadLine());
        string binRepresentation = Convert.ToString(number, 2).PadLeft(8, '0');
        Console.WriteLine(binRepresentation);
        Console.WriteLine("Enter a position of the bit to be modified: ");
        int position = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter a binary number (0 or 1): ");
        int bit = int.Parse(Console.ReadLine());
        int mask = 1 << position;
        int convertedNumber = 0;
        if (bit == 1)
        {
            convertedNumber = number | mask;
        }
        else
        {
            convertedNumber = number ^ mask;
        }
        Console.WriteLine("New number: {0}" + convertedNumber);
    }
}

13. Write a program that exchanges bits 3, 4 and 5 with bits 24, 25 and 26 of given 32-bit unsigned integer.
using System;

class BitsExchange
{
    static void Main()
    {
        Console.WriteLine("Enter a number to be modified:");
        uint number = uint.Parse(Console.ReadLine());
        uint mask3 = (number & 1 << 3);
        uint bit3 = mask3 >> 3;
        uint mask4 = (number & 1 << 4);
        uint bit4 = mask4 >> 4;
        uint mask5 = (number & 1 << 5);
        uint bit5 = mask5 >> 5;
        uint mask24 = (number & 1 << 24);
        uint bit24 = mask24 >> 24;
        uint mask25 = (number & 1 << 25);
        uint bit25 = mask25 >> 25;
        uint mask26 = (number & 1 << 26);
        uint bit26 = mask26 >> 26;
        uint result;
        uint tempResult;
        if (bit3 == 0)
        {
            tempResult = number & ((uint)(1 << 24));
        }
        else
        {
            tempResult = number | 1 << 24;
        }
        result = tempResult;
        if (bit4 == 0)
        {
            tempResult = result & ~((uint)(1 << 25));
        }
        else
        {
            tempResult = result | 1 << 25;
        }
        result = tempResult;
        if (bit5 == 0)
        {
            tempResult = result & ~((uint)(1 << 26));
        }
        else
        {
            tempResult = result | 1 << 26;
        }
        result = tempResult;
        if (bit24 == 0)
        {
            tempResult = result & ~((uint)(1 << 3));
        }
        else
        {
            tempResult = result | 1 << 3;
        }
        result = tempResult;
        if (bit25 == 0)
        {
            tempResult = result & ~((uint)(1 << 4));
        }
        else
        {
            tempResult = result | 1 << 4;
        }
        result = tempResult;
        if (bit26 == 0)
        {
            tempResult = result & ~((uint)(1 << 5));
        }
        else
        {
            tempResult = result | 1 << 5;
        }
        result = tempResult;
        Console.WriteLine("Number before {0} , binary before {1}", number, Convert.ToString(number, 2).PadLeft(32, '0'));
        Console.WriteLine("Number after {0} , binary after {1}", result, Convert.ToString(result, 2).PadLeft(32, '0'));
    }
}

14. * Write a program that exchanges bits {p, p+1, …, p+k-1) with bits {q, q+1, …, q+k-1} of given 32-bit unsigned integer.
using System;

class BitsExchange2
{
    static void Main()
    {
        Console.WriteLine("Enter a number to be modified:");
        int number = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the first bit position of next three to be modified:");
        int firstPosition = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the first bit position of the next three to be switched:");
        int lastPosition = int.Parse(Console.ReadLine());
        int maskP = (number & 1 << firstPosition);
        int bitP = maskP >> firstPosition;
        int maskPPlusOne = (number & 1 << (firstPosition + 1));
        int bitPPlusOne = maskPPlusOne >> (firstPosition + 1);
        int maskPPlusTwo = (number & 1 << (firstPosition + 2));
        int bitPPlusTwo = maskPPlusTwo >> (firstPosition + 2);
        int maskPLast = (number & 1 << lastPosition);
        int bitPLast = maskPLast >> lastPosition;
        int maskPLastPlusOne = (number & 1 << (lastPosition + 1));
        int bitPLastPlusOne = maskPLastPlusOne >> (lastPosition + 1);
        int maskPLastPlusTwo = (number & 1 << (lastPosition + 2));
        int bitPLastPlusTwo = maskPLastPlusTwo >> (lastPosition + 2);
        int result;
        int tempResult;
        if (bitP == 0)
        {
            tempResult = number & ((int)(1 << lastPosition));
        }
        else
        {
            tempResult = number | 1 << lastPosition;
        }
        result = tempResult;
        if (bitPPlusOne == 0)
        {
            tempResult = result & ~((int)(1 << (lastPosition + 1)));
        }
        else
        {
            tempResult = result | 1 << (lastPosition + 1);
        }
        result = tempResult;
        if (bitPPlusTwo == 0)
        {
            tempResult = result & ~((int)(1 << (lastPosition + 2)));
        }
        else
        {
            tempResult = result | 1 << (lastPosition + 2);
        }
        result = tempResult;
        if (bitPLast == 0)
        {
            tempResult = result & ~((int)(1 << firstPosition));
        }
        else
        {
            tempResult = result | 1 << firstPosition;
        }
        result = tempResult;
        if (bitPLastPlusOne == 0)
        {
            tempResult = result & ~((int)(1 << (firstPosition + 1)));
        }
        else
        {
            tempResult = result | 1 << (firstPosition + 1);
        }
        result = tempResult;
        if (bitPLastPlusTwo == 0)
        {
            tempResult = result & ~((int)(1 << (firstPosition + 2)));
        }
        else
        {
            tempResult = result | 1 << (firstPosition + 2);
        }
        result = tempResult;
        Console.WriteLine("Number before {0} , binary before {1}", number, Convert.ToString(number, 2).PadLeft(32, '0'));
        Console.WriteLine("Number after {0} , binary after {1}", result, Convert.ToString(result, 2).PadLeft(32, '0'));
    }
}

C#: Primitive Data Types and Variables

Това са решенията на задачите от домашното по C# на тема Primitive Data Types and Variables. Видео и материали от лекцията може да се намерят тук.

1. Declare five variables choosing for each of them the most appropriate of the types byte, sbyte, short, ushort, int, uint, long, ulong to represent the following values: 52130, -115, 4825932, 97, -10000.
using System;

class DeclareFiveVariables
{
    static void Main()
    {
        ushort firstValue = 52130;
        sbyte secondValue = -115;
        int thirdValue = 4825932;
        byte fourthValue = 97;
        short fifthValue = -10000;
        Console.WriteLine("{0} {1} {2} {3} {4}", firstValue, secondValue, thirdValue, fourthValue, fifthValue);
    }
}

2. Which of the following values can be assigned to a variable of type float and which to a variable of type double: 34.567839023, 12.345, 8923.1234857, 3456.091?
using System;

class FloatOrDouble
{
    static void Main()
    {
        double firstValue = 34.567839023;
        float secondValue = 12.345f;
        double thirdValue = 8923.1234857;
        float fourthValue = 3456.091f;
        Console.WriteLine("float: {0} {1} " , secondValue , fourthValue);
        Console.WriteLine("double: {0} {1}" , firstValue , thirdValue);
    }
}

3. Write a program that safely compares floating-point numbers with precision of 0.000001. Examples: (5.3 ; 6.01) -> false;  (5.00000001 ; 5.00000003) -> true
using System;

class CompareFloatingPointNumbers
{
    static void Main()
    {
        float a = 6.34f;
        float b = 7.21f;
        float c = 6.123456789f;
        float d = 6.12345678901f;
        bool compareFirst = (a == b);
        Console.WriteLine(compareFirst);
        bool compareSecond = (c == d);
        Console.WriteLine(compareSecond);
    }
}

4. Declare an integer variable and assign it with the value 254 in hexadecimal format. Use Windows Calculator to find its hexadecimal representation.
using System;

class HexadecimalFormat
{
    static void Main()
    {
        int firstValue = 0xFE;
        Console.WriteLine("{0:X}", firstValue);
    }
}

5. Declare a character variable and assign it with the symbol that has Unicode code 72. Hint: first use the Windows Calculator to find the hexadecimal representation of 72.
using System;

class DeclareUnicodeCode
{
    static void Main()
    {
        int decValue = 0x48;
        char symbol = (char)decValue;
        Console.WriteLine(symbol);
    }
}

6. Declare a boolean variable called isFemale and assign an appropriate value corresponding to your gender.
using System;

class IsFemale
{
    static void Main()
    {
        int male = 1;
        int female = 2;
        bool isFemale = (male < female);
        Console.WriteLine("My gender is male: {0}", isFemale);
    }
}

7. Declare two string variables and assign them with “Hello” and “World”. Declare an object variable and assign it with the concatenation of the first two variables (mind adding an interval). Declare a third string variable and initialize it with the value of the object variable (you should perform type casting).
using System;

class ObjectToString
{
    static void Main()
    {
        string firstWord = "Hello";
        string secondWord = "World";
        object combination = firstWord + " " + secondWord;
        string a = (string)combination;
        Console.WriteLine(a);
    }
}

8. Declare two string variables and assign them with following value:
The "use" of quotations causes difficulties.
Do the above in two different ways: with and without using quoted strings.
using System;

class Quotations
{
    static void Main()
    {
        string first = @"The ""use"" of quotations causes difficulties";
        string second = "The \"use\" of quotations causes difficulties";
        Console.WriteLine(first);
        Console.WriteLine(second);
    }
}

9. Write a program that prints an isosceles triangle of 9 copyright symbols ©. Use Windows Character Map to find the Unicode code of the © symbol. Note: the © symbol may be displayed incorrectly.
using System;

class CopyrightSymbol
{
    static void Main()
    {
        int copyrightSymbol = 0x00a9;
        char symbol = (char)copyrightSymbol;
        Console.WriteLine("  {0}", symbol);
        Console.WriteLine(" {0}{0}{0}", symbol);
        Console.WriteLine("{0}{0}{0}{0}{0}", symbol);
    }
}

10. A marketing firm wants to keep record of its employees. Each record would have the following characteristics – first name, family name, age, gender (m or f), ID number, unique employee number (27560000 to 27569999). Declare the variables needed to keep the information for a single employee using appropriate data types and descriptive names.
using System;

class Employees
{
    static void Main()
    {
        Console.WriteLine("Employee first name");
        string firstName = Console.ReadLine();
        Console.WriteLine("Employee family name");
        string familyName = Console.ReadLine();
        Console.WriteLine("Employee age:");
        byte age = byte.Parse(Console.ReadLine());
        Console.WriteLine("Employee gendder(f or m)");
        string gender = Console.ReadLine();
        Console.WriteLine("Employee ID Number");
        long idNumber = long.Parse(Console.ReadLine());
        Console.WriteLine("Unique employee number(27560000 to 27569999)");
        int employeeUniqueNumber = int.Parse(Console.ReadLine());
        Console.WriteLine("Employee full details:");
        Console.WriteLine("First Name: {0}", firstName);
        Console.WriteLine("Family Name: {0}", familyName);
        Console.WriteLine("Age: {0}", age);
        if (gender == "m")
        {
            Console.WriteLine("Gender: Male");
        }
        else if (gender == "f")
        {
            Console.WriteLine("Gender: Female");
        }
        else
        {
            Console.WriteLine("Wrong symbol");
        }
        Console.WriteLine("ID Nymber: {0}", idNumber);
        if (employeeUniqueNumber < 27560000)
        {
            Console.WriteLine("Wrong Number");
        }
        else if (employeeUniqueNumber > 27569999)
        {
            Console.WriteLine("Wrong Number");
        }
        else
        {
            Console.WriteLine("Employee Unique Number: {0}", employeeUniqueNumber);
        }
    }
}

11. Declare  two integer variables and assign them with 5 and 10 and after that exchange their values.
using System;

class TwoVariablesExchage
{
    static void Main()
    {
        Console.WriteLine("a=5");
        Console.WriteLine("b=10");
        int a = 5;
        int b = 10;
        int temp = a;
        a = b;
        b = temp;
        Console.WriteLine("a= {0}", a);
        Console.WriteLine("b= {0}", b);
    }
}

12. Find online more information about ASCII (American Standard Code for Information Interchange) and write a program that prints the entire ASCII table of characters on the console.
using System;

class AsciiCharacters
{
    static void Main()
    {
        int characters = 126;
        for (int i = 0; i <= characters; i++)
        {

            Console.Write((char)i);
        }
        Console.WriteLine();
    }
}

13. Create a program that assigns null values to an integer and to double variables. Try to print them on the console, try to add some values or the null literal to them and see the result.
using System;

class NullValues
{
    static void Main()
    {
        int? someInteger = null;
        double? someDouble = null;
        Console.WriteLine(someInteger);
        Console.WriteLine(someDouble);
    }
}

14. A bank account has a holder name (first name, middle name and last name), available amount of money (balance), bank name, IBAN, BIC code and 3 credit card numbers associated with the account. Declare the variables needed to keep the information for a single bank account using the appropriate data types and descriptive names.
using System;

class BankAccount
{
    static void Main()
    {
        Console.WriteLine("Enter your first name");
        string firstName = Console.ReadLine();
        Console.WriteLine("Enter your midle name");
        string midleName = Console.ReadLine();
        Console.WriteLine("Ënter your last name");
        string lastName = Console.ReadLine();
        Console.WriteLine("Enter your amount of money");
        decimal amount = decimal.Parse(Console.ReadLine());
        Console.WriteLine("Enter your bank name");
        string bankName = Console.ReadLine();
        Console.WriteLine("Enter your IBAN");
        string iban = Console.ReadLine();
        Console.WriteLine("Enter your BIC code");
        string bic = Console.ReadLine();
        Console.WriteLine("Enter your first credit card number");
        long firstCardNumber = long.Parse(Console.ReadLine());
        Console.WriteLine("Enter your second credit card number");
        long secondCardNumber = long.Parse(Console.ReadLine());
        Console.WriteLine("Enter your third credit card number");
        long thirdCardNumber = long.Parse(Console.ReadLine());
        Console.WriteLine("Your Bank Account information:");
        Console.WriteLine("First Name: {0}", firstName);
        Console.WriteLine("Middle Name: {0}", midleName);
        Console.WriteLine("Last Name: {0}", lastName);
        Console.WriteLine("Amount of money: {0}", amount);
        Console.WriteLine("Bank Name: {0}", bankName);
        Console.WriteLine("IBAN: {0}", iban);
        Console.WriteLine("BIC: {0}", bic);
        Console.WriteLine("First credit card number: {0}", firstCardNumber);
        Console.WriteLine("Second credit card number: {0}", secondCardNumber);
        Console.WriteLine("Third credit card number: {0}", thirdCardNumber);
    }
}