fel
le

Tabletek és autók

  • enum és bool típusú mezők, propertyk készítése
  • korábbiak gyakorlása, konstruktor, property, konténer

Tabletek

Egy tablet gépről adatként nyilvántartjuk:

  • x felbontását (resX), egész szám,
  • y felbontását (rexY), egész szám,
  • a két felbontás párban szerepel, elfogadható értékpárok 640x480, 800x600, 1024x768
  • van-e kamera I/N
  • van-e gps I/N
  • android verziószáma, valid értékek 4.0, 4.1, 4.2
  • ára, egész szám, 10e .. 800e, de 1e forinttal osztható kell legyen
  • konstruktor a 6 mező kezdőértékével,
  • konstruktor 4 mező kezdőértékével, a két bool mező false legyen,
  • konstruktor, ahol csak az ára van megadva, minden más érték a minimális lehetséges értéken kezd

Van egy raktár osztály is, amelyben tablet-eket raktározunk (lista). Ebbe a listába nem kerülhet null érték, és egy tablet csak egyszer szerepelhet:

  • hány tablet van a raktárban, csak olvasható érték,
  • fv hozzáad(...), paramétere egy tablet,
  • fv töröl(...), paramétere egy tablet, kitörli a listából,
  • fv töröl(...), paramétere egy sorszám, kitörli az adott indexű tabletet a listából,
  • darabszám, csak olvasható property
  • összes árérték, csak olvasható property, a raktárban tárolt tabletek összára

Főprogram:

  • egy raktárat példányosít,
  • 40 db tabletet helyez el random adatokkal,
  • majd kiírja az összes tablet árát,
  • darabszámát,
  • töröl egy random sorszámú tabletet,
  • majd újra kiírja az előző adatokat.

Autók kezelése

Egy autóról nyilvántartjuk

  • átlagfogyasztása: tört érték, 3.0 litertől 30.0 literig
  • tank mérete: tört érték, 20.0 litertől 100.0 literig
  • aktuális benzin mennyisége: tört érték, 0.0 litertől a tank méretéig
  • tipusa: enum (szemelyauto, kisbusz, busz)
  • matrica: van-e éves autópálya matricája
  • rendszám: string, pontosan 7 karakter hosszú, 3 angol ABC nagybetű, kötőjel, 3 szám formátumú
  • konstruktor az 7 adattal,
  • konstruktor az átlagfogyasztással,tank méretével, rendszámmal, induláskori benzin mennyisége 5.0 liter legyen, és személyautó, nincs matrica
  • hanykm: csak olvasható property, megadja hány km tehető meg az autóval még (fogyasztás és aktuális benzin mennyiségétől függ)

Van egy gépjárműtelep konténer osztály:

  • lista autókról, melyben nem szerepelhet két egyforma rendszámú autó,
  • hozzáad fv, paramétere autó,
  • töröl fv, paramétere autó,
  • darabszám csak olvasható property, az autók darabszámával,
  • egy csak olvasható property, megadja hány olyan autó van, akinek üres a tankja,
  • megadja az autókkal összesen hány km táv tehető meg


Tabletek megoldása (nem pontosan ez a feladat)

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

namespace ConsoleApplication1
{
    class Program
    {
        static Random r = new Random();
       
       
        static void Main(string[] args)
        {
            storge t = new storge();
            for (int i = 0; i < 40; i++)
            {
                tablet tt = new tablet(r.Next(10000, 800000));
                t.hozzaad(tt);
            }
            Console.WriteLine("Darabszám: {0}",t.dbkiolvas);
            Console.WriteLine("Össz : {0}", t.total_cost);
            Console.WriteLine();
            t.delte2(r.Next(10,20));

           
            Console.WriteLine("Darabszám: {0}",t.dbkiolvas);
            Console.WriteLine("Össz : {0}",t.total_cost);
            Console.ReadLine();
        }
    }

    class tablet
    {
        protected int _res_x;
        protected int _res_y;
        protected double _android_ver;
        public bool camera;
        public bool gps;
        protected int _cost;

        public int res_x
        {
            get { return _res_x; }
        }
        public int res_y
        {
            get { return _res_y; }
        }
        private static double[] verziok=new double[] {4.0,4.1,4.2};
        public double android_ver
        {
            set
            {
                int i=Array.IndexOf(verziok,value);
                if (i == -1) throw new Exception("hiba");
                else _android_ver = value;
            }
            get{return _android_ver;}
        }
        //public double android_ver
        //{
        //    set
        //    {
        //        if (value == 4.0 || value == 4.1 || value == 4.2) _android_ver = value;
        //        else throw new Exception("hiba");
        //    }
        //    get { return _android_ver; }
        //}

        public int cost
        {
            set
            {
                if (value >= 10000 && value <= 800000) _cost = value;
                else throw new Exception("hiba");
            }
            get { return _cost; }
        }

        public void feltolt_xy(int x, int y)
        {
            if (x == 640 && y == 480 || x == 800 && y == 600 || x == 1024 && y == 768)
            {
                _res_x = x;
                _res_y = y;
            }
            else throw new Exception("hiba");
        }
        public tablet(int pres_x, int pres_y, double pandroid_ver, bool pcamaera, bool pgps, int pcost)
        {
            feltolt_xy(pres_x,pres_y);
            android_ver = pandroid_ver;
            camera = pcamaera;
            gps = pgps;
            _cost = pcost;
        }
        public tablet(int pres_x, int pres_y, double pandroid_ver, int pcost)
        :this(pres_x,pres_y,pandroid_ver,false,false,pcost){}
        public tablet(int pcost)
            : this(640, 480, 4.0, false, false, pcost) { }


    }
    class storge
    {
        protected List<tablet> tabletek= new List<tablet>();

        public void hozzaad(tablet x)
        {
            if (x == null) throw new Exception("hiba");
            else tabletek.Add(x);
        }
        public int dbkiolvas
        {
            get { return tabletek.Count; }
        }
        public void delte(tablet x)
        {
            int i = tabletek.IndexOf(x);
            if (i == -1) throw new Exception("hiba");
            else tabletek.RemoveAt(i);
        }
        public void delte2(int x)
        {
           
            if (x < 0 || x >= tabletek.Count ) throw new Exception("hiba");
            else tabletek.RemoveAt(x);
        }
        public int total_cost
        {
            get
            {
                int total = 0;
                foreach (tablet x in tabletek)
                {
                    total = total + x.cost;
                }
                return total;
            }
        }
    }
}
 

Autók megoldása (nem pontosan ez a feladat)

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double summ=0.0;
            Random r = new Random();
            List<car> L = new List<car>;
            for (int i = 0; i < 30; i++)
            {
                car p= new car();
                p.setAvgcons(r.Next(30,301)/10.0);
                p.settanksize(r.Next(20,101));
                p.setcurrentfuled(r.Next(10, (int)p.gettanksize()));
                L.Add(p);

            }

            foreach (car x in L)
                    {
                summ=summ + x.hanykm();
               
                    }

           
           
        }
    }
    class car
    {
        protected double avgcons ; // átlagfogyasztás 100km 3-30
        protected double tanksize; //20-100
        protected double currentfuled; // 0-tanksize

        public void setAvgcons(double ertek)
        {
            if (ertek >= 3 && ertek <= 30) avgcons = ertek;
            else throw new Exception("hibás érték");
        }
        public void settanksize(double ertek)
        {
            if (ertek >= 20 && ertek <= 100) tanksize = ertek;
            else throw new Exception("hibás érték");
        }
        public void setcurrentfuled(double ertek)
        {
            if (ertek >= 0 && ertek <= tanksize) currentfuled = ertek;
            else throw new Exception("hibás érték");
        }
        public double getavgcons()
        {
            return avgcons;
        }
        public double gettanksize()
        {
            return tanksize;
        }
        public double getcurrentfuled()
        {
            return currentfuled;
        }
        public double hanykm()
        {
            return (currentfuled / avgcons)*100;
        }
       

    }

}
 
Hernyák Zoltán
2013-04-30 17:53:06