public static (T hiba, int k, int l) Részhalmaz_Első_Hibával(Multihalmaz <T> A, Multihalmaz <T> B) { foreach (T item in A.szótár.Keys) { if (!(item < B)) { return(item, A.szótár[item], 0); } if (A.szótár[item] > B.szótár[item]) { return(item, A.szótár[item], B.szótár[item]); } } return(default(T), 0, 0); }
public static bool operator ==(Válasz v, Válasz m) { if (v.tábla[0, 0].StartsWith("HIÁNYZIK")) { Színes.WriteLine("[red]{Hiányzási hiba a [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában: " + v.tábla[0, 0] + "}"); return(false); } if (v.tábla[0, 0] == nemválaszolt) { Színes.WriteLine("[red]{Nem válaszolt}: [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} kérdésére nem válaszolt."); return(false); } if (v.Size[0] < m.Size[0]) // precautions { Színes.Write("[red]{Mérethiba (X<):} [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában hiányzik [blue]{" + (m.Size[0] - v.Size[0]).ToString() + "} db sor.\n"); return(false); } if (v.Size[0] > m.Size[0]) // precautions { Színes.Write("[red]{Mérethiba (X>):} [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában több ([blue]{" + (v.Size[0] - m.Size[0]).ToString() + "} db) sor van a kelleténél.\n"); return(false); } if (v.Size[1] < m.Size[1]) // precautions { Színes.Write("[red]{Mérethiba (Y<):} [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában hiányzik [blue]{" + (m.Size[1] - v.Size[1]).ToString() + "} db oszlop.\n"); return(false); } if (v.Size[1] > m.Size[1]) // precautions { Színes.Write("[red]{Mérethiba (Y>):} [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában több ([blue]{" + (v.Size[1] - m.Size[1]).ToString() + "} db) sor van a kelleténél.\n"); return(false); } string típus = ALT.szótár[v.lekérdezés].tipus; if (Regex.IsMatch(típus, @"^szám-\d*$")) { double mx = 0, vx = 0; int pontosság = int.Parse(típus.Split('-')[1]); if (v.tábla[0, 0] == m.tábla[0, 0]) { return(true); // erre csak azért van szükség, hogy ha pl. a keresés esetében "nincs a listában" lenne a válasz, akkor ne húzza ki az ilyen válaszokat. } try { vx = Math.Round(double.Parse(v.tábla[0, 0]), pontosság); mx = Math.Round(double.Parse(m.tábla[0, 0]), pontosság); } catch (Exception) { Színes.WriteLine("[red]{Típuseltérési hiba}: [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában nem számmal válaszolt."); return(false); } if (mx != vx) { Színes.WriteLine("[red]{rossz számérték}: [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában rosszul számolt."); return(false); } } if (típus == "logikai") { if ((m.tábla[0, 0] != v.tábla[0, 0])) { Színes.WriteLine("[red]{rossz logikai érték}: [green]{" + v.tulajdonos.név + "} tanuló [blue]{" + v.teszt.név + "} tesztjének [blue]{" + v.lekérdezés + "} válaszában rosszul döntött."); return(false); } } if (típus == "rendezett halmaz") { for (int i = 0; i < v.Size[0]; i++) { for (int j = 0; j < v.Size[1]; j++) { if (v.tábla[i, j] != m.tábla[i, j]) { Színes.Write("[red]{Rekord- vagy sorrendhiba:} " + "[green]{" + v.tulajdonos.név + "} tanuló a " + "[blue]{" + v.teszt.név + "} teszt " + "[blue]{" + v.lekérdezés + "} feladatában a(z) " + "[blue]{" + i.ToString() + "}.sor " + "[blue]{" + j.ToString() + "}.oszlopában: " + "[green]{" + m.tábla[i, j] + "} helyett " + "[red]{" + v.tábla[i, j] + "} szerepel.\n"); return(false); } } } } if (típus == "multihalmaz" || típus == "halmaz") { if (v.halmaz == m.halmaz) { return(true); } if (v.halmaz < m.halmaz || v.halmaz > m.halmaz) { (string hiba, int k, int l) = Multihalmaz <string> .Részhalmaz_Első_Hibával(v.halmaz, m.halmaz); Színes.Write("[red]{Rekordhiba (multiplicitás): } " + "[green]{" + v.tulajdonos.név + "} tanuló " + "[blue]{" + v.teszt.név + "} tesztre adott " + "[blue]{" + v.lekérdezés + "} válaszában a " + "[red]{" + hiba + "} csak " + "[red]{" + k + "} alkalommal szerepel " + "[blue]{" + l + "} helyett.\n"); return(false); } Színes.Write("[red]{Rekordhiba (részhalmaz):} " + "[green]{" + v.tulajdonos.név + "} tanuló" + "[blue]{" + v.teszt + "} tesztre adott" + "[blue]{" + v.lekérdezés + "} válasza " + "és a megoldókulcs válasza közül egyik sem részhalmaza a másiknak.\n"); return(false); } return(true); }