2018. május 2., szerda

OOP, property (tulajdonság) – Háromszögek szerkeszthetősége feladat


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace haromszogek
{
    class DHaromszog
    {
        private double aOldal;
        private double bOldal;
        private double cOldal;

        public double a
        {
            get { return aOldal; }
            set
            {
                if (value > 0)
                {
                    aOldal = value;
                }
                else
                {
                    throw new Exception("Az \'a\' nem lehet nulla vagy negatív!");
                }

            }
        }

        public double b
        {
            get { return bOldal; }
            set
            {
                if (value > 0)
                {
                    bOldal = value;
                }
                else
                {
                    throw new Exception("Az \'b\' nem lehet nulla vagy negatív!");
                }

            }
        }

        public double c
        {
            get { return cOldal; }
            set
            {
                if (value > 0)
                {
                    cOldal = value;
                }
                else
                {
                    throw new Exception("Az \'c\' nem lehet nulla vagy negatív!");
                }

            }
        }


        public DHaromszog(string sor, int sorSz)
        {
            SorSzama = sorSz;
            string[] adat = new string[3];

            adat = sor.Split();
            a = Convert.ToDouble(adat[0]);
            b = Convert.ToDouble(adat[1]);
            c = Convert.ToDouble(adat[2]);
            if (!EllMegszerkesztheto) throw new Exception("A háromszöget nem lehet megszerkeszteni!");
            if (!EllNovekvoSorrend) throw new Exception("Az adatok nincsenek növekvő sorrendben!");
            if (!EllDerekszogu) throw new Exception("A háromszög nem derékszögű!");

        }

        public int SorSzama
        {
            get;
            set;
        }

        public double Kerulet
        {
            get
            {
                return a + b + c;
            }
        }

        public double Terulet
        {
            get
            {
                return a * b / 2;
            }
        }

        public bool EllNovekvoSorrend
        {
            get
            {
                if (a <= b && b <= c)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        public bool EllDerekszogu
        {
            get
            {
                if (Math.Pow(a, 2) + Math.Pow(b, 2) == Math.Pow(c, 2) ||
                    Math.Pow(a, 2) + Math.Pow(c, 2) == Math.Pow(b, 2) ||
                    Math.Pow(b, 2) + Math.Pow(c, 2) == Math.Pow(a, 2))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        public bool EllMegszerkesztheto
        {
            get
            {
                if ((a + b > c) && (a + c > b) && (b + c > a))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }


        public override string ToString()
        {
            return SorSzama + ".sor: a=" + a + " b=" + b + " c=" + c + " K=" + Kerulet + " T=" + Terulet;
        }



    }
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                StreamReader be = new StreamReader("haromszogek.txt");
                int i=0;
                while (!be.EndOfStream)
                {
                    DHaromszog h = new DHaromszog(be.ReadLine(),i+1 );
                    Console.WriteLine(h.ToString());
                    i++;
                }
                be.Close();
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }
    }
}
Szövegfájl:
1,11 1,48 1,85
8,0 15,0 17,0
4,0 3,0 2,0
3,0 4,0 5,0
9,0 40,0 48,0
0,0 2,2 4,56
1,2 3,4 5,6
11,7 15,6 19,5