Mivel rosszabb az én megoldásom mint a tanáré?
Kíváncsi vagyok, mivel rosszabb az én megoldásom, mert nem fogadta el, pedig tökéletesen működik:
Tanár verzió:
listBox1.Items.Clear();
string[] metszet = new string[100];
int l = 0;
int o = 0;
int mdb = 0;
while (l < kal && o < mag)
{
if (kalium[l].CompareTo(magnezium[o]) < 0)
{
l++;
}
else if (kalium[l].CompareTo(magnezium[o]) > 0)
{
o++;
}
else
{
metszet[mdb] = kalium[l];
mdb = mdb + 1;
l++;
o++;
}
}
for (int i = 0; i <mdb; i++)
{
listBox1.Items.Add(metszet[i]);
}
}
Az én verzióm:
listBox1.Items.Clear();
string[] metszet = kalium.Intersect(kalcium).ToArray();
Array.Sort(metszet);
for (int i = 0; i < metszet.Length-1; i++)
{
if (metszet[i]!=null)
{
listBox1.Items.Add(metszet[i]);
}
}
Előre is köszönöm!
Attól is függ mi volt a feladat amire ez a megoldás :-D
Egyébként gyakori hogy a tanár csak olyan megoldást fogad el amilyet előre elvár. Alternatív megoldást pedig nem, hiába felel meg megoldásaként.
Annyi volt, hogy be kellett olvasni négy fájlból tömbökbe az adatokat, és 2 tömbnek a metszetét rendezve ki kellett írni.
Ő előre rendezi a tömböket azért nincs benne a bemásolt kódban, én meg csak a metszetet rendezem.
A megoldásod jó: C#-ban, vagy olyan környezetben, ahol van Intersect művelet implementálva az adott adatszerkezetnek, amit használsz. De eleinte, amikor elkezdesz programozni az a fontos, hogy a legelemibb utasításokból tudd felépíteni a dolgokat, hogy később más nyelveken, adatszerkezetekkel is könnyen boldogulj. Majd ha már kisujjból tudod implementálni magadtól is, akkor nyugodtan használhatod.
De amúgy ha nagyon kötekedni akarunk még, akkor a tanárod verziójának kisebb a művelet/memóriaigénye, mert amikor azt mondod, hogy kalium.Intersect(kalcium).ToArray();, akkor lefoglal egy külön memóriaterületet a metszetnek és ebben gyűjti bele az elemeket, ez valamilyen IEnumerable típus lesz, majd, amikor a ToArray-el ezt tömbbé alakítod, akkor megint átmásolja az adatokat valahova máshova egy tömbbe.
Aztán amit még tökéletesíteni lehetne a kódban az a tabulálás, illetve a változónevek elnevezése sem az igazi, de ezek mindkét kódra igazak.
Tabulálva volt, csak a gyk kitörölte őket, és így rakta ki.
Egyébként mitől lesz egy változó név jó? Persze, hogy nem magyarul írjuk, de ezen kívül?
Ebben a könyvben részletesen leírja:
Egyébként igen, célszerűen angolul van, illetve ránézve egyből látja az is, aki nem ismeri a kódot, hogy mit tárolsz benne, ergo az l, o, i stb. változónevek nem igazán célszerűek
Igen, azokat az o,l indexeket en is néztem, de mint mondtam az nem az én kódom.
Köszönöm a linket!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!