Csak a legelejét néztük át, házi átolvasni a következő órára.
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;
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.
//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.
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.
//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.
}
}
} 03.31. Eddig jutottunk el.
------------------------------------------------------------------------------------------
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();
}
}
}