2022. december 9., péntek

2022.12.09. Programozás/2 - Struktúra: Ford márkakereskedés továbbfejlesztés

 Továbbfejlesztés:

Oldjuk meg, hogy az autók árait struktúrában tároljuk.

Új anyag:

namespace strukturaBevezetes
{
    class Program
    {
        public struct auto
        {
            public int ar; //ft
            public int motor; //cm3
            public int szemely; //fő
            public int teljesitmeny; //lóerő
        }
        static void Main(string[] args)
        {
            auto auto1 = new auto();
            auto1.ar = 6000000;
            auto1.motor = 1600;
            auto1.szemely = 5;
            auto1.teljesitmeny = 150;
        }
    }
}
--------------------------------------------------
Magyarázat:
A struktúrát a Main fölött, a program osztályban definiáljuk.
public: módosítószó, ami befolyásolja az adott elem láthatóságát, pl. hogy mennyire 
legyen nyilvános. A public azt jelenti, hogy mindenhol látható.
 (A private pl. rejtettet jelent majd.)
struct: a struktúra adatszerkezet kulcsszava.
 A struktúra a procedurális nyelvekben (pl. Pascal) a rekordnak felel meg. 
Ebben összefogunk egy szerkezetbe összetartozó adatokat. 
A struktúra a definiálásakor (lásd a Main felett) még csak egy váz, egy üres szerkezet,
 ami megmutatja, milyen adatokat fogunk tárolni a példányosításkor.
auto: a struktúra neve
public int ar;: adattag, más néven mező a struktúrában. Olyan, mint egy változó,
 de ez a struktúra törzsében van, és gyakran nem adunk neki kezdőértéket.
auto auto1 = new auto();  Itt definiálunk egy auto típusú változót auto1 néven,
 és a new kulcsszóval helyet foglalunk neki a memóriában az auto() konstruktor
 segítségével. Ezt hívjuk példányosításnak (létrehozunk egy példányt).
auto1.ar = 6000000;  Az auto1 változón belül elérjük az ar mezőt (adattagot),
 ennek értékül adjuk a jobb oldalon levő értéket.
--------------------------------------------------
A struktúra nélkül, hagyományosan, változókkal megoldott teljes feladat:

using System;

namespace auto
{
    class Program
    {
        static void Main(string[] args)
        {
            //Többágú szelekció gyakorlása
            //A feladat megoldásában szelekcióból csak többágút használj.
            //A hibás adatbevitelekre írj ki hibaüzenetet.
            //Ford márkakereskedő vagy. Jön a vevő, és érdeklődik a készleten levő autók iránt.
            //A feladat megoldásában szelekcióból csak többágút használj.
            //A hibás adatbevitelekre írj ki hibaüzenetet.
            //Ford márkakereskedő vagy. Jön a vevő, és érdeklődik a készleten levő autók iránt.
            //Feladat:
            //-Kérdezd meg tőle, hogy milyen típus érdekli (legalább 3 típus van készleten).
            double MustangAra = 13020000;
            int MustangMotor = 5000;
            int MustangSzemelyek = 2;
            int MustangTeljesitmeny = 4000;

            double MondeoAra = 10020000;
            int MondeoMotor = 4000;
            int MondeoSzemelyek = 5;
            int MondeoTeljesitmeny = 3000;

            double BMaxAra = 12020000;
            int BMaxMotor = 3000;
            int BMaxSzemelyek = 4;
            int BMaxTeljesitmeny = 2000;

            Console.WriteLine("Ford Mondeo");
            Console.WriteLine("ár: {0}", MondeoAra);
            Console.WriteLine("motor: {0}", MondeoMotor);
            Console.WriteLine("személyek: {0}", MondeoSzemelyek);
            Console.WriteLine("teljesítmény: {0}", MondeoTeljesitmeny);
            Console.WriteLine("--------------------------------------------");
            Console.WriteLine("Ford Bmax");
            Console.WriteLine("ár: {0}", BMaxAra);
            Console.WriteLine("motor: {0}", BMaxMotor);
            Console.WriteLine("személyek: {0}", BMaxSzemelyek);
            Console.WriteLine("teljesítmény: {0}", BMaxTeljesitmeny);
            Console.WriteLine("--------------------------------------------");
            Console.WriteLine("Ford Mustang");
            Console.WriteLine("ár: {0}", MustangAra);
            Console.WriteLine("motor: {0}", MustangMotor);
            Console.WriteLine("személyek: {0}", MustangSzemelyek);
            Console.WriteLine("teljesítmény: {0}", MustangTeljesitmeny);
            Console.WriteLine("--------------------------------------------");
            Console.WriteLine("Milyen autó érdekli? (Ford Mustang (1), Ford Mondeo (2), Ford B-Max (3))");
            int auto = Convert.ToInt32(Console.ReadLine());
            //-A típustól függően adj neki tájékoztatást az autó fontos paramétereiről
            //(pl. ár, motor térfogata, személyek száma, teljesítmény, stb.,).
            double ar = 0;
            switch (auto)
            {
                case 1:
                    Console.WriteLine("{0} Ft-tól, {1} cm3, {2} személyes, {3} lóerős.", MustangAra, MustangMotor, MustangSzemelyek, MustangTeljesitmeny);
                    ar = MustangAra;
                    break;
                case 2:
                    Console.WriteLine("{0} Ft-tól, {1} cm3, {2} személyes, {3} lóerős.", MondeoAra, MondeoMotor, MondeoSzemelyek, MondeoTeljesitmeny);
                    ar = MondeoAra;
                    break;
                case 3:
                    Console.WriteLine("{0} Ft-tól, {1} cm3, {2} személyes, {3} lóerős.", BMaxAra, BMaxMotor, BMaxSzemelyek, BMaxTeljesitmeny);
                    ar = BMaxAra;
                    break;
                default:
                    Console.WriteLine("Nem jó számot írtál be.");
                    break;
            }
            Console.ReadLine();
            //-Meggyőzted a vevőt, meg akarja venni azt a típusú autót, ami iránt érdeklődött - programban ehhez nem kapcsolódik feladat.
            //-Kérdezd meg tőle, milyen módon akar fizetni.
            //ha készpénzzel, akkor adj neki 5% kedvezményt,
            //ha azonnal átutalással, akkor adj neki 3% kedvezményt,
            //ha pedig hitelt vesz föl rá, akkor tegyél az árra 5% felárat.
            //-Ezek után írd ki a rá vonatkozó árat.
            Console.WriteLine("Átutalással (a), Készpénzzel (k) vagy hitellel (h) fizet?");
            char fizet = Convert.ToChar(Console.ReadLine());
            double vegsoAr = 0;
            switch (fizet)
            {
                case 'k':
                    vegsoAr = ar - ((ar / 100.0) * 5.0);
                    break;
                case 'a':
                    vegsoAr = ar - ((ar / 100.0) * 3.0);
                    break;
                case 'h':
                    vegsoAr = ar + ((ar / 100.0) * 5.0);
                    break;
                default:
                    Console.WriteLine("Nem jó betűt írtál be");
                    break;
            }
            if (vegsoAr != 0)
            {
                Console.WriteLine("Összesen {0} Ft-ba fog kerülni az autó.", vegsoAr);
            }


            //Továbbfejlesztés:
            //1. Oldjuk meg, hogy az autók árait konstansokban tároljuk.
            //2. Oldjuk meg, hogy az autók árait rekordban tároljuk.
        }
    }
}

 ------------------------------------------------------------------------------------------

A struktúrával megoldott teljes feladat:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace auto
{
    class Program
    {
        public struct auto
        {
            public double ar; //ft
            public int motorter; //cm3
            public int szemszam; //fő
            public int telj; //lóerő
        }
        static void Main(string[] args)
        {
            //A feladat megoldásában szelekcióból csak többágút használj.
            //A hibás adatbevitelekre írj ki hibaüzenetet.
            //Ford márkakereskedő vagy. Jön a vevő, és érdeklődik a készleten levő autók iránt.
            //Feladat:
            //-      Kérdezd meg tőle, hogy milyen típus érdekli (legalább 3 típus van készleten).
            //-      A típustól függően adj neki tájékoztatást az autó fontos paramétereiről
            //    (pl. ár, motor térfogata, személyek száma, teljesítmény, stb.,).
            //-      Meggyőzted a vevőt, meg akarja venni azt a típusú autót, ami iránt érdeklődött - programban ehhez nem kapcsolódik feladat.
            //-      Kérdezd meg tőle, milyen módon akar fizetni.
            //       ha készpénzzel, akkor adj neki 5% kedvezményt,
            //       ha azonnal átutalással, akkor adj neki 3% kedvezményt,
            //       ha pedig hitelt vesz föl rá, akkor tegyél az árra 5% felárat.
            //-      Ezek után írd ki a rá vonatkozó árat.
            //Továbbfejlesztés:
            //1. Oldjuk meg, hogy az autók árait konstansokban tároljuk.
            //2. Oldjuk meg, hogy az autók árait rekordban tároljuk.
            Console.WriteLine("Milyen típusú autó érdekli önt ? (Mustang, Mondeo, Fiesta");
            string tipus = Console.ReadLine();

            auto mustang = new auto();
            mustang.ar = 1127000;
            mustang.motorter = 5000;
            mustang.szemszam = 2;
            mustang.telj = 418;

            auto mondeo = new auto();
            mondeo.ar = 7750000;
            mondeo.motorter = 2500;
            mondeo.szemszam = 4;
            mondeo.telj = 250;

            auto fiesta = new auto();
            fiesta.ar = 5550000;
            fiesta.motorter = 1600;
            fiesta.szemszam = 4;
            fiesta.telj = 210;

            double ar = 0;

            switch (tipus)
            {
                case "Mustang":
                    Console.WriteLine("Mustang ára {0}", mustang.ar);
                    Console.WriteLine("Mustang motortérfogata {0} köbcenti ", mustang.motorter);
                    Console.WriteLine("Mustang személyek száma {0}", mustang.szemszam);
                    Console.WriteLine("Mustang teljesítménye {0}LE", mustang.telj);
                    ar = mustang.ar;
                    break;
                case "Mondeo":
                    Console.WriteLine(" Mondeo ára {0}", mondeo.ar);
                    Console.WriteLine(" Mondeo motortérfogata {0} köbcenti ", mondeo.motorter);
                    Console.WriteLine(" Mondeo személyek száma {0}", mondeo.szemszam);
                    Console.WriteLine(" Mondeo teljesítménye {0}LE", mondeo.telj);
                    ar = mondeo.ar;
                    break;
                case "Fiesta":
                    Console.WriteLine("Fiesta ára {0}", fiesta.ar);
                    Console.WriteLine("Fiesta motortérfogata {0} köbcenti ", fiesta.motorter);
                    Console.WriteLine("Fiesta személyek száma {0}", fiesta.szemszam);
                    Console.WriteLine("Fiesta teljesítménye {0}LE", fiesta.telj);
                    ar = fiesta.ar;
                    break;
                default:
                    Console.WriteLine("Rossz típust adtál meg.");
                    break;
            }
            Console.WriteLine("Milyen módon akar fizetni? (készpénz,átutalás,hitel) ");
            string valasz = Console.ReadLine();
            double aktar = 0;
            switch (valasz)
            {
                case "készpénz":
                    aktar = ar - (ar / 100.0 * 5.0);
                    Console.WriteLine("Készpénz fizetés esetén 5% kezdvezmény jár.");
                    break;
                case "átutalás":
                    aktar = ar - (ar / 100.0 * 3.0);
                    Console.WriteLine("Azonnali átutalás esetén 3% kezdvezmény jár.");
                    break;
                case "hitel":
                    aktar = ar + (ar / 100.0 * 5.0);
                    Console.WriteLine("Hitel felvétel esetén +5% felárat számítunk fel.");
                    break;
            }
            Console.WriteLine("Az aktuális ár {0}", aktar);
            Console.ReadLine();
        }
    }
}

Nincsenek megjegyzések:

Megjegyzés küldése

2024.04.25., 29., 05.02. Időjárás app

 Feladat: Időjárás app - OOP módszerekkel, haladóknak adatkötéssel Az alkalmazás célja, hogy a felhasználók hozzáadjanak és eltávolítsanak v...