c#
A portfolio.hu oldalon megjelent (és archivalt) cikk nyomtatott változata ITT olvasható!
A 2020. májusi emelt szintű érettségi vizsga programozási feladatát oldottam meg. Részletesen elmagyarázom és megmutatom a megoldást az alábbi videókon. Remélem, sokan kedvet kaptok a prgramozáshoz!
Az 1. és 2. rész megoldása:
A 3. és 4. rész megoldása:
Az 5. rész megoldása:
És itt az általam megírt programkód!
Az Info Tanár Mentor Program Klub támogatásával elkészült egy videó sorozat, amely a C# programozás elsajátítást segíti lépésről-lépésre.
(egy korábbi cikkben már felkerült a sorozat első három része)
Az egyes részek elérhetőségei és a film hossza:
Ezen kívül elérhető Karsa Zoltán: C# programozás c. jegyzete, amelyet ITT lehet elolvasni! (..de letölthető innet is!)
Gyors segítség:
Ha elírjuk a változók nevét:
Kis és nagybetű számít
Sokan használják ugyanazt a nevet eltérő betűmérettel, pl.: ha egy függvény beállítja egy osztály „PontokSzama” mezőjét, a paraméter lehet „pontokSzama” nevű.
Ne cseréljünk fel betűket.
Ha tünetek jelentkeznek:
Piros aláhúzás
Ha a View / Error List menüponttal megjelenítjük az Error List ablakot>>
A kódkiegészítés nem ajánlja fel a változó nevét, és az utána leütött pontra sem jelenik meg metódus lista.
Gyakran előfordul:
A tömbnél kapcsos zárójel kell: szamok[5] és nem szamok(5)
A for ciklus fejlécében pontosvesszők vannak: for(int i=0; i<10; i++)
A do{ … }while(…) után kell pontosvessző: do{ i++; }while(i<10);
A sima while-nál viszont nem kell.
Ha segítségre szorulsz, keress az alábbi könyvekben:
Két szám legnagyobb közös osztója és legkisebb közös többszöröse
A program az Euklideszi algoritmust használja. Az algoritmus addig vonja ki a nagyobb számból a kisebb számot, amíg egyenlők nem lesznek. Az így kapott érték a két szám legnagyobb közös osztója.
int a, b, x, y;
Console.WriteLine("Írj be légy szíves 2 egész számot, kiírom a legnagyobb közös osztóját\nEgyik szám: ");
a = Int32.Parse(Console.ReadLine());
Console.WriteLine("A másik szám: ");
b = Int32.Parse(Console.ReadLine());
x=a;
y=b;
while (a != b)
{
if (a > b)
a = a - b;
else
b = b - a;
}
Console.WriteLine("A legnagyobb közös osztó: {0}\nA legkisebb közös többszörös: {1}",
a, x*y/a);
Console.ReadKey();
Másodfokú egyenlet megoldása
A következő programrész másodfokú egyenlet gyökeit keresi. Tovább lehet fejleszteni. Nincs megoldva benne az az eset, ha a másodfokú tag együtthatója 0. Az eredménykiírás formátumán is lehet javítani.
double a, b, c;
Console.WriteLine(" 2\na x + b x + c = 0 egyenlet gyökeinek meghatározása\n");
Console.Write("a: ");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("b: ");
b = Convert.ToDouble(Console.ReadLine());
Console.Write("c: ");
c = Convert.ToDouble(Console.ReadLine());
double d = Math.Pow(b,2) - 4 * a * c, gyök1, gyök2;
if (d < 0)
Console.WriteLine("Nincs valós gyök.");
else
{
if (d == 0)
{
gyök1 = -b / (2 * a);
Console.WriteLine("Egy valós gyök van, értéke: {0}", gyök1);
}
else
{
gyök1 = (-b + Math.Sqrt(d)) / (2 * a);
gyök2 = (-b - Math.Sqrt(d)) / (2 * a);
Console.WriteLine("Két valós gyök van, értékük: {0} és {1}", gyök1, gyök2);
}
}
Console.Write("A kilépéshez üss le egy billentyűt!");
Console.ReadKey();
Az első 10000 prímszám előállítása és szövegfájlba írása
A megoldás során a 2-es számot beírjuk elsőnek a prímek.txt nevű szövegfájlba. Ez a fájl a kész program könyvtárában jön létre. 3-tól kezdve végigvizsgáljuk a páratlan számokat, hogy van-e valódi osztójuk. Az osztó keresni csak a szám négyzetgyökéig érdemes. Ha nem találunk a számhoz osztót, akkor beírjuk mint soron következő prímet a szövegfájlba.
StreamWriter prímek = new StreamWriter("prímek.txt");
prímek.WriteLine("2");
int szám=3, h=1, osztó;
const int db = 10000;
while(h<db)
{
osztó=3;
bool prím=true;
while ((Math.Pow(osztó,2) <= szám) && prím)
{
if ((szám % osztó) == 0)
prím = false;
osztó += 2;
}
if (prím)
{
primek.WriteLine(szám);
h++;
}
szám += 2;
}
prímek.Close();
Lottósorsolás
5 egész számot sorsolunk 1 és 90 között, és sorba rendezve kiíratjuk. A lottószámok előállításához a véletlen szám generátort használjuk. A generátor paraméter nélküli híváskor a rendszeridőt veszi alapul. A "húzás" során arra is kell figyelni, hogy ha olyan számot kapunk, ami már szerepel az eddig előállítottak között, akkor újat kell helyette generálni. Az öt lottószámot egy külön függvény rendezi sorba a buborék módszerrel.
int[]lotto_számok = new int[5];
int k;
Random kalap = new Random();
lotto_számok[0]=kalap.Next(1,91);
int húzások_száma = 1;
do
{
lotto_számok[húzások_száma] = kalap.Next(1, 91);
k=0;
while (lotto_számok[k]!=lotto_számok[húzások_száma])
k++;
if (k == húzások_száma)
húzások_száma++;
} while (húzások_száma<5);
rendezés(lotto_számok);
Console.Write("A kihúzott számok:");
foreach(int szám in lotto_számok)
Console.Write("\t"+szám);
Console.Write("\n\nA kilépéshez üss le egy billentyűt!");
Console.ReadKey();
A rendezés függvénye:
static void rendezés(int[] s)
{
for (int i = 0; i < s.Length; i++)
{
for (int j = 0; j < s.Length - i - 1; j++)
{
int csere;
if (s[j + 1] < s[j])
{
csere = s[j];
s[j] = s[j + 1];
s[j + 1] = csere;
}
}
}
return;
}