/// <summary> /// Строит ассоциативные поля для всех экспериментальных слов. /// </summary> private void btnFieldsForAllWords_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; //проверяем списки с экспериментальными данными на корректность длины if (CheckLists()) { //очищаем компоненты данных dgvWords.Rows.Clear(); dgvMarkems1.Rows.Clear(); dgvMarkems2.Rows.Clear(); dgvСorFactor1.Rows.Clear(); dgvСorFactor2.Rows.Clear(); foreach (string word in AllWords) { dgvWords.Rows.Add(word, 0, 0, 0); } //инициализируем параметры int[] Markems1 = new int[Markems.Count]; int[] Markems2 = new int[Markems.Count]; for (int i = 0; i < Markems.Count; i++) { Markems1[i] = 0; Markems2[i] = 0; } double NumSwitInMarkems = 0; double NumAllSwitInMarkems = 0; double NumConcInMarkems = 0; double NumAllConcInMarkems = 0; double NumInMarkems = 0; double NumAllInMarkems = 0; double NumSwitInNoMarkems = 0; double NumAllSwitInNoMarkems = 0; double NumConcInNoMarkems = 0; double NumAllConcInNoMarkems = 0; double NumInNoMarkems = 0; double NumAllInNoMarkems = 0; double NumMarkemsSwitMarkems = 0; double NumAllMarkemsSwitMarkems = 0; double NumMarkemsConcMarkems = 0; double NumAllMarkemsConcMarkems = 0; double NumMarkemsAllMarkems = 0; double NumAllMarkemsAllMarkems = 0; double NumMarkemsSwitNoMarkems = 0; double NumAllMarkemsSwitNoMarkems = 0; double NumMarkemsConcNoMarkems = 0; double NumAllMarkemsConcNoMarkems = 0; double NumMarkemsAllNoMarkems = 0; double NumAllMarkemsAllNoMarkems = 0; _field = new FieldConstruction(AllWords, Definitions, DirectAssociations, FreeAssociations, Similarities, Opposities); //строим ассоциативное поле для каждого слова из экспериментального списка for (int k = 0; k < AllWords.Count; k++) { _field.InitField(AllWords[k]); //строим ассоциативное поле для выбранного слова //инициализируем параметры ассоциативного поля int NumOfSwitches = 0; int NumOfAllSwitches = 0; int NumOfContactors = _field.Contactors.Count; int NumOfAllContactors = _field.NumOfContactors; double NumOfSwAmongMarkems = 0; double NumOfConAmongMarkems = 0; double NumOfAllSwAmongMarkems = 0; double NumOfAllConAmongMarkems = 0; //вычисляем параметры for (int i = 0; i < AllWords.Count; i++) { if (_field.AllWordsAsSwitches[AllWords[i]] != 0 || _field.AllWordsAsContactors[AllWords[i]] != 0) { dgvWords.Rows[i].Cells[1].Value = (int)dgvWords.Rows[i].Cells[1].Value + _field.AllWordsAsSwitches[AllWords[i]]; dgvWords.Rows[i].Cells[2].Value = (int)dgvWords.Rows[i].Cells[2].Value + _field.AllWordsAsContactors[AllWords[i]]; dgvWords.Rows[i].Cells[3].Value = (int)dgvWords.Rows[i].Cells[3].Value + _field.AllWordsAsSwitches[AllWords[i]] + _field.AllWordsAsContactors[AllWords[i]]; int ind = Markems.IndexOf(AllWords[i]); if (ind != -1) { Markems1[ind] += _field.AllWordsAsContactors[AllWords[i]]; Markems2[ind] += _field.AllWordsAsSwitches[AllWords[i]] + _field.AllWordsAsContactors[AllWords[i]]; } if (_field.AllWordsAsSwitches[AllWords[i]] != 0) { NumOfSwitches++; NumOfAllSwitches += _field.AllWordsAsSwitches[AllWords[i]]; if (ind != -1) { NumOfSwAmongMarkems++; NumOfAllSwAmongMarkems += _field.AllWordsAsSwitches[AllWords[i]]; } } if ((_field.AllWordsAsContactors[AllWords[i]] != 0) && (ind != -1)) { NumOfConAmongMarkems++; NumOfAllConAmongMarkems += _field.AllWordsAsContactors[AllWords[i]]; } } } double NumOfMarkemsInAll = NumOfSwAmongMarkems + NumOfConAmongMarkems; double NumOfAllMarkemsInAll = NumOfAllSwAmongMarkems + NumOfAllConAmongMarkems; double ShareOfMarkemsInSwitches, ShareOfMarkemsInContactors; double ShareOfMarkemsInAllSwitches, ShareOfMarkemsInAllContactors; double ShareOfMarkemsInAll, ShareOfAllMarkemsInAll; if (NumOfSwitches == 0) { ShareOfMarkemsInSwitches = 0; ShareOfMarkemsInAllSwitches = 0; } else { ShareOfMarkemsInSwitches = NumOfSwAmongMarkems / NumOfSwitches; ShareOfMarkemsInAllSwitches = NumOfAllSwAmongMarkems / NumOfAllSwitches; } if (NumOfContactors == 0) { ShareOfMarkemsInContactors = 0; ShareOfMarkemsInAllContactors = 0; } else { ShareOfMarkemsInContactors = NumOfConAmongMarkems / NumOfContactors; ShareOfMarkemsInAllContactors = NumOfAllConAmongMarkems / NumOfAllContactors; } if (NumOfSwitches == 0 && NumOfContactors == 0) { ShareOfMarkemsInAll = 0; ShareOfAllMarkemsInAll = 0; } else { ShareOfMarkemsInAll = NumOfMarkemsInAll / (NumOfSwitches + NumOfContactors); ShareOfAllMarkemsInAll = NumOfAllMarkemsInAll / (NumOfAllSwitches + NumOfAllContactors); } if (Markems.IndexOf(AllWords[k]) != -1) { NumSwitInMarkems += NumOfSwitches; NumAllSwitInMarkems += NumOfAllSwitches; NumConcInMarkems += NumOfContactors; NumAllConcInMarkems += NumOfAllContactors; NumInMarkems += NumOfSwitches + NumOfContactors; NumAllInMarkems += NumOfAllSwitches + NumOfAllContactors; NumMarkemsSwitMarkems += NumOfSwAmongMarkems; NumAllMarkemsSwitMarkems += NumOfAllSwAmongMarkems; NumMarkemsConcMarkems += NumOfConAmongMarkems; NumAllMarkemsConcMarkems += NumOfAllConAmongMarkems; NumMarkemsAllMarkems += NumOfMarkemsInAll; NumAllMarkemsAllMarkems += NumOfAllMarkemsInAll; } else { NumSwitInNoMarkems += NumOfSwitches; NumAllSwitInNoMarkems += NumOfAllSwitches; NumConcInNoMarkems += NumOfContactors; NumAllConcInNoMarkems += NumOfAllContactors; NumInNoMarkems += NumOfSwitches + NumOfContactors; NumAllInNoMarkems += NumOfAllSwitches + NumOfAllContactors; NumMarkemsSwitNoMarkems += NumOfSwAmongMarkems; NumAllMarkemsSwitNoMarkems += NumOfAllSwAmongMarkems; NumMarkemsConcNoMarkems += NumOfConAmongMarkems; NumAllMarkemsConcNoMarkems += NumOfAllConAmongMarkems; NumMarkemsAllNoMarkems += NumOfMarkemsInAll; NumAllMarkemsAllNoMarkems += NumOfAllMarkemsInAll; } //выводим полученные параметры в DataGridView dgvAllWords.Rows[k].Cells[1].Value = NumOfSwitches.ToString() + " (" + NumOfAllSwitches.ToString() + ")\n"; dgvAllWords.Rows[k].Cells[2].Value = NumOfContactors.ToString() + " (" + NumOfAllContactors.ToString() + ")\n"; dgvAllWords.Rows[k].Cells[3].Value = (NumOfSwitches + NumOfContactors).ToString() + " (" + (NumOfAllSwitches + NumOfAllContactors).ToString() + ")"; dgvAllWords.Rows[k].Cells[4].Value = String.Format("{0:0.00}", ShareOfMarkemsInSwitches) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllSwitches) + ")"; dgvAllWords.Rows[k].Cells[5].Value = String.Format("{0:0.00}", ShareOfMarkemsInContactors) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllContactors) + ")"; dgvAllWords.Rows[k].Cells[6].Value = String.Format("{0:0.00}", ShareOfMarkemsInAll) + " (" + String.Format("{0:0.00}", ShareOfAllMarkemsInAll) + ")"; if (_field.Steps == 0) { dgvAllWords.Rows[k].Cells[7].Value = (_field.Steps) + " " + (_field.Levels); } else { dgvAllWords.Rows[k].Cells[7].Value = (_field.Steps) + " " + (_field.Levels + 1); } } int[] MarkemsRang = new int[Markems.Count]; for (int i = 0; i < Markems.Count; i++) { MarkemsRang[i] = Markems.Count - i; } for (int i = 0; i < Markems.Count; i++) { dgvMarkems1.Rows.Add(Markems[i], MarkemsRang[i], Markems1[i], 0); dgvMarkems2.Rows.Add(Markems[i], MarkemsRang[i], Markems2[i], 0); } /*вычисляем коэффициенты корреляции между рангами и частотами встречаемости маркем * и выводим полученные коэффициенты в DataGridView*/ int numOfGroups = Markems.Count / Constants.NUM_OF_MARKEMS; for (int i = 0; i < numOfGroups; i++) { dgvСorFactor1.Rows.Add(i * 10 + 1 + " - " + (i + 1) * 10, Utility.CalcCorretationFactor(MarkemsRang, Markems1, i, true)); dgvСorFactor2.Rows.Add(i * 10 + 1 + " - " + (i + 1) * 10, Utility.CalcCorretationFactor(MarkemsRang, Markems2, i, true)); } tbxCorFactor1.Text = Utility.CalcCorretationFactor(MarkemsRang, Markems1, 0, false).ToString(); tbxCorFactor2.Text = Utility.CalcCorretationFactor(MarkemsRang, Markems2, 0, false).ToString(); tbxAvgNumSwitInMarkems.Text = (NumSwitInMarkems / 50).ToString() + " (" + (NumAllSwitInMarkems / 50).ToString() + ")"; tbxAvgNumConcInMarkems.Text = (NumConcInMarkems / 50).ToString() + " (" + (NumAllConcInMarkems / 50).ToString() + ")"; tbxAvgNumSwitInNoMarkems.Text = (NumSwitInNoMarkems / 50).ToString() + " (" + (NumAllSwitInNoMarkems / 50).ToString() + ")"; tbxAvgNumConcInNoMarkems.Text = (NumConcInNoMarkems / 50).ToString() + " (" + (NumAllConcInNoMarkems / 50).ToString() + ")"; tbxAvgNumAllInMarkems.Text = (NumInMarkems / 50).ToString() + " (" + (NumAllInMarkems / 50).ToString() + ")"; tbxAvgNumAllInNoMarkems.Text = (NumInNoMarkems / 50).ToString() + " (" + (NumAllInNoMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsSwitMarkems.Text = (NumMarkemsSwitMarkems / 50).ToString() + " (" + (NumAllMarkemsSwitMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsConcMarkems.Text = (NumMarkemsConcMarkems / 50).ToString() + " (" + (NumAllMarkemsConcMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsAllMarkems.Text = (NumMarkemsAllMarkems / 50).ToString() + " (" + (NumAllMarkemsAllMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsSwitNoMarkems.Text = (NumMarkemsSwitNoMarkems / 50).ToString() + " (" + (NumAllMarkemsSwitNoMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsConcNoMarkems.Text = (NumMarkemsConcNoMarkems / 50).ToString() + " (" + (NumAllMarkemsConcNoMarkems / 50).ToString() + ")"; tbxAvgNumMarkemsAllNoMarkems.Text = (NumMarkemsAllNoMarkems / 50).ToString() + " (" + (NumAllMarkemsAllNoMarkems / 50).ToString() + ")"; btnExportToExcel.Enabled = true; dgvAllWords.FirstDisplayedScrollingRowIndex = 0; } Cursor = Cursors.Default; }
/// <summary> /// Строит ассоциативное поле для выбранного слова. /// </summary> private void btnFieldForSelectedWord_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; //проверяем списки с экспериментальными данными на корректность длины if (CheckLists()) { dgvWords.Rows.Clear(); int index = AllWords.IndexOf(cmbAllWords.SelectedItem.ToString()); _field = new FieldConstruction(AllWords, Definitions, FreeAssociations, DirectAssociations, Similarities, Opposities); _field.InitField(cmbAllWords.SelectedItem.ToString()); //строим ассоциативное поле для выбранного слова //инициализируем параметры ассоциативного поля int NumOfSwitches = 0; int NumOfAllSwitches = 0; int NumOfContactors = _field.Contactors.Count; int NumOfAllContactors = _field.NumOfContactors; double NumOfSwAmongMarkems = 0; double NumOfConAmongMarkems = 0; double NumOfAllSwAmongMarkems = 0; double NumOfAllConAmongMarkems = 0; //вычисляем параметры for (int i = 0; i < AllWords.Count; i++) { if (_field.AllWordsAsSwitches[AllWords[i]] != 0 || _field.AllWordsAsContactors[AllWords[i]] != 0) { dgvWords.Rows.Add(AllWords[i], _field.AllWordsAsSwitches[AllWords[i]], _field.AllWordsAsContactors[AllWords[i]], _field.AllWordsAsSwitches[AllWords[i]] + _field.AllWordsAsContactors[AllWords[i]]); if (_field.AllWordsAsSwitches[AllWords[i]] != 0) { NumOfSwitches++; NumOfAllSwitches += _field.AllWordsAsSwitches[AllWords[i]]; if (Markems.IndexOf(AllWords[i]) != -1) { NumOfSwAmongMarkems++; NumOfAllSwAmongMarkems += _field.AllWordsAsSwitches[AllWords[i]]; } } if (_field.AllWordsAsContactors[AllWords[i]] != 0 && Markems.IndexOf(AllWords[i]) != -1) { NumOfConAmongMarkems++; NumOfAllConAmongMarkems += _field.AllWordsAsContactors[AllWords[i]]; } } } double NumOfMarkemsInAll = NumOfSwAmongMarkems + NumOfConAmongMarkems; double NumOfAllMarkemsInAll = NumOfAllSwAmongMarkems + NumOfAllConAmongMarkems; double ShareOfMarkemsInSwitches, ShareOfMarkemsInContactors; double ShareOfMarkemsInAllSwitches, ShareOfMarkemsInAllContactors; double ShareOfMarkemsInAll, ShareOfAllMarkemsInAll; if (NumOfSwitches == 0) { ShareOfMarkemsInSwitches = 0; ShareOfMarkemsInAllSwitches = 0; } else { ShareOfMarkemsInSwitches = NumOfSwAmongMarkems / NumOfSwitches; ShareOfMarkemsInAllSwitches = NumOfAllSwAmongMarkems / NumOfAllSwitches; } if (NumOfContactors == 0) { ShareOfMarkemsInContactors = 0; ShareOfMarkemsInAllContactors = 0; } else { ShareOfMarkemsInContactors = NumOfConAmongMarkems / NumOfContactors; ShareOfMarkemsInAllContactors = NumOfAllConAmongMarkems / NumOfAllContactors; } if (NumOfSwitches == 0 && NumOfContactors == 0) { ShareOfMarkemsInAll = 0; ShareOfAllMarkemsInAll = 0; } else { ShareOfMarkemsInAll = NumOfMarkemsInAll / (NumOfSwitches + NumOfContactors); ShareOfAllMarkemsInAll = NumOfAllMarkemsInAll / (NumOfAllSwitches + NumOfAllContactors); } //выводим полученные параметры в DataGridView dgvAllWords.Rows[index].Cells[1].Value = NumOfSwitches.ToString() + " (" + NumOfAllSwitches.ToString() + ")"; dgvAllWords.Rows[index].Cells[2].Value = NumOfContactors.ToString() + " (" + NumOfAllContactors.ToString() + ")"; dgvAllWords.Rows[index].Cells[3].Value = (NumOfSwitches + NumOfContactors).ToString() + " (" + (NumOfAllSwitches + NumOfAllContactors).ToString() + ")"; dgvAllWords.Rows[index].Cells[4].Value = String.Format("{0:0.00}", ShareOfMarkemsInSwitches) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllSwitches) + ")"; dgvAllWords.Rows[index].Cells[5].Value = String.Format("{0:0.00}", ShareOfMarkemsInContactors) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllContactors) + ")"; dgvAllWords.Rows[index].Cells[6].Value = String.Format("{0:0.00}", ShareOfMarkemsInAll) + " (" + String.Format("{0:0.00}", ShareOfAllMarkemsInAll) + ")"; if (_field.Steps == 0) { dgvAllWords.Rows[index].Cells[7].Value = (_field.Steps) + " " + (_field.Levels); } else { dgvAllWords.Rows[index].Cells[7].Value = (_field.Steps) + " " + (_field.Levels + 1); } btnExportToExcel.Enabled = true; dgvAllWords.Rows[index].Selected = true; dgvAllWords.FirstDisplayedScrollingRowIndex = index; //делаем запрос на сохранение полученного ассоциативного поля в таблицу MS Excel var confirmResult = MessageBox.Show("Хотите отобразить полученную таблицу в Microsoft Excel?", "Сохранение ассоциативного поля", MessageBoxButtons.YesNo); //если пользователь отвечает "да", то полученное поле экспортируем в таблицу MS Excel if (confirmResult == DialogResult.Yes) { _resultWriter.ExportField(_field.Field); } } Cursor = Cursors.Default; }