コード例 #1
0
ファイル: Program.cs プロジェクト: MolnAtt/DBPEV
 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);
 }
コード例 #2
0
ファイル: Program.cs プロジェクト: MolnAtt/DBPEV
                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);
                }