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(); }
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); }
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); }
// Задание 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()); }
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; }
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("Непредвиденная ошибка "); } } }
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(); }
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(); } } }
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; }
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; }
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; }
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; } } }
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(); } } }
private bool okupiraDrugi(Kvadrat prvi, Kvadrat drugi) { return Nivo().ViseLikova && (prvi == Kvadrat.OkupiraPrviLik && drugi == Kvadrat.OkupiraDrugiLik) || (prvi == Kvadrat.OkupiraDrugiLik && drugi == Kvadrat.OkupiraPrviLik); }
private bool zauzet(Kvadrat k) { switch (k) { case Kvadrat.DeaktiviraniPrvi: case Kvadrat.DeaktiviraniDrugi: case Kvadrat.OkupiraPrepreka: return true; default: return false; } }
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; }
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; } }
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; }