whwwwwwww

This commit is contained in:
Lendaia Mirai
2025-12-10 22:37:56 +01:00
parent 45adc0f064
commit d82decbfa2
8 changed files with 734 additions and 432 deletions

View File

@@ -163,8 +163,8 @@ namespace OE.ALGA.Adatszerkezetek
}
public class LancoltLista<T> : Lista<T>, IEnumerable<T>
{
int n;
LancElem<T>? fej;
protected int n;
protected LancElem<T>? fej;
public int Elemszam
{
@@ -283,7 +283,7 @@ namespace OE.ALGA.Adatszerkezetek
}
}
}
private LancElem<T> Indexedik(int index)
protected LancElem<T> Indexedik(int index)
{
LancElem<T>? tmp = fej;
for (int i = 0; i < index; i++)
@@ -350,4 +350,38 @@ namespace OE.ALGA.Adatszerkezetek
aktualisElem = fej;
}
}
public class KorlatoltLancoltLista<T> :LancoltLista<T> where T: IComparable
{
public LancElem<T> min
{
get
{
LancElem<T> cur = this.fej;
for (int i = 0; i < n; i++)
{
if(Indexedik(i).tart.CompareTo(cur.tart) > 0)
{
cur = Indexedik(i);
}
}
return cur;
}
}
public LancElem<T> max
{
get
{
LancElem<T> cur = this.fej;
for (int i = 0; i < n; i++)
{
if(Indexedik(i).tart.CompareTo(cur.tart) < 0)
{
cur = Indexedik(i);
}
}
return cur;
}
}
}
}

View File

@@ -61,13 +61,14 @@ public class FaHalmaz<T> : Halmaz<T> where T : IComparable
}
else
{
if (p.tart.CompareTo(ertek) > 0)
int asd = ertek.CompareTo(p.tart);
if (asd < 0)
{
p.bal = ReszfabaBeszur(p.bal, ertek);
}
else
{
if (p.tart.CompareTo(ertek) < 0)
if (asd > 0)
{
p.jobb = ReszfabaBeszur(p.jobb, ertek);
}

View File

@@ -80,7 +80,7 @@ namespace OE.ALGA.Adatszerkezetek
get
{
FaHalmaz<int> fahalmaz = new FaHalmaz<int>();
for (int i = 0; i < n-1; i++)
for (int i = 0; i < n; i++)
{
fahalmaz.Beszur(i);
}
@@ -139,7 +139,7 @@ namespace OE.ALGA.Adatszerkezetek
return M[honnan, hova];
}
}
public static class GrafBejaras
public static class GrafBejarasok
{
public static Halmaz<V> SzelessegiBejaras<V, E>(Graf<V, E> g, V start, Action<V> muvelet) where V : IComparable
{
@@ -167,19 +167,22 @@ namespace OE.ALGA.Adatszerkezetek
public static Halmaz<V> MelysegiBejaras<V,E>(Graf<V, E> g, V start, Action<V> muvelet) where V : IComparable
{
Halmaz<V> fahalmaz = new FaHalmaz<V>();
MelysegiBejarasRekurzio(g, start, fahalmaz, muvelet);
fahalmaz.Beszur(start);
MelysegiBejarasRekurzio(g, start, muvelet, fahalmaz);
return fahalmaz;
}
private static void MelysegiBejarasRekurzio<V,E>(Graf<V,E> g, V k, Halmaz<V> F, Action<V> muvelet) where V: IComparable
private static void MelysegiBejarasRekurzio<V,E>(Graf<V,E> g, V k, Action<V> muvelet, Halmaz<V> F) where V: IComparable
{
F.Beszur(k);
muvelet(k);
FaHalmaz<V> halmaz = (FaHalmaz<V>)g.Szomszedai(k);
halmaz.Bejar(x =>
{
if (!F.Eleme(x))
{
MelysegiBejarasRekurzio(g, x, F, muvelet);
F.Beszur(x);
MelysegiBejarasRekurzio(g, x, muvelet, F);
}
});
}

View File

@@ -2,5 +2,163 @@
namespace OE.ALGA.Adatszerkezetek
{
// 11. heti labor feladat - Tesztek: 11_KupacTesztek.cs
public class Kupac<T>
{
protected T[] E;
protected int n;
protected Func<T, T, bool> nagyobbPrioritas;
public Kupac(T[] E, int n, Func<T, T, bool> nagyobbPrioritas)
{
this.E = E;
this.n = n;
this.nagyobbPrioritas = nagyobbPrioritas;
KupacotEpit();
}
public static int Bal(int i)
{
return 2 * i + 1;
}
public static int Jobb(int i)
{
return 2 * i + 2;
}
public static int Szulo(int i)
{
return (i - 1) / 2;
}
protected void Kupacol(int i)
{
bool vege = false;
while (!vege)
{
int bal = Bal(i);
int jobb = Jobb(i);
int legnagyobb = i;
if (bal < n && nagyobbPrioritas(E[bal], E[legnagyobb]))
legnagyobb = bal;
if (jobb < n && nagyobbPrioritas(E[jobb], E[legnagyobb]))
legnagyobb = jobb;
if (legnagyobb != i)
{
T csere = E[i];
E[i] = E[legnagyobb];
E[legnagyobb] = csere;
i = legnagyobb;
}
else
{
vege = true;
}
}
}
protected void KupacotEpit()
{
for (int i = n / 2 - 1; i >= 0; i--)
Kupacol(i);
}
}
public class KupacRendezes<T> : Kupac<T> where T : IComparable
{
public KupacRendezes(T[] A)
: base(A, A.Length, (x, y) => x.CompareTo(y) > 0)
{
}
public void Rendezes()
{
int eredetiN = n;
for (int i = n - 1; i >= 1; i--)
{
T csere = E[0];
E[0] = E[i];
E[i] = csere;
n--;
Kupacol(0);
}
n = eredetiN;
}
}
public class KupacPrioritasosSor<T> : Kupac<T>, PrioritasosSor<T>
{
public KupacPrioritasosSor(int meret, Func<T, T, bool> nagyobbPrioritas)
: base(new T[meret], 0, nagyobbPrioritas)
{
}
public bool Ures
{
get { return n == 0; }
}
private void KulcsotFelvisz(int i)
{
while (i > 0 && nagyobbPrioritas(E[i], E[Szulo(i)]))
{
int s = Szulo(i);
T csere = E[i];
E[i] = E[s];
E[s] = csere;
i = s;
}
}
public void Sorba(T ertek)
{
if (n == E.Length)
throw new NincsHelyKivetel();
E[n] = ertek;
KulcsotFelvisz(n);
n++;
}
public T Sorbol()
{
if (Ures)
throw new NincsElemKivetel();
T max = E[0];
E[0] = E[n - 1];
n--;
if (n > 0)
Kupacol(0);
return max;
}
public T Elso()
{
if (Ures)
throw new NincsElemKivetel();
return E[0];
}
public void Frissit(T ertek)
{
int poz = -1;
for (int i = 0; i < n && poz == -1; i++)
{
if (Equals(E[i], ertek))
poz = i;
}
if (poz == -1)
throw new NincsElemKivetel();
KulcsotFelvisz(poz);
Kupacol(poz);
}
}
}

View File

@@ -2,5 +2,110 @@
namespace OE.ALGA.Adatszerkezetek
{
// 12. heti labor feladat - Tesztek: 12_SulyozottGrafTesztek.cs
public class SulyozottEgeszGrafEl : EgeszGrafEl, SulyozottGrafEl<int>
{
public float Suly {get;}
public SulyozottEgeszGrafEl(int honnan, int hova, float suly) : base(honnan, hova)
{
Suly = suly;
}
}
public class CsucsmatrixSulyozottEgeszGraf : SulyozottGraf<int, SulyozottEgeszGrafEl>
{
int n;
float[,] M;
public int CsucsokSzama {get{return n;}}
public int ElekSzama
{
get
{
int elek = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (M[i,j] != null)
{
elek++;
}
}
}
return elek;
}
}
public CsucsmatrixSulyozottEgeszGraf(int n)
{
this.n = n;
M = new float[n,n];
}
public Halmaz<int> Csucsok
{
get
{
FaHalmaz<int> fahalmaz = new FaHalmaz<int>();
for (int i = 0; i < n; i++)
{
fahalmaz.Beszur(i);
}
return fahalmaz;
}
}
public Halmaz<SulyozottEgeszGrafEl> Elek
{
get
{
FaHalmaz<SulyozottEgeszGrafEl> fahalmaz = new FaHalmaz<SulyozottEgeszGrafEl>();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (M[i,j] != null)
{
SulyozottEgeszGrafEl egeszgrafel = new SulyozottEgeszGrafEl(i, j, M[i,j]);
fahalmaz.Beszur(egeszgrafel);
}
}
}
return fahalmaz;
}
}
public float Suly(int honnan, int hova)
{
if(M[honnan, hova] != null)
{
return M[honnan, hova];
}
else
{
throw new NincsElKivetel();
}
}
public Halmaz<int> Szomszedai(int csucs)
{
FaHalmaz<int> fahalmaz = new FaHalmaz<int>();
for (int i = 0; i < n; i++)
{
if (M[csucs, i] != null)
{
fahalmaz.Beszur(i);
}
}
return fahalmaz;
}
public void UjEl(int honnan, int hova, float suly)
{
M[honnan, hova] = suly;
}
public bool VezetEl(int honnan, int hova)
{
return (M[honnan, hova]!= null);
}
}
}

View File

@@ -1,79 +1,80 @@
// using Microsoft.VisualStudio.TestTools.UnitTesting;
// using OE.ALGA.Optimalizalas;
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OE.ALGA.Optimalizalas;
// namespace OE.ALGA.Tesztek
// {
// [TestClass()]
// public class VisszalepesesKeresesTesztek
// {
// [TestMethod()]
// public void JegyzetbenLevoPeldaErtekTeszt() //F2.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_ertek, opt.OptimalisErtek());
// }
namespace OE.ALGA.Tesztek
{
[TestClass()]
public class VisszalepesesKeresesTesztek
{
[TestMethod()]
public void JegyzetbenLevoPeldaErtekTeszt() //F2.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_ertek, opt.OptimalisErtek());
}
// [TestMethod()]
// public void JegyzetbenLevoPeldaMegoldasTeszt() //F2.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
// CollectionAssert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_pakolas, opt.OptimalisMegoldas());
// }
[TestMethod()]
public void JegyzetbenLevoPeldaMegoldasTeszt() //F2.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
CollectionAssert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_pakolas, opt.OptimalisMegoldas());
}
// [TestMethod()]
// public void NagyPeldaMegoldasTeszt() //F2.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
// }
[TestMethod()]
public void NagyPeldaMegoldasTeszt() //F2.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
}
// [TestMethod()]
// public void LepesszamVizsgalat() //F2.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
// Console.WriteLine("Lépésszám: " + opt.LepesSzam);
// }
// }
[TestMethod()]
public void LepesszamVizsgalat() //F2.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
Console.WriteLine("Lépésszám: " + opt.LepesSzam);
}
}
// [TestClass()]
// public class SzetvalasztasEsKorlatozasTesztek
// {
// [TestMethod()]
// public void JegyzetbenLevoPeldaErtekTeszt() //F4.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_ertek, opt.OptimalisErtek());
// }
[TestClass()]
public class SzetvalasztasEsKorlatozasTesztek
{
[TestMethod()]
public void JegyzetbenLevoPeldaErtekTeszt() //F4.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_ertek, opt.OptimalisErtek());
}
// [TestMethod()]
// public void JegyzetbenLevoPeldaMegoldasTeszt() //F4.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
// CollectionAssert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_pakolas, opt.OptimalisMegoldas());
// }
[TestMethod()]
public void JegyzetbenLevoPeldaMegoldasTeszt() //F4.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
CollectionAssert.AreEqual(PakolasTesztEsetek.jegyzet_optimalis_pakolas, opt.OptimalisMegoldas());
}
// [TestMethod()]
// public void NagyPeldaMegoldasTeszt() //F4.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
// }
[TestMethod()]
public void NagyPeldaMegoldasTeszt() //F4.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
}
// [TestMethod()]
// public void LepesszamVizsgalat() //F4.
// {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
// Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
// Console.WriteLine("Lépésszám: " + opt.LepesSzam);
// }
// }
// }
[TestMethod()]
public void LepesszamVizsgalat() //F4.
{
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(PakolasTesztEsetek.nagy_optimalis_ertek, opt.OptimalisErtek());
Console.WriteLine("Lépésszám: " + opt.LepesSzam);
}
}
}

View File

@@ -1,138 +1,138 @@
//using NUnit.Framework;
//using OE.ALGA.Adatszerkezetek;
using NUnit.Framework;
using OE.ALGA.Adatszerkezetek;
//namespace OE.ALGA.Tesztek.Adatszerkezetek
//{
// [TestFixture(Category = "Adatszerkezetek", TestName = "10 - Csúcsmátrix Gráf Tesztek")]
// public class CsucsMatrixGrafTesztek
// {
// [TestCase]
// public void MindenCsucsTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(2);
// Assert.Multiple(() =>
// {
// Assert.That(csg.Csucsok.Eleme(0), Is.True);
// Assert.That(csg.Csucsok.Eleme(1), Is.True);
// });
// }
namespace OE.ALGA.Tesztek.Adatszerkezetek
{
[TestFixture(Category = "Adatszerkezetek", TestName = "10 - Csúcsmátrix Gráf Tesztek")]
public class CsucsMatrixGrafTesztek
{
[TestCase]
public void MindenCsucsTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(2);
Assert.Multiple(() =>
{
Assert.That(csg.Csucsok.Eleme(0), Is.True);
Assert.That(csg.Csucsok.Eleme(1), Is.True);
});
}
// [TestCase]
// public void MindenElTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(3);
// csg.UjEl(0, 1);
// csg.UjEl(0, 2);
// csg.UjEl(1, 2);
[TestCase]
public void MindenElTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(3);
csg.UjEl(0, 1);
csg.UjEl(0, 2);
csg.UjEl(1, 2);
// Assert.Multiple(() =>
// {
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 0)), Is.False);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 1)), Is.True);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 2)), Is.True);
Assert.Multiple(() =>
{
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 0)), Is.False);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 1)), Is.True);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(0, 2)), Is.True);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 0)), Is.False);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 1)), Is.False);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 2)), Is.True);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 0)), Is.False);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 1)), Is.False);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(1, 2)), Is.True);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 0)), Is.False);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 1)), Is.False);
// Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 2)), Is.False);
// });
// }
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 0)), Is.False);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 1)), Is.False);
Assert.That(csg.Elek.Eleme(new EgeszGrafEl(2, 2)), Is.False);
});
}
// [TestCase]
// public void VezetElTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(2);
// Assert.That(csg.VezetEl(0, 1), Is.False);
// csg.UjEl(0, 1);
// Assert.Multiple(() =>
// {
// Assert.That(csg.VezetEl(0, 1), Is.True);
// Assert.That(csg.VezetEl(1, 0), Is.False);
// });
// }
[TestCase]
public void VezetElTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(2);
Assert.That(csg.VezetEl(0, 1), Is.False);
csg.UjEl(0, 1);
Assert.Multiple(() =>
{
Assert.That(csg.VezetEl(0, 1), Is.True);
Assert.That(csg.VezetEl(1, 0), Is.False);
});
}
// [TestCase]
// public void SzomszedsagTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(3);
// csg.UjEl(0, 1);
// csg.UjEl(0, 2);
// csg.UjEl(1, 2);
[TestCase]
public void SzomszedsagTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf csg = new CsucsmatrixSulyozatlanEgeszGraf(3);
csg.UjEl(0, 1);
csg.UjEl(0, 2);
csg.UjEl(1, 2);
// Halmaz<int> a_szomszedai = csg.Szomszedai(0);
// Halmaz<int> b_szomszedai = csg.Szomszedai(1);
// Halmaz<int> c_szomszedai = csg.Szomszedai(2);
Halmaz<int> a_szomszedai = csg.Szomszedai(0);
Halmaz<int> b_szomszedai = csg.Szomszedai(1);
Halmaz<int> c_szomszedai = csg.Szomszedai(2);
// Assert.Multiple(() =>
// {
// Assert.That(a_szomszedai.Eleme(0), Is.False);
// Assert.That(a_szomszedai.Eleme(1), Is.True);
// Assert.That(a_szomszedai.Eleme(2), Is.True);
Assert.Multiple(() =>
{
Assert.That(a_szomszedai.Eleme(0), Is.False);
Assert.That(a_szomszedai.Eleme(1), Is.True);
Assert.That(a_szomszedai.Eleme(2), Is.True);
// Assert.That(b_szomszedai.Eleme(0), Is.False);
// Assert.That(b_szomszedai.Eleme(1), Is.False);
// Assert.That(b_szomszedai.Eleme(2), Is.True);
Assert.That(b_szomszedai.Eleme(0), Is.False);
Assert.That(b_szomszedai.Eleme(1), Is.False);
Assert.That(b_szomszedai.Eleme(2), Is.True);
// Assert.That(c_szomszedai.Eleme(0), Is.False);
// Assert.That(c_szomszedai.Eleme(1), Is.False);
// Assert.That(c_szomszedai.Eleme(2), Is.False);
// });
// }
// }
Assert.That(c_szomszedai.Eleme(0), Is.False);
Assert.That(c_szomszedai.Eleme(1), Is.False);
Assert.That(c_szomszedai.Eleme(2), Is.False);
});
}
}
// [TestFixture(Category = "Adatszerkezetek", TestName = "10 - Gráf Bejárás Tesztek")]
// public class GrafBejarasTesztek
// {
// [TestCase]
// public void SzelessegiBejarasTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf g = new CsucsmatrixSulyozatlanEgeszGraf(6);
// g.UjEl(0, 1);
// g.UjEl(1, 2);
// g.UjEl(1, 4);
// g.UjEl(2, 3);
// g.UjEl(2, 4);
// g.UjEl(4, 3);
// g.UjEl(3, 0);
[TestFixture(Category = "Adatszerkezetek", TestName = "10 - Gráf Bejárás Tesztek")]
public class GrafBejarasTesztek
{
[TestCase]
public void SzelessegiBejarasTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf g = new CsucsmatrixSulyozatlanEgeszGraf(6);
g.UjEl(0, 1);
g.UjEl(1, 2);
g.UjEl(1, 4);
g.UjEl(2, 3);
g.UjEl(2, 4);
g.UjEl(4, 3);
g.UjEl(3, 0);
// string ut = "";
// Halmaz<int> elertCsucsok = GrafBejarasok.SzelessegiBejaras(g, 0, (a) => { ut += a; });
string ut = "";
Halmaz<int> elertCsucsok = GrafBejarasok.SzelessegiBejaras(g, 0, (a) => { ut += a; });
// Assert.Multiple(() =>
// {
// Assert.That(ut == "01243" || ut == "01423", Is.True);
// for (int i = 0; i <= 4; i++)
// Assert.That(elertCsucsok.Eleme(i), Is.True);
// Assert.That(elertCsucsok.Eleme(6), Is.False);
// });
// }
Assert.Multiple(() =>
{
Assert.That(ut == "01243" || ut == "01423", Is.True);
for (int i = 0; i <= 4; i++)
Assert.That(elertCsucsok.Eleme(i), Is.True);
Assert.That(elertCsucsok.Eleme(6), Is.False);
});
}
// [TestCase]
// public void MelysegiBejarasTeszt()
// {
// CsucsmatrixSulyozatlanEgeszGraf g = new CsucsmatrixSulyozatlanEgeszGraf(6);
// g.UjEl(0, 1);
// g.UjEl(1, 2);
// g.UjEl(1, 4);
// g.UjEl(2, 3);
// g.UjEl(2, 4);
// g.UjEl(4, 3);
// g.UjEl(3, 0);
[TestCase]
public void MelysegiBejarasTeszt()
{
CsucsmatrixSulyozatlanEgeszGraf g = new CsucsmatrixSulyozatlanEgeszGraf(6);
g.UjEl(0, 1);
g.UjEl(1, 2);
g.UjEl(1, 4);
g.UjEl(2, 3);
g.UjEl(2, 4);
g.UjEl(4, 3);
g.UjEl(3, 0);
// string ut = "";
// Halmaz<int> elertCsucsok = GrafBejarasok.MelysegiBejaras(g, 0, (a) => { ut += a; });
string ut = "";
Halmaz<int> elertCsucsok = GrafBejarasok.MelysegiBejaras(g, 0, (a) => { ut += a; });
// Assert.Multiple(() =>
// {
// Assert.That(ut == "01243" || ut == "01432" || ut == "01234", Is.True);
// for (int i = 0; i <= 4; i++)
// Assert.That(elertCsucsok.Eleme(i), Is.True);
// Assert.That(elertCsucsok.Eleme(6), Is.False);
// });
// }
// }
//}
Assert.Multiple(() =>
{
Assert.That(ut == "01243" || ut == "01432" || ut == "01234", Is.True);
for (int i = 0; i <= 4; i++)
Assert.That(elertCsucsok.Eleme(i), Is.True);
Assert.That(elertCsucsok.Eleme(6), Is.False);
});
}
}
}

View File

@@ -1,240 +1,240 @@
//using NUnit.Framework;
//using System;
//using OE.ALGA.Adatszerkezetek;
using NUnit.Framework;
using System;
using OE.ALGA.Adatszerkezetek;
//namespace OE.ALGA.Tesztek.Adatszerkezetek
//{
// [TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Prioritásos Sor Tesztek")]
// public class KupacPrioritasosSorTesztek
// {
// [TestCase]
// public void TulSokElemTeszt()
// {
// PrioritasosSor<int> s = new KupacPrioritasosSor<int>(2, (x, y) => x > y);
// s.Sorba(1);
// s.Sorba(2);
// Assert.Throws<NincsHelyKivetel>(() => s.Sorba(3));
// }
namespace OE.ALGA.Tesztek.Adatszerkezetek
{
[TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Prioritásos Sor Tesztek")]
public class KupacPrioritasosSorTesztek
{
[TestCase]
public void TulSokElemTeszt()
{
PrioritasosSor<int> s = new KupacPrioritasosSor<int>(2, (x, y) => x > y);
s.Sorba(1);
s.Sorba(2);
Assert.Throws<NincsHelyKivetel>(() => s.Sorba(3));
}
// [TestCase]
// public void TulKevesElemTeszt()
// {
// PrioritasosSor<int> s = new KupacPrioritasosSor<int>(5, (x, y) => x > y);
// s.Sorba(1);
// s.Sorba(2);
// s.Sorba(3);
// s.Sorbol();
// s.Sorbol();
// s.Sorbol();
// Assert.Throws<NincsElemKivetel>(() => s.Sorbol());
// }
[TestCase]
public void TulKevesElemTeszt()
{
PrioritasosSor<int> s = new KupacPrioritasosSor<int>(5, (x, y) => x > y);
s.Sorba(1);
s.Sorba(2);
s.Sorba(3);
s.Sorbol();
s.Sorbol();
s.Sorbol();
Assert.Throws<NincsElemKivetel>(() => s.Sorbol());
}
// [TestCase]
// public void UresTeszt()
// {
// PrioritasosSor<int> s = new KupacPrioritasosSor<int>(5, (x, y) => x > y);
// Assert.That(s.Ures, Is.True);
// s.Sorba(1);
// Assert.That(s.Ures, Is.False);
// s.Sorba(2);
// Assert.That(s.Ures, Is.False);
// s.Sorbol();
// Assert.That(s.Ures, Is.False);
// s.Elso();
// Assert.That(s.Ures, Is.False);
// s.Sorbol();
// Assert.That(s.Ures, Is.True);
// }
[TestCase]
public void UresTeszt()
{
PrioritasosSor<int> s = new KupacPrioritasosSor<int>(5, (x, y) => x > y);
Assert.That(s.Ures, Is.True);
s.Sorba(1);
Assert.That(s.Ures, Is.False);
s.Sorba(2);
Assert.That(s.Ures, Is.False);
s.Sorbol();
Assert.That(s.Ures, Is.False);
s.Elso();
Assert.That(s.Ures, Is.False);
s.Sorbol();
Assert.That(s.Ures, Is.True);
}
// [TestCase]
// public void SorbaSorbolElsoTeszt()
// {
// PrioritasosSor<int> s = new KupacPrioritasosSor<int>(10, (x, y) => x > y);
// s.Sorba(1);
// s.Sorba(4);
// Assert.Multiple(() =>
// {
// Assert.That(s.Elso(), Is.EqualTo(4));
// Assert.That(s.Sorbol(), Is.EqualTo(4));
// Assert.That(s.Elso(), Is.EqualTo(1));
// });
// s.Sorba(4);
// s.Sorba(2);
// s.Sorba(8);
// s.Sorba(3);
// Assert.That(s.Elso(), Is.EqualTo(8));
// s.Sorba(9);
// s.Sorba(5);
// Assert.Multiple(() =>
// {
// Assert.That(s.Elso(), Is.EqualTo(9));
// Assert.That(s.Elso(), Is.EqualTo(9));
// Assert.That(s.Sorbol(), Is.EqualTo(9));
// Assert.That(s.Elso(), Is.EqualTo(8));
// });
// s.Sorba(7);
// Assert.Multiple(() =>
// {
// Assert.That(s.Sorbol(), Is.EqualTo(8));
// Assert.That(s.Sorbol(), Is.EqualTo(7));
// Assert.That(s.Sorbol(), Is.EqualTo(5));
// });
// s.Sorba(2);
// Assert.Multiple(() =>
// {
// Assert.That(s.Sorbol(), Is.EqualTo(4));
// Assert.That(s.Sorbol(), Is.EqualTo(3));
// Assert.That(s.Sorbol(), Is.EqualTo(2));
// Assert.That(s.Sorbol(), Is.EqualTo(2));
// Assert.That(s.Elso(), Is.EqualTo(1));
// Assert.That(s.Sorbol(), Is.EqualTo(1));
// });
// }
[TestCase]
public void SorbaSorbolElsoTeszt()
{
PrioritasosSor<int> s = new KupacPrioritasosSor<int>(10, (x, y) => x > y);
s.Sorba(1);
s.Sorba(4);
Assert.Multiple(() =>
{
Assert.That(s.Elso(), Is.EqualTo(4));
Assert.That(s.Sorbol(), Is.EqualTo(4));
Assert.That(s.Elso(), Is.EqualTo(1));
});
s.Sorba(4);
s.Sorba(2);
s.Sorba(8);
s.Sorba(3);
Assert.That(s.Elso(), Is.EqualTo(8));
s.Sorba(9);
s.Sorba(5);
Assert.Multiple(() =>
{
Assert.That(s.Elso(), Is.EqualTo(9));
Assert.That(s.Elso(), Is.EqualTo(9));
Assert.That(s.Sorbol(), Is.EqualTo(9));
Assert.That(s.Elso(), Is.EqualTo(8));
});
s.Sorba(7);
Assert.Multiple(() =>
{
Assert.That(s.Sorbol(), Is.EqualTo(8));
Assert.That(s.Sorbol(), Is.EqualTo(7));
Assert.That(s.Sorbol(), Is.EqualTo(5));
});
s.Sorba(2);
Assert.Multiple(() =>
{
Assert.That(s.Sorbol(), Is.EqualTo(4));
Assert.That(s.Sorbol(), Is.EqualTo(3));
Assert.That(s.Sorbol(), Is.EqualTo(2));
Assert.That(s.Sorbol(), Is.EqualTo(2));
Assert.That(s.Elso(), Is.EqualTo(1));
Assert.That(s.Sorbol(), Is.EqualTo(1));
});
}
// class PrioritasosSzoveg : IComparable
// {
// public string Szoveg { get; set; }
// public float Prioritas { get; set; }
// public PrioritasosSzoveg(string szoveg, float prioritas)
// {
// this.Szoveg = szoveg;
// this.Prioritas = prioritas;
// }
class PrioritasosSzoveg : IComparable
{
public string Szoveg { get; set; }
public float Prioritas { get; set; }
public PrioritasosSzoveg(string szoveg, float prioritas)
{
this.Szoveg = szoveg;
this.Prioritas = prioritas;
}
// public int CompareTo(object? obj)
// {
// if (obj is not PrioritasosSzoveg o)
// throw new NullReferenceException();
// else
// return Prioritas.CompareTo(o.Prioritas);
// }
// }
public int CompareTo(object? obj)
{
if (obj is not PrioritasosSzoveg o)
throw new NullReferenceException();
else
return Prioritas.CompareTo(o.Prioritas);
}
}
// [TestCase]
// public void PrioritasValtozasTeszt()
// {
// PrioritasosSzoveg a = new PrioritasosSzoveg("a", 10.0f);
// PrioritasosSzoveg b = new PrioritasosSzoveg("b", 5.0f);
// PrioritasosSzoveg c = new PrioritasosSzoveg("c", 2.0f);
// PrioritasosSzoveg d = new PrioritasosSzoveg("d", 12.0f);
// PrioritasosSzoveg e = new PrioritasosSzoveg("e", 15.0f);
// PrioritasosSzoveg f = new PrioritasosSzoveg("f", 9.0f);
// PrioritasosSzoveg g = new PrioritasosSzoveg("g", 2.0f);
// PrioritasosSor<PrioritasosSzoveg> s = new KupacPrioritasosSor<PrioritasosSzoveg>(10, (x, y) => x.CompareTo(y) > 0);
// s.Sorba(a);
// s.Sorba(b);
// s.Sorba(c);
// s.Sorba(d);
// s.Sorba(e);
// Assert.That(s.Elso().Szoveg, Is.EqualTo("e"));
// d.Prioritas = 22.0f;
// s.Frissit(d);
// Assert.That(s.Elso().Szoveg, Is.EqualTo("d"));
// d.Prioritas = 8.0f;
// s.Frissit(d);
// e.Prioritas = 7.0f;
// s.Frissit(e);
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("a"));
// s.Sorba(f);
// s.Sorba(g);
// Assert.Multiple(() =>
// {
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("f"));
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("d"));
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("e"));
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("b"));
// });
// c.Prioritas = 1.5f;
// s.Frissit(c);
// Assert.Multiple(() =>
// {
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("g"));
// Assert.That(s.Sorbol().Szoveg, Is.EqualTo("c"));
// Assert.That(s.Ures, Is.True);
// });
// }
// }
[TestCase]
public void PrioritasValtozasTeszt()
{
PrioritasosSzoveg a = new PrioritasosSzoveg("a", 10.0f);
PrioritasosSzoveg b = new PrioritasosSzoveg("b", 5.0f);
PrioritasosSzoveg c = new PrioritasosSzoveg("c", 2.0f);
PrioritasosSzoveg d = new PrioritasosSzoveg("d", 12.0f);
PrioritasosSzoveg e = new PrioritasosSzoveg("e", 15.0f);
PrioritasosSzoveg f = new PrioritasosSzoveg("f", 9.0f);
PrioritasosSzoveg g = new PrioritasosSzoveg("g", 2.0f);
PrioritasosSor<PrioritasosSzoveg> s = new KupacPrioritasosSor<PrioritasosSzoveg>(10, (x, y) => x.CompareTo(y) > 0);
s.Sorba(a);
s.Sorba(b);
s.Sorba(c);
s.Sorba(d);
s.Sorba(e);
Assert.That(s.Elso().Szoveg, Is.EqualTo("e"));
d.Prioritas = 22.0f;
s.Frissit(d);
Assert.That(s.Elso().Szoveg, Is.EqualTo("d"));
d.Prioritas = 8.0f;
s.Frissit(d);
e.Prioritas = 7.0f;
s.Frissit(e);
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("a"));
s.Sorba(f);
s.Sorba(g);
Assert.Multiple(() =>
{
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("f"));
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("d"));
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("e"));
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("b"));
});
c.Prioritas = 1.5f;
s.Frissit(c);
Assert.Multiple(() =>
{
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("g"));
Assert.That(s.Sorbol().Szoveg, Is.EqualTo("c"));
Assert.That(s.Ures, Is.True);
});
}
}
// [TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Külső Fügvénnyel Tesztek")]
// public class KupacKulsoFuggvennyelTesztek
// {
// /// <summary>
// /// Nincs külön rendező függvény, ezért ABC sorrendben rendez az IComparable alapján.
// /// </summary>
// [TestCase]
// public void KupacEpitesIComparableAlapjan()
// {
// KupacPrioritasosSor<string> ps = new KupacPrioritasosSor<string>(10, (x, y) => x.CompareTo(y) > 0);
// ps.Sorba("oszibarack");
// ps.Sorba("alma");
// ps.Sorba("korte");
// ps.Sorba("birsalma");
// ps.Sorba("barack");
// ps.Sorba("dio");
// Assert.Multiple(() =>
// {
// Assert.That(ps.Sorbol(), Is.EqualTo("oszibarack"));
// Assert.That(ps.Sorbol(), Is.EqualTo("korte"));
// Assert.That(ps.Sorbol(), Is.EqualTo("dio"));
// Assert.That(ps.Sorbol(), Is.EqualTo("birsalma"));
// Assert.That(ps.Sorbol(), Is.EqualTo("barack"));
// Assert.That(ps.Sorbol(), Is.EqualTo("alma"));
// });
// }
[TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Külső Fügvénnyel Tesztek")]
public class KupacKulsoFuggvennyelTesztek
{
/// <summary>
/// Nincs külön rendező függvény, ezért ABC sorrendben rendez az IComparable alapján.
/// </summary>
[TestCase]
public void KupacEpitesIComparableAlapjan()
{
KupacPrioritasosSor<string> ps = new KupacPrioritasosSor<string>(10, (x, y) => x.CompareTo(y) > 0);
ps.Sorba("oszibarack");
ps.Sorba("alma");
ps.Sorba("korte");
ps.Sorba("birsalma");
ps.Sorba("barack");
ps.Sorba("dio");
Assert.Multiple(() =>
{
Assert.That(ps.Sorbol(), Is.EqualTo("oszibarack"));
Assert.That(ps.Sorbol(), Is.EqualTo("korte"));
Assert.That(ps.Sorbol(), Is.EqualTo("dio"));
Assert.That(ps.Sorbol(), Is.EqualTo("birsalma"));
Assert.That(ps.Sorbol(), Is.EqualTo("barack"));
Assert.That(ps.Sorbol(), Is.EqualTo("alma"));
});
}
// /// <summary>
// /// Van egy saját hossz alapú rendező függvény, ezért elsőként a leghosszabb stringeket adja vissza.
// /// </summary>
// [TestCase]
// public void KupacEpitesSajatFuggvennyel()
// {
// KupacPrioritasosSor<string> ps = new KupacPrioritasosSor<string>(10, (ez, ennel) => ez.Length > ennel.Length);
// ps.Sorba("oszibarack");
// ps.Sorba("alma");
// ps.Sorba("korte");
// ps.Sorba("birsalma");
// ps.Sorba("barack");
// ps.Sorba("dio");
// Assert.Multiple(() =>
// {
// Assert.That(ps.Sorbol(), Is.EqualTo("oszibarack"));
// Assert.That(ps.Sorbol(), Is.EqualTo("birsalma"));
// Assert.That(ps.Sorbol(), Is.EqualTo("barack"));
// Assert.That(ps.Sorbol(), Is.EqualTo("korte"));
// Assert.That(ps.Sorbol(), Is.EqualTo("alma"));
// Assert.That(ps.Sorbol(), Is.EqualTo("dio"));
// });
// }
// }
/// <summary>
/// Van egy saját hossz alapú rendező függvény, ezért elsőként a leghosszabb stringeket adja vissza.
/// </summary>
[TestCase]
public void KupacEpitesSajatFuggvennyel()
{
KupacPrioritasosSor<string> ps = new KupacPrioritasosSor<string>(10, (ez, ennel) => ez.Length > ennel.Length);
ps.Sorba("oszibarack");
ps.Sorba("alma");
ps.Sorba("korte");
ps.Sorba("birsalma");
ps.Sorba("barack");
ps.Sorba("dio");
Assert.Multiple(() =>
{
Assert.That(ps.Sorbol(), Is.EqualTo("oszibarack"));
Assert.That(ps.Sorbol(), Is.EqualTo("birsalma"));
Assert.That(ps.Sorbol(), Is.EqualTo("barack"));
Assert.That(ps.Sorbol(), Is.EqualTo("korte"));
Assert.That(ps.Sorbol(), Is.EqualTo("alma"));
Assert.That(ps.Sorbol(), Is.EqualTo("dio"));
});
}
}
// [TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Rendezés Tesztek")]
// public class KupacRendezesTesztek
// {
// [TestCase]
// public void KupacEpites()
// {
// int[] A = [1, 3, 2, 4, 9, 12, 32, 21, 12, 8, 11];
// _ = new Kupac<int>(A, A.Length, (x, y) => x > y);
[TestFixture(Category = "Adatszerkezetek", TestName = "11 - Kupac Rendezés Tesztek")]
public class KupacRendezesTesztek
{
[TestCase]
public void KupacEpites()
{
int[] A = [1, 3, 2, 4, 9, 12, 32, 21, 12, 8, 11];
_ = new Kupac<int>(A, A.Length, (x, y) => x > y);
// Assert.Multiple(() =>
// {
// for (int i = 1; i < A.Length; i++)
// Assert.That(A[Kupac<int>.Szulo(i)] >= A[i], Is.True);
// });
// }
Assert.Multiple(() =>
{
for (int i = 1; i < A.Length; i++)
Assert.That(A[Kupac<int>.Szulo(i)] >= A[i], Is.True);
});
}
// [TestCase]
// public void KupacRendezes()
// {
// int[] A = [5, 8, 7, 0, 9, 6, 4, 1, 3, 2];
// KupacRendezes<int> k = new KupacRendezes<int>(A);
// k.Rendezes();
[TestCase]
public void KupacRendezes()
{
int[] A = [5, 8, 7, 0, 9, 6, 4, 1, 3, 2];
KupacRendezes<int> k = new KupacRendezes<int>(A);
k.Rendezes();
// Assert.Multiple(() =>
// {
// for (int i = 1; i < A.Length; i++)
// Assert.That(A[i], Is.EqualTo(i));
// });
// }
// }
//}
Assert.Multiple(() =>
{
for (int i = 1; i < A.Length; i++)
Assert.That(A[i], Is.EqualTo(i));
});
}
}
}