コード例 #1
0
ファイル: Program.cs プロジェクト: Wozniak456/Laba_OOP4
        static void Main(string[] args)
        {
            Kvadrat K1 = new Kvadrat(); // side = 4
            Kvadrat K2 = new Kvadrat(-1.5, -2, -1.5, 5, 5.5, 5, 5.5, -2);
            Kvadrat K3 = new Kvadrat(-1, -2, 4, -2, 4, 3, -1, 3);

            Console.WriteLine("First square:");
            K1.SquareData();
            Console.WriteLine("\nSecond square:");
            K2.SquareData();
            Console.WriteLine("\nThird square:");
            K3.SquareData();
            Console.WriteLine("\nModified third square:");
            K3 += 5;
            K3.SquareData();
            Console.WriteLine(" 2/3: ");
            K1 = K2 / K3;
            K1.SquareData();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            // Tacka T1, T2;
            Tacka T1 = new Tacka(3, 4);
            Tacka T2 = new Tacka(5, 6);

            Console.WriteLine("Pre flip:\n\tT1: " + T1 + "\n\tT2: " + T2);
            T1.FlipHorizontalno();
            T1.FlipVertikalno();
            Console.WriteLine("Posle flip:\n\tT1: " + T1 + "\n\tT2: " + T2);

            Duz D1 = new Duz(T1, T2);

            Console.WriteLine("Duz: " + D1);
            D1.FlipHorizontalno();
            D1.FlipVertikalno();
            Console.WriteLine("Duz posle flip: " + D1);
            Console.WriteLine("Tacke posle flip duz: " + T1 + T2);

            double d = new Double();

            d = 12;
            Kvadrat k1 = new Kvadrat();
            Kvadrat k2 = new Kvadrat(T1, d);
            Kvadrat k3 = new Kvadrat(T1);
            Kvadrat k4 = new Kvadrat(d);
            Kvadrat k5 = new Kvadrat(T1, T2);

            Console.WriteLine(k1);
            Console.WriteLine(k2);
            k2.FlipHorizontalno();
            k2.FlipVertikalno();
            Console.WriteLine(k2);
            Console.WriteLine(k3);
            Console.WriteLine(k4);
            Console.WriteLine(k5);
            Console.WriteLine(k2.GetPovrsina());
            Console.WriteLine(k2.GetObim());
            Console.WriteLine(k2.Nacrtaj());
            Tacka t = null;

            Console.WriteLine("nesto: " + t);
        }
コード例 #3
0
        static void Main()
        {
            System.Console.Write("Unesi duzinu ivice: ");
            double ivica = double.Parse(System.Console.ReadLine());

            Kvadrat kv = new Kvadrat(ivica);
            Kocka   ko = new Kocka(ivica);

            System.Console.WriteLine("Povrsina kvadrata = {0:F2}", kv.Povrsina);
            System.Console.WriteLine("Povrsina kocke = {0:F2}", ko.Povrsina);
            System.Console.WriteLine();

            System.Console.Write("Unesi povrsinu: ");
            double povrsina = double.Parse(System.Console.ReadLine());

            kv.Povrsina = povrsina;
            ko.Povrsina = povrsina;

            System.Console.WriteLine("Ivica kvadrata = {0:F2}", kv.Ivica);
            System.Console.WriteLine("Ivica kocke = {0:F2}", ko.Ivica);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: Denys209818/C-Homework
//        Задание 1.
//Разработать абстрактный класс «Геометрическая Фигура» с методами «Площадь Фигуры» и «Периметр Фигуры».
//Разработать классы-наследники: Треугольник, Квадрат,
//Ромб, Прямоугольник, Параллелограмм, Трапеция, Круг,
//Эллипс.Реализовать конструкторы, которые однозначно
//определяют объекты данных классов.
//Реализовать класс «Составная Фигура», который
//может состоять из любого количества «Геометрических
//Фигур». Для данного класса определить метод нахождения
//площади фигуры.Создать диаграмму взаимоотношений
//классов.
        static void Main()
        {
            SostavnaFigura sf  = new SostavnaFigura();
            Elips          el1 = new Elips(3, 5);
            Krug           el2 = new Krug(3);
            Trapecia       el3 = new Trapecia(3, 5, 2, 2, 3);
            Priamokutnyk   el4 = new Priamokutnyk(3, 5);
            Romb           el5 = new Romb(3, 5);
            Kvadrat        el6 = new Kvadrat(3);
            Trykutnyk      el7 = new Trykutnyk(3, 5, 7);

            sf.AddFigura(el1);
            sf.AddFigura(el2);
            sf.AddFigura(el3);
            sf.AddFigura(el4);
            sf.AddFigura(el5);
            sf.AddFigura(el6);
            sf.AddFigura(el7);


            Console.WriteLine(sf.GetS());
        }
コード例 #5
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private List<Tuple<int, int>> koordinateAktivnogLika(Kvadrat kojiLik)
 {
     var lista = new List<Tuple<int, int>>();
     for (int i = 1; i < tip_igre.Redaka + 1; ++i)
         for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
             if (ploca[i, j] == kojiLik)
             {
                 lista.Add(new Tuple<int, int>(i, j));
             }
     return lista;
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: OlgaPrib/GeomFigure
        static void Main(string[] args)
        {
            try
            {
                int          countKv  = 0;                                                 //количество квадратов
                double       perKv    = 0;                                                 // средний периметр квадратов
                int          countOkr = 0;                                                 //количество Окружностей
                double       perOkr   = 0;                                                 // средний периметр окружностей
                int          countTr  = 0;                                                 //количество трапеций
                double       perTr    = 0;                                                 // средний периметр трапеций
                double       pr       = 0;                                                 // периметр
                double       sq       = 0;                                                 //площадь
                int          j        = 0;
                string[]     stroki;                                                       //массив строк из файла
                string[]     paramFig;                                                     //строка с параметрами фигуры
                IGeomFig[]   figures = null;                                               //массив объектов
                StreamReader reader  = new StreamReader(@"1.txt");
                Dictionary <double, string> perimDict = new Dictionary <double, string>(); // словарь для средних периметров
                string s = reader.ReadToEnd();                                             // читаем строку до конца
                reader.Close();

                //проверяем файл на наличие строк
                if (s.Length == 0)
                {
                    Console.WriteLine("Файл не содержит строк!");
                }
                else
                {
                    Console.Clear();
                    Console.WriteLine("Строка:\n" + s);

                    stroki  = s.Split('\n');
                    figures = new IGeomFig[stroki.Length];

                    //заполняем массив объектов
                    for (int i = 0; i < stroki.Length; i++)
                    {
                        paramFig = stroki[i].Split(' ');
                        if (paramFig.Length == 3)
                        {
                            if (Convert.ToDouble(paramFig[2]) > 0)
                            {
                                figures[j] = new Okruzhnost(paramFig);
                                pr         = pr + figures[j].perimetr;
                                sq         = sq + figures[j].ploshad;
                                countOkr++;
                                perOkr = perOkr + figures[j].perimetr;
                                perimDict.Add(perOkr, figures[j].GetType().Name);
                                j++;
                            }
                            else
                            {
                                Console.WriteLine("В строке " + (i + 1) + " круг имеет отрицательный радиус, объект не может быть создан!");
                            }
                        }
                        else
                        if (paramFig.Length == 8)
                        {
                            if (Kvadrat.proverka(paramFig))
                            {
                                figures[j] = new Kvadrat(paramFig);
                                pr         = pr + figures[j].perimetr;
                                sq         = sq + figures[j].ploshad;
                                countKv++;
                                perKv = perKv + figures[j].perimetr;
                                perimDict.Add(perKv, figures[j].GetType().Name);
                                j++;
                            }
                            else if (Trapeciya.proverka(paramFig))
                            {
                                figures[j] = new Trapeciya(paramFig);
                                pr         = pr + figures[j].perimetr;
                                sq         = sq + figures[j].ploshad;
                                countTr++;
                                perTr = perTr + figures[j].perimetr;
                                perimDict.Add(perTr, figures[j].GetType().Name);
                                j++;
                            }
                            else
                            {
                                Console.WriteLine("В строке " + (i + 1) + " возможно неправильно введены параметры!");
                            }
                        }
                        else
                        {
                            Console.WriteLine("В строке " + (i + 1) + " возможно неправильно введены параметры!");
                        }
                    }
                }

                Array.Resize(ref figures, j);
                if (j > 0)
                {
                    //вывод исходного массива
                    Console.WriteLine("\n\n Полученный массив\n");
                    for (int i = 0; i < j; i++)
                    {
                        figures[i].Vyvod(i + 1);
                    }
                    // средний периметр всех фигур
                    Console.WriteLine("\n\n Средний периметр всех фигур = " + pr / j);

                    // средняя площадь всех фигур
                    Console.WriteLine("\n\n Средняя площадь всех фигур = " + sq / j);

                    //сортировка массива по площади и поиск фигуры с наибольшей площадью
                    Array.Sort(figures, new SravPoPloshadi());
                    int maxValue = figures.Length - 1;
                    Console.WriteLine("\n\n Фигура, с наибольшей площадью \n");
                    figures[maxValue].Vyvod(maxValue + 1);

                    // тип фигуры с наибольшим значением среднего периметра среди всех других типов фигур
                    string result = perimDict.Values.Max();
                    Console.WriteLine("\n\n Тип фигуры, с наибольшим значением среднего периметра: " + result);
                }
                else
                {
                    Console.WriteLine("Элементы отсутствуют");
                }

                Console.ReadKey();
            }
            catch (FileNotFoundException) { Console.WriteLine("Ошибка открытия файла "); }
            catch (IndexOutOfRangeException) { Console.WriteLine("В массиве отсутствуют элементы "); }
            catch (OverflowException) { Console.WriteLine("Данные введены неверно "); }
            catch (FormatException) { Console.WriteLine("Данные введены неверно "); }
            catch
            {
                { Console.WriteLine("Непредвиденная ошибка "); }
            }
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: mashchenko314/BCIT_Lab
        static void Main(string[] args)
        {
            Rectangle a = new Rectangle(2, 3);
            Kvadrat   b = new Kvadrat(3, 3);
            Circle    c = new Circle(4);
            Rectangle d = new Rectangle(2, 1);
            Kvadrat   e = new Kvadrat(2.5, 2.5);

            //Пример работы с ArrayList
            ArrayList list = new ArrayList()
            {
                a, b, c
            };

            foreach (GiometricalFigure figure in list)
            {
                Console.WriteLine(figure.Square().ToString());
            }

            //Пример работы с List<T> и его сортировка
            List <GiometricalFigure> list1 = new List <GiometricalFigure>();

            list1.Add(a);
            list1.Add(b);
            list1.Add(c);
            list1.Add(d);
            list1.Add(e);
            Console.WriteLine("Неотсортированный list:");
            foreach (GiometricalFigure figure in list1)
            {
                Console.WriteLine(figure.Square().ToString());
            }
            int n = list1.Count - 1;
            GiometricalFigure figure1;

            for (int j = 0; j < list1.Count - 1; j++)
            {
                for (int i = 0; i < n; i++)
                {
                    if (list1[i].CompareTo(list1[i + 1]) > 0)
                    {
                        figure1      = list1[i];
                        list1[i]     = list1[i + 1];
                        list1[i + 1] = figure1;
                    }
                }
                n--;
            }
            Console.WriteLine("Отсортированный list:");
            foreach (GiometricalFigure figure in list1)
            {
                Console.WriteLine(figure.Square().ToString());
            }

            //Пример работы SimpleStack
            Console.WriteLine("SimpleStack:");
            SimpleStack <GiometricalFigure> figures = new SimpleStack <GiometricalFigure>();

            figures.Push(a);
            figures.Push(b);
            figures.Push(c);
            while (figures.Count > 0)
            {
                Console.WriteLine(figures.Pop());
            }

            //Пример работы Matrix
            Console.WriteLine("Matrix:");
            Rectangle nullElement             = new Rectangle(0, 0);
            Matrix <GiometricalFigure> matrix = new Matrix <GiometricalFigure>(2, 2, 2, nullElement);

            matrix[1, 0, 0] = b;
            matrix[0, 1, 1] = a;
            Console.WriteLine(matrix.ToString());

            Console.ReadKey();
        }
コード例 #8
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private void urediLikove(Kvadrat koji)
        {
            if (koji == Kvadrat.OkupiraPrviLik)
            {
                if (sljedeciOblikPrvi != null)
                {
                    aktivniOblikPrvi = sljedeciOblikPrvi;
                    sljedeciOblikPrvi = SljedeciOblik();
                }
                else
                {
                    aktivniOblikPrvi = SljedeciOblik();
                    sljedeciOblikPrvi = SljedeciOblik();
                }
            }
            

            if (koji == Kvadrat.OkupiraDrugiLik)
            {
                if (sljedeciOblikDrugi != null)
                {
                    aktivniOblikDrugi = sljedeciOblikDrugi;
                    sljedeciOblikDrugi = SljedeciOblik();
                }
                else
                {
                    aktivniOblikDrugi = SljedeciOblik();
                    sljedeciOblikDrugi = SljedeciOblik();
                }
            }
        }
コード例 #9
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private bool postojiAktivan(Kvadrat kojiLik)
 {
     for (int i = 1; i < tip_igre.Redaka + 1; ++i)
         for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
             if (ploca[i, j] == kojiLik)
                 return true;
     return false;
 }
コード例 #10
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private void deaktiviraj(Kvadrat kojiLik)
 {
     for (int i = 1; i < tip_igre.Redaka + 1; ++i)
         for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
             if (ploca[i, j] == kojiLik)
                 if (kojiLik == Kvadrat.OkupiraPrviLik)
                     ploca[i, j] = Kvadrat.DeaktiviraniPrvi;
                 else
                     ploca[i, j] = Kvadrat.DeaktiviraniDrugi;
 }
コード例 #11
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private bool inicijaliziraj(Kvadrat kojiLik)
        {
            bool prvi = kojiLik == Kvadrat.OkupiraPrviLik;
            bool viseLikova = Nivo().ViseLikova;

            urediLikove(kojiLik);

            Oblik aktivni = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            int shift = 0;
            if (viseLikova && kojiLik == Kvadrat.OkupiraPrviLik)
                shift = 2;
            if (viseLikova && kojiLik == Kvadrat.OkupiraDrugiLik)
                shift = -2;

            switch (Nivo().Smjer)
            {
                case Smjerovi.Dolje:
                    for (int i = 1, k = 0; i < 5; ++i, ++k)
                        for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l)
                        {
                            if (ploca[i, j] != Kvadrat.Slobodan) return false;
                            ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                        } 
                    aktivni.Pozicija = new Tuple<int, int>(1, tip_igre.Stupaca / 2 - 2 + shift);
                    break;
                case Smjerovi.Gore:
                    for (int i = tip_igre.Redaka - 3, k = 0; i < tip_igre.Redaka + 1; ++i, ++k)
                        for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l)
                        {
                            if (ploca[i, j] != Kvadrat.Slobodan) return false;
                            ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                        }
                    aktivni.Pozicija = new Tuple<int, int>(tip_igre.Redaka - 3, tip_igre.Stupaca / 2 - 2 + shift);
                    break;
                case Smjerovi.Desno:
                    for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k)
                        for (int j = 1, l = 0; j < 5; ++j, ++l)
                        {
                            if (ploca[i, j] != Kvadrat.Slobodan) return false;
                            ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                        }
                    aktivni.Pozicija = new Tuple<int, int>(tip_igre.Redaka/2 - 2 + shift, 1);
                    break;
                case Smjerovi.Lijevo:
                default:
                    for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k)
                        for (int j = tip_igre.Stupaca - 3, l = 0; j < tip_igre.Stupaca + 1; ++j, ++l)
                        {
                            if (ploca[i, j] != Kvadrat.Slobodan) return false;
                            ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                        }
                    aktivni.Pozicija = new Tuple<int, int>(tip_igre.Redaka / 2 - 2 + shift, tip_igre.Stupaca - 3);
                    break;
            }
            
            if (kojiLik == Kvadrat.OkupiraPrviLik) 
                aktivniOblikPrvi = aktivni;
            else 
                aktivniOblikDrugi = aktivni;

            return true;
        }
コード例 #12
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private void pomakni(Kvadrat kojiLik, Smjerovi smjer)
        {
            Oblik oblik = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;
            if (oblik == null)
                return;

            if (Nivo().Smjer == suprotanSmjer(smjer))
                nagradni_bodovi--;

            oblik.Pozicija = nxt(oblik.Pozicija.Item1, oblik.Pozicija.Item2, smjer);

            var trenutne_koord = koordinateAktivnogLika(kojiLik);
            var sljedece_koord = new List<Tuple<int, int>>();
            foreach(var k in trenutne_koord){
                var sljedeciIndeksi = nxt(k.Item1, k.Item2, smjer);
                sljedece_koord.Add(sljedeciIndeksi);
                ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2] = kojiLik;
            }

            foreach (var k in trenutne_koord)
            {
                if (!sljedece_koord.Contains(k))
                {
                    ploca[k.Item1, k.Item2] = Kvadrat.Slobodan;
                }
            }
        }
コード例 #13
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private void gravitacijaAktivni(Kvadrat lik)
 {
     if (postojiAktivan(lik))
     {
         if (mozePomak(lik, Nivo().Smjer))
         {
             pomakni(lik, Nivo().Smjer);
         }
         else
         {
             deaktiviraj(lik);
         }
     }
     else
     {   
         if(!inicijaliziraj(lik)){
             iduciNivo();
         }
     }
     
 }
コード例 #14
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private bool okupiraDrugi(Kvadrat prvi, Kvadrat drugi)
 {
     return Nivo().ViseLikova && (prvi == Kvadrat.OkupiraPrviLik && drugi == Kvadrat.OkupiraDrugiLik) || (prvi == Kvadrat.OkupiraDrugiLik && drugi == Kvadrat.OkupiraPrviLik);
 }
コード例 #15
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
 private bool zauzet(Kvadrat k)
 {
     switch (k)
     {
         case Kvadrat.DeaktiviraniPrvi:
         case Kvadrat.DeaktiviraniDrugi:
         case Kvadrat.OkupiraPrepreka:
             return true;
         default:
             return false;
     }
 }
コード例 #16
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private bool mozePomak(Kvadrat kojiLik, Smjerovi smjer){
            if (Nivo().Smjer == suprotanSmjer(smjer) && (nagradni_bodovi <= 0 || !Nivo().NagradniKvadratici))
                return false;

            for (int i = 1; i < tip_igre.Redaka + 1; ++i)
                for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
                    if (ploca[i, j] == kojiLik)
                    {
                        var sljedeciIndeksi = nxt(i,j, smjer);
                        if (!uGranicama(sljedeciIndeksi) || zauzet(ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]) || okupiraDrugi(kojiLik, ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]))
                        {
                            return false;
                        }
                    }
            return true;
        }
コード例 #17
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private void rotiraj(Kvadrat kojiLik)
        {
            Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            koji.Rotiraj();
            var boundingBox = koji.Pozicija;

            for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k)
                for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l)
                {
                    if (koji.Celije[k, l])
                        ploca[i, j] = kojiLik;
                    else if (!koji.Celije[k, l] && ploca[i, j] == kojiLik)
                        ploca[i, j] = Kvadrat.Slobodan;
                }    
        }
コード例 #18
0
ファイル: Tetris.cs プロジェクト: iliavolyova/tetris
        private bool mozeRotacija(Kvadrat kojiLik)
        {
            Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            bool[,] rotirano = koji.SimulirajRotaciju();
            var boundingBox = koji.Pozicija;

            for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k)
                for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l)
                    if (i < 0 || j < 0 || rotirano[k, l] && ((ploca[i, j] != Kvadrat.Slobodan && ploca[i, j] != kojiLik) || !uGranicama(new Tuple<int, int>(i, j))))
                        return false;

            return true;
        }