2020. február 28., péntek

2020.02.28. Ford feladat megoldása struktúrával

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

namespace auto
{
    class Program
    {
        public struct autok
        {
            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();

            autok mustang = new autok();
            mustang.ar = 11270000;
            mustang.motorter = 5000;
            mustang.szemszam = 2;
            mustang.telj = 418;

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

            autok fiesta = new autok();
            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();
        }

    }

}

2020.02.28. Ford feladat továbbfejlesztése - A struktúra adatszerkezet


Továbbfejlesztés:
Oldjuk meg, hogy az autók árait struktúrában tároljuk.

Új anyag:

namespace strukturaBevezetes
{
    class Program
    {
        public struct autok
        {
            public int ar; //ft
            public int motor; //cm3
            public int szemely; //fő
            public int teljesitmeny; //lóerő
        }

        static void Main(string[] args)
        {
            autok auto1 = new autok();
            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.
autok: 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.
autok auto1 = new autok();  Itt definiálunk egy autok típusú változót auto1 néven, és a new kulcsszóval helyet foglalunk neki a memóriában az autok() 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.
--------------------------------------------------

2020.02.28. Házi feladat leadásának új módja

A kész házit otthon mentsd a Drive-on egy "Saját Név - Programozás házik" nevű mappába egy új google dokumentumba.  Létrehozás után oszd meg velem írási jog beállításával. Ezt ugyanaznap reggel is megteheted, ha előző nap elfelejtetted, de az iskolába érkezés után már nem ér :)
Ezzel egyidőben persze a digifüzetedben is ott legyen a helyén.
Minden új házit új dokumentumba ments.
Mindkét helyen továbbra is színesben legyen a kód.

Lehetőleg éjszaka már ne írjál házit, hanem aludj.

2020.02.28. Ford megoldás

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

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.
            
            //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.
            Console.WriteLine("Átutalással (a), Készpénzzel (k) vagy hitellel (h) fizet?");
            char fizet = Convert.ToChar(Console.ReadLine());
            double kedvezmeny = 0;
            switch (fizet)
            {
                case 'k':
                    kedvezmeny = ar - ((ar / 100.0) * 5.0);
                    break;
                case 'a':
                    kedvezmeny = ar - ((ar / 100.0) * 3.0);
                    Console.WriteLine("Összesen {0} Ft-be fog kerülni az autó.", kedvezmeny);
                    break;
                case 'h':
                    kedvezmeny = ar + ((ar / 100.0) * 5.0);
                    Console.WriteLine("Összesen {0} Ft-be fog kerülni az autó.", kedvezmeny);
                    break;
                default:
                    Console.WriteLine("Nem jó betűt írtál be");
                    break;
            }

            Console.WriteLine("Összesen {0} Ft-be fog kerülni az autó.", kedvezmeny);
            //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.
        }
    }
}