Example #1
0
 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);
 }
Example #2
0
                public static bool operator ==(Válasz v, Válasz m)
                {
                    string hiba;

                    if (v.tábla[0, 0].StartsWith("HIÁNYZIK"))
                    {
                        hiba = $"[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]}}}";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        return(false);
                    }

                    if (v.tábla[0, 0] == nemválaszolt)
                    {
                        hiba = $"[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.";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        return(false);
                    }


                    if (v.Size[0] < m.Size[0])                     // precautions
                    {
                        hiba = $"[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";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        return(false);
                    }

                    if (v.Size[0] > m.Size[0])                     // precautions
                    {
                        hiba = $"[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";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        return(false);
                    }

                    if (v.Size[1] < m.Size[1])                     // precautions
                    {
                        hiba = $"[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";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        return(false);
                    }

                    if (v.Size[1] > m.Size[1])                     // precautions
                    {
                        hiba = $"[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";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);
                        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)
                        {
                            hiba = $"[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.";
                            Színes.WriteLine(hiba);
                            v.tulajdonos.hibalista.Add(hiba);
                            return(false);
                        }

                        if (mx != vx)
                        {
                            hiba = $"[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.";
                            Színes.WriteLine(hiba);
                            v.tulajdonos.hibalista.Add(hiba);
                            return(false);
                        }
                    }

                    if (típus == "logikai")
                    {
                        if ((m.tábla[0, 0] != v.tábla[0, 0]))
                        {
                            hiba = $"[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.";
                            Színes.WriteLine(hiba);
                            v.tulajdonos.hibalista.Add(hiba);
                            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])
                                {
                                    hiba = $"[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";
                                    Színes.WriteLine(hiba);
                                    v.tulajdonos.hibalista.Add(hiba);
                                    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 hibácska, int k, int l) = Multihalmaz <string> .Részhalmaz_Első_Hibával(v.halmaz, m.halmaz);

                            hiba = $"[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]{{{hibácska}}} csak  " +
                                   $"[red]{{{k}}} alkalommal szerepel " +
                                   $"[blue]{{{l}}} helyett.\n";
                            Színes.WriteLine(hiba);
                            v.tulajdonos.hibalista.Add(hiba);
                            return(false);
                        }
                        hiba = $"[red]{{Rekordhiba (részhalmaz):}} " +
                               $"[green]{{{v.tulajdonos.név}}} tanuló " +
                               $"[blue]{{{v.teszt.név}}} 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";
                        Színes.WriteLine(hiba);
                        v.tulajdonos.hibalista.Add(hiba);

                        return(false);
                    }

                    return(true);
                }