Пример #1
0
        static void Main(string[] args)
        {
            //----- 1a ----//
            bool   boolean = true;
            byte   b       = 0b1100_1001;
            char   symbol  = 'a';
            double dbl     = 12.8765567;
            float  fl      = 43.46F;
            int    n       = 15;
            long   ln      = 2345678;
            sbyte  sb      = -102;
            short  sh      = 3;
            uint   un      = 14;
            ulong  uln     = 3456789;
            ushort ush     = 5;

            //-------- 1b ----//
            //---------- Явные приведения ---------------//
            n   = (int)dbl;
            un  = (char)symbol;
            ln  = (short)sh;
            ush = (ushort)ln;
            fl  = (float)dbl;
            //---------- Неявные приведения -------------//
            ln  = n;
            sh  = b;
            un  = ush;
            n   = sh;
            dbl = fl;
            //------ 1с -----//
            object valueIntInBox     = n;
            int    valueIntFromBox   = (int)valueIntInBox;
            object valueSbyteInBox   = sb;
            sbyte  valueSbyteFromBox = (sbyte)valueSbyteInBox;
            //------ 1d ----//
            var x = "hello!";

            Console.WriteLine("\n Тип неявно типизированной переменной: " + x.GetType());
            //----- 1e ----//
            int?a = 10;

            if (a.HasValue)
            {
                Console.WriteLine($"a is {a.Value}");
            }
            else
            {
                Console.WriteLine("a does not have a value");
            }
            //---- 2a -----//
            string s1 = "foo";
            string s2 = s1;
            string s3 = "foo";
            string s4 = "bar";

            Console.WriteLine(s1 == s3);
            Console.WriteLine(s1 == s4);
            Console.WriteLine((Object)s1 == (Object)s3);
            Console.WriteLine((Object)s1 == (Object)s2);
            //----- 2b ----//
            string str1 = "Minsk";
            string str2 = "Gomel";
            string str3 = "Brest";

            Console.WriteLine("Обьединение строк: " + string.Concat(str1, str2));
            Console.WriteLine("Выделение подстроки: " + str3.Substring(0, 2));
            string text = "Hello! How do you do?";

            Console.WriteLine("Разделение строки: " + text.Split(' '));
            Console.WriteLine("Вставка строки: " + text.Insert(20, str1));
            Console.WriteLine("Удаление подстроки: " + str2.Remove(2, 3));
            //---- 2c ------//
            string EmptyString = "";
            string NullString  = null;

            if (String.Compare(EmptyString, NullString) != 0)
            {
                Console.WriteLine($"Строки {EmptyString} и {NullString} не равны");
            }
            else
            {
                Console.WriteLine($"Строки {EmptyString} и {NullString} равны");
            }

            //----- 2d ----//
            StringBuilder strb = new StringBuilder("Привет мир");

            Console.WriteLine("Удаление: " + strb.Remove(4, 6));
            Console.WriteLine("Добавление в начало: " + strb.Insert(0, ":)"));
            Console.WriteLine("Добавление в конец: " + strb.Append("ет мир"));
            //---- 3a ----//
            Console.WriteLine("Двумерный массив (матрица): ");
            int[,] myArr = new int[4, 4];
            Random ran = new Random();

            for (var i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    myArr[i, j] = ran.Next(1, 15);
                    Console.Write("{0}\t", myArr[i, j]);
                }
                Console.WriteLine();
            }
            //---- 3b ----//
            string[] strArr = { "string1", "string2", "string3", "string4" };
            Console.Write("Содержимое массива: ");
            for (var i = 0; i < 4; i++)
            {
                Console.Write(strArr[i] + ", ");
            }
            Console.WriteLine("\nДлина массива: " + strArr.Length);
            Console.WriteLine("Выберите номер элнемента, который необходимо изменить: ");
            int choose;

            choose = Int32.Parse(Console.ReadLine()) - 1;
            Console.WriteLine("Вы выбрали элемент {0}, введите значение, на которое следует его заменить", strArr[choose]);
            strArr[choose] = Console.ReadLine();
            Console.Write("\nГотово!\n Измененный массив: ");
            for (var i = 0; i < 4; i++)
            {
                Console.Write(strArr[i] + ", ");
            }
            Console.WriteLine("\n");
            //---- 3c ----//
            int[][] myArr2 = new int[3][];
            myArr2[0] = new int[2];
            myArr2[1] = new int[3];
            myArr2[2] = new int[4];
            for (var i = 0; i < 2; i++)
            {
                Console.WriteLine("Введите {0}-й элемент 1-ой ступени: ", i);
                myArr2[0][i] = Int32.Parse(Console.ReadLine());
            }

            Console.WriteLine("Массив 1-ой ступени: {0}, {1}", myArr2[0][0], myArr2[0][1]);
            for (var i = 0; i < 3; i++)
            {
                Console.WriteLine("Введите {0}-й элемент 2-ой ступени: ", i);
                myArr2[1][i] = Int32.Parse(Console.ReadLine());
            }

            Console.WriteLine("Массив 2-ой ступени: {0}, {1}, {2}", myArr2[1][0], myArr2[1][1], myArr2[1][2]);
            for (var i = 0; i < 4; i++)
            {
                Console.WriteLine("Введите {0}-й элемент 3-ой ступени: ", i);
                myArr2[2][i] = Int32.Parse(Console.ReadLine());
            }



            Console.WriteLine("Массив 3-ой ступени: {0}, {1}, {2}, {3}", myArr2[2][0], myArr2[2][1], myArr2[2][2], myArr2[2][3]);
            //---- 3d ----//
            object[] arrOfStr = { "array", "of", "strings" };
            Console.WriteLine($"Массив строка типизированный неявно: {arrOfStr[0]} {arrOfStr[1]} {arrOfStr[2]}");
            //---- 4a ----//
            (int IntValueOfTuple, string FirstStringValueOfTuple, char CharValueOFTuple, string SecondValueOfTuple, ulong UlongValueOfTuple)FirstTuple = (15, "Name", 'x', "Age", 23456);
            Console.WriteLine($"Кортеж целиком: {FirstTuple}");
            Console.WriteLine($"1, 3, 4 элементы кортежа: {FirstTuple.IntValueOfTuple}, {FirstTuple.Item3}, {FirstTuple.Item4}");
            // распаковка
            int    IntValueOfTupleFromBox         = FirstTuple.IntValueOfTuple;
            string FirstStringValueOfTupleFromBox = FirstTuple.FirstStringValueOfTuple;
            char   CharValueOFTupleFromBox        = FirstTuple.CharValueOFTuple;
            string SecondValueOfTupleFromBox      = FirstTuple.SecondValueOfTuple;
            ulong  UlongValueOfTupleFromBox       = FirstTuple.UlongValueOfTuple;

            (int, string, char, string, ulong)SecondTuple = (245, "Age", 'x', "Sub", 87654);
            if (FirstTuple.CompareTo(SecondTuple) == 0)  // сравнение 2-х кортежей с разным кол-вом и разными типами полей невозможно
            {
                Console.WriteLine($"Кортежи {FirstTuple} и {SecondTuple} равны");
            }
            else
            {
                Console.WriteLine($"Кортежи {FirstTuple} и {SecondTuple} не равны");
            }

            //---- 5 -----//
            int[] ArrayForMethod = { 2, 7, 214, 26, 12, 40 };
            object MyLocalMethod(int[] LocalArr, string LocalStr)
            {
                (int maxElement, int minElement, int sumOfElements, char FirstCharOfString)LocalTuple;
                LocalTuple.maxElement    = LocalArr[0];
                LocalTuple.minElement    = LocalArr[0];
                LocalTuple.sumOfElements = 0;
                for (int i = 0; i < LocalArr.Length; i++)
                {
                    if (LocalTuple.maxElement < LocalArr[i])
                    {
                        LocalTuple.maxElement = LocalArr[i];
                    }
                    if (LocalTuple.minElement > LocalArr[i])
                    {
                        LocalTuple.minElement = LocalArr[i];
                    }
                    LocalTuple.sumOfElements += LocalArr[i];
                }
                LocalTuple.FirstCharOfString = LocalStr[0];
                return(LocalTuple);
            }

            Console.WriteLine($"Созданный локальный метод и его значение: {MyLocalMethod(ArrayForMethod, "afgshtrhkskdgo")}");
        }
Пример #2
0
        public static void Main()
        {
            // 1 a

            /** Примитивные типы
             * 13 примитивных типов
             *
             * Подробнее:
             * https://docs.microsoft.com/ru-ru/dotnet/csharp/tour-of-csharp/types-and-variables
             * https://metanit.com/sharp/tutorial/2.1.php
             */
            bool    varBool    = true;
            byte    varByte    = 1;
            char    varChar    = 'a';
            short   varShort   = 123;
            int     varInt     = -1234;
            uint    varUInt    = 1234;
            long    varLong    = -12345;
            ulong   varULong   = 12345;
            ushort  varUShort  = 123;
            float   varFloat   = 1.1F;
            double  varDouble  = 1.31;
            decimal varDecimal = 123.1M;
            sbyte   varSbyte   = 5;

            // 1 b

            /** Явное и неявное приведение
             * Подробнее:
             * https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/casting-and-type-conversions
             * https://metanit.com/sharp/tutorial/3.11.php
             */
            int   valueInt   = 5;
            sbyte valueSbyte = (sbyte)valueInt;   // явное приведение

            short valueShort = 23;

            valueInt = valueShort;              // неявное приведение

            // 1 c

            /** Упаковка и распаковка
             * Подробнее:
             * http://crypto.pp.ua/2011/02/upakovka-i-raspakovka-v-c/
             * https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing
             */
            object valueIntInBox     = valueInt;
            int    valueIntFromBox   = (int)valueIntInBox;
            object valueSbyteInBox   = valueSbyte;
            sbyte  valueSbyteFromBox = (sbyte)valueSbyteInBox;

            // 1 d

            /** Неявное типизирование
             * Полезное:
             * https://habr.com/post/113586/
             */
            var Name = "Petar";
            var Age  = 25;

            WriteLine("\nЗадание 1d: \n");
            WriteLine("Тип Name: " + Name.GetType());
            WriteLine("Тип Age: " + Age.GetType());

            // 1 e

            /** Nullable
             * Подробнее:
             * https://metanit.com/sharp/tutorial/2.17.php
             * https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/
             */
            WriteLine("\nЗадание 1е ----------------------------------------------------------\n");
            int?valNull = null;

            if (valNull.HasValue)
            {
                WriteLine(valNull.Value);
            }
            else
            {
                WriteLine("valNull is equal to null");
            }

            // 2 a ###########################################################################################
            WriteLine("\nЗадание 2a ----------------------------------------------------------\n");
            string str1 = "ASDF";
            string str2 = "asdf";

            if (String.Compare(str1, str2) != 0)
            {
                WriteLine($"Строки {str1} и {str2} не равны");
            }
            else
            {
                WriteLine($"Строки {str1} и {str2} равны");
            }

            // 2 b ###########################################################################################
            WriteLine("\nЗадание 2b ----------------------------------------------------------\n");
            string FirstString  = "First String";
            string SecondString = "Second String";
            string ThirdString  = "Third String";

            WriteLine($"Сцепление трёх строк: {String.Concat(FirstString, SecondString, ThirdString)}");
            WriteLine($"Скопированная строка: {String.Copy(FirstString)}");
            char charSeporator = ' ';

            string[] s1 = SecondString.Split(charSeporator);
            WriteLine($"Разделённая строка: {s1[1]} {s1[0]}");
            WriteLine($"Подстрока 3-й строки: {ThirdString.Substring(7)}");
            WriteLine($"Удаление подстроки: {ThirdString.Remove(3)}");
            WriteLine($"Вставка подстроки: {ThirdString.Insert(2, ThirdString.Substring(7))}");

            // 2 c ###########################################################################################
            WriteLine("\nЗадание 2c ----------------------------------------------------------\n");
            string EmptyString = "";
            string NullString  = null;

            if (String.Compare(EmptyString, NullString) != 0)
            {
                WriteLine($"Строки {EmptyString} и {NullString} не равны");
            }
            else
            {
                WriteLine($"Строки {EmptyString} и {NullString} равны");
            }

            // 2 d ###########################################################################################
            WriteLine("\nЗадание 2d ----------------------------------------------------------\n");
            WriteLine($"Кол=во элементов в пустой строке: {EmptyString.Length} и в нулл строке: "); //{EmptyString.Length}
            StringBuilder BuildedString = new StringBuilder("A new string that is equivalent to this instance", 50);

            BuildedString.Remove(20, 5);
            WriteLine($"Строка после удаления: {BuildedString}");
            BuildedString.Append("Appended text to the end");
            WriteLine($"Строка после добавления текста в конец: {BuildedString}");
            BuildedString.Insert(0, "Inserted text to the start");
            WriteLine($"Строка после добавления текста в начало: {BuildedString}");

            // 3 a ###########################################################################################
            WriteLine("\nЗадание 3a ----------------------------------------------------------\n");
            int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 } };
            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Write(matrix[i, j] + " ");
                }
                WriteLine();
            }

            // 3 b ###########################################################################################
            WriteLine("\nЗадание 3b ----------------------------------------------------------\n");
            string[] ArrayOfStrings = { "some", "interest", "text", "or", "not" };
            Write("Содержимое массива строк: ");
            for (int i = 0; i < ArrayOfStrings.Length; i++)
            {
                Write(ArrayOfStrings[i]);
            }
            WriteLine($" и его длина: {ArrayOfStrings.Length}");
            int indexOfElement;

            Write("Введите индекс строки: ");
            indexOfElement = Int32.Parse(ReadLine()) - 1;
            Write("Введите строку, которой замените текущую в массиве: ");
            ArrayOfStrings[indexOfElement] = ReadLine();
            Write("Изменённый массив: ");
            for (int i = 0; i < ArrayOfStrings.Length; i++)
            {
                Write(ArrayOfStrings[i] + " ");
            }
            WriteLine();

            // 3 c ###########################################################################################
            WriteLine("\nЗадание 3c ----------------------------------------------------------\n");
            double[][] jaggedArray = { new double[2], new double[3], new double[4] };
            WriteLine("Введите зубчатый массив: ");
            for (int i = 0; i < 3; i++)
            {
                if (i == 0)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        jaggedArray[i][j] = Double.Parse(ReadLine());
                    }
                }
                else if (i == 1)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        jaggedArray[i][j] = Double.Parse(ReadLine());
                    }
                }
                else if (i == 2)
                {
                    for (int j = 0; j < 4; j++)
                    {
                        jaggedArray[i][j] = Double.Parse(ReadLine());
                    }
                }
            }
            WriteLine("Ваш массив: ");
            foreach (double[] x in jaggedArray)
            {
                foreach (double b in x)
                {
                    Write("\t" + b);
                }
                WriteLine();
            }

            // 3 d ###########################################################################################
            WriteLine("\nЗадание 3d ----------------------------------------------------------\n");
            object[] arrOfStr = { "array", "of", "strings" };
            WriteLine($"Массив строка типизированный неявно: {arrOfStr[0]} {arrOfStr[1]} {arrOfStr[2]}");

            // 4 a b c d ###########################################################################################
            WriteLine("\nЗадание 4 a b c d ----------------------------------------------------------\n");
            (int IntValueOfTuple, string FirstStringValueOfTuple, char CharValueOFTuple, string SecondValueOfTuple, ulong UlongValueOfTuple)FirstTuple = (15, "Name", 'x', "Age", 23456);
            WriteLine($"Кортеж целиком: {FirstTuple}");
            WriteLine($"1, 3, 4 элементы кортежа: {FirstTuple.Item1}, {FirstTuple.Item3}, {FirstTuple.Item4}");
            // распаковка
            int    IntValueOfTupleFromBox         = FirstTuple.IntValueOfTuple;
            string FirstStringValueOfTupleFromBox = FirstTuple.FirstStringValueOfTuple;
            char   CharValueOFTupleFromBox        = FirstTuple.CharValueOFTuple;
            string SecondValueOfTupleFromBox      = FirstTuple.SecondValueOfTuple;
            ulong  UlongValueOfTupleFromBox       = FirstTuple.UlongValueOfTuple;

            (int, string, char, string, ulong)SecondTuple = (245, "Age", 'x', "Sub", 87654);
            if (FirstTuple.CompareTo(SecondTuple) == 0)  // сравнение 2-х кортежей с разным кол-вом и разными типами полей невозможно
            {
                WriteLine($"Кортежи {FirstTuple} и {SecondTuple} равны");
            }
            else
            {
                WriteLine($"Кортежи {FirstTuple} и {SecondTuple} не равны");
            }

            // 5 ###########################################################################################
            WriteLine("\nЗадание 5 ----------------------------------------------------------\n");
            int[] ArrayForMethod = { 2, 7, 214, 26, 12, 40 };
            object MyLocalMethod(int[] LocalArr, string LocalStr)
            {
                (int maxElement, int minElement, int sumOfElements, char FirstCharOfString)LocalTuple;
                LocalTuple.maxElement    = LocalArr[0];
                LocalTuple.minElement    = LocalArr[0];
                LocalTuple.sumOfElements = 0;
                for (int i = 0; i < LocalArr.Length; i++)
                {
                    if (LocalTuple.maxElement < LocalArr[i])
                    {
                        LocalTuple.maxElement = LocalArr[i];
                    }
                    if (LocalTuple.minElement > LocalArr[i])
                    {
                        LocalTuple.minElement = LocalArr[i];
                    }
                    LocalTuple.sumOfElements += LocalArr[i];
                }
                LocalTuple.FirstCharOfString = LocalStr[0];
                return(LocalTuple);
            }

            WriteLine($"Созданный локальный метод и его значение: {MyLocalMethod(ArrayForMethod, "afgshtrhkskdgo")}");
        }