Ejemplo n.º 1
0
        public SimilarityResult Analyze(ICodeSimilarityMetricCalculator selMetric, ProgrammingProblem problem)
        {
            DateTime         current = DateTime.Now;
            SimilarityResult result  = new SimilarityResult(problem, selMetric);

            for (int i = 0; i < problem.NumSol; i++)
            {
                for (int j = 0; j < problem.NumSol; j++)
                {
                    if (i != j)
                    {
                        StudentSolution sol1 = result.getSimilarityObject(i, j).Solution1;
                        StudentSolution sol2 = result.getSimilarityObject(i, j).Solution2;

                        double measure = selMetric.CalculateSimilarityMeasure(sol1, sol2);

                        result.setSimilarity(i, j, measure);
                        result.setSimilarity(j, i, measure);
                    }
                    else
                    {
                        result.setSimilarity(i, i, 1.0); // neæemo ga usporeðivati sa samim sobom
                    }
                }
            }
            System.Windows.Forms.MessageBox.Show("Runtime: " + DateTime.Now.Subtract(current).ToString());
            return(result);
        }
Ejemplo n.º 2
0
        public void LoadProblemFromDatabase(string pathName)
        {
            OleDbConnection dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName);

            dbConnection.Open();

            OleDbCommand dbCommand = dbConnection.CreateCommand();

            dbCommand.CommandText = "select * from Pitanje";

            OleDbDataReader dbReader = dbCommand.ExecuteReader();

            while (dbReader.Read())
            {
                int idPitanja  = (int)dbReader.GetValue(1);
                int idPredmeta = (int)dbReader.GetValue(2);
                ProgrammingProblem newProblem = new ProgrammingProblem();
                newProblem.ProblemID = Convert.ToString(idPredmeta) + " - " + Convert.ToString(idPitanja);

                OleDbCommand solCommand = dbConnection.CreateCommand();
                solCommand.CommandText = "select * from StudentskoRjesenje WHERE IDPitanja = " + Convert.ToString(idPitanja) + " AND IDPredmeta = " + Convert.ToString(idPredmeta);

                OleDbDataReader solReader = solCommand.ExecuteReader();

                while (solReader.Read())
                {
                    newProblem.addStudentSolution(solReader.GetValue(7).ToString(), solReader.GetValue(1).ToString());
                }

                _listLoadedProblems.Add(newProblem);
            }



            // uèitavamo sve fajlove

            /*DirectoryInfo di = new DirectoryInfo(pathName);
             * FileInfo[] rgFiles = di.GetFiles("*.txt");
             *
             * foreach (FileInfo fi in rgFiles)
             * {
             *      newProblem.addStudentSolution(fi);
             * }
             *
             * _listLoadedProblems.Add(newProblem);*/

            dbConnection.Close();
        }
Ejemplo n.º 3
0
        public void LoadProblemFromDirectory(string pathName, string problemID)
        {
            ProgrammingProblem newProblem = new ProgrammingProblem();

            newProblem.ProblemID = problemID;

            // uèitavamo sve fajlove
            DirectoryInfo di = new DirectoryInfo(pathName);

            FileInfo[] rgFiles = di.GetFiles("*.txt");

            foreach (FileInfo fi in rgFiles)
            {
                newProblem.addStudentSolution(fi);
            }

            _listLoadedProblems.Add(newProblem);
        }
Ejemplo n.º 4
0
        public SimilarityResult(ProgrammingProblem inProblem, ICodeSimilarityMetricCalculator inMetric)
        {
            _usedMetric = inMetric;

            int numSol = inProblem.ListSolutions.Count;

            _matSolutionsSimilarity = new SolutionsSimilarity[numSol, numSol];
            for (int i = 0; i < numSol; i++)
            {
                for (int j = 0; j < numSol; j++)
                {
                    _matSolutionsSimilarity[i, j] = new SolutionsSimilarity();

                    _matSolutionsSimilarity[i, j].Solution1         = inProblem.ListSolutions[i];
                    _matSolutionsSimilarity[i, j].Solution2         = inProblem.ListSolutions[j];
                    _matSolutionsSimilarity[i, j].SimilarityMeasure = 0.0;
                }
            }
        }
Ejemplo n.º 5
0
        public SimilarityResult BatchAnalyze(ICodeSimilarityMetricCalculator selMetric, ProgrammingProblem problem)
        {
            DateTime         current = DateTime.Now;
            SimilarityResult result  = new SimilarityResult(problem, selMetric);

            StudentSolution[] solutions = new StudentSolution[problem.NumSol];
            for (int i = 0; i < problem.NumSol; i++)
            {
                solutions[i] = result.getSimilarityObject(i, i).Solution1;
            }

            double [,] tmp = new double[problem.NumSol, problem.NumSol];
            tmp            = selMetric.BatchSimilarityMeasure(solutions);

            for (int i = 0; i < problem.NumSol; i++)
            {
                for (int j = 0; j < problem.NumSol; j++)
                {
                    if (i != j)
                    {
                        double measure = tmp[i, j];

                        result.setSimilarity(i, j, measure);
                        result.setSimilarity(j, i, measure);
                    }
                    else
                    {
                        result.setSimilarity(i, i, 1.0); // neæemo ga usporeðivati sa samim sobom
                    }
                }
            }
            System.Windows.Forms.MessageBox.Show("Runtime: " + DateTime.Now.Subtract(current).ToString());
            return(result);
        }