KeyValuePair. По нажатию кнопки объект класса должен быть представлен в "красивом" виде: частота и контексты - C#

Узнай цену своей работы

Формулировка задачи:

Во-первых должно быть 2 dictionary: внешний (с данными в виде <string, WordInfo>, где WordInfo - класс, объекты которого включают само слово, его контексты и частоту), и внутренний - <string, int> - для подсчёта частоты. (хотя можно сделать словари и для контекстов). Т.е. по нажатию кнопки объект класса должен быть представлен в "красивом" виде: частота и контексты...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication35
{
    public partial class Form1 : Form
    {
        private Dictionary<string, WordInfo> dict = new Dictionary<string, WordInfo>();
        public Form1()
        {
            InitializeComponent();
        }
        public class WordInfo
        {
            public string word;
            public Dictionary<string, int> dict1 = new Dictionary<string, int>();
            public int freq = 0;
            public string cont1; 
            public string cont2;
        }
        public void button1_Click(object sender, EventArgs e)
        {
            Dictionary<string, int> dict1 = new Dictionary<string, int>();
            StreamReader myRead = new StreamReader("123.txt",Encoding.Default);          
            string myText = myRead.ReadToEnd();
            myRead.Close();
            string[] slova = myText.Split(new char[] { ' ', ',', '.', '-', '!', '?', ':', ';', '\r', '\n', '\t', '"', ')', '(' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string a in slova)
            {
                if (dict1.ContainsKey(a))
                    dict1[a]++;
                else dict1.Add(a, 1);
            }
            foreach (KeyValuePair<string, int> a in dict1.OrderBy(x => x.Value))
            { 
                listBox1.Text += Convert.ToString(a.Key) + Environment.NewLine;
                int freq = a.Value;
            }
            string cont1 = ""; string cont2 = "";
            for (int i = 0; i < slova.Length; i++)
            {
                int l = i - 2;
                if (l < 0)
                    l = 0;
                int r = i + 2;
                if (r >= slova.Length)
                    r = slova.Length - 1;
                for (int j = l; j < i; j++)
                    cont1 += slova[j] + ' ';
                for (int j = i + 1; j <= r; j++)
                    cont2 += slova[j] + ' ';
            }
     
            }
        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            foreach (KeyValuePair<string, WordInfo> obj in dict)
            {
                if (obj.Key == listBox1.SelectedItem.ToString())
                {
                    listBox2.Text = obj.Value.cont1 + "\r\n";
                    listBox3.Text = obj.Value.cont2 + "\r\n";
                    label3.Text = "Частота: " + obj.Value.freq;
                }
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {

        }
    }

}
Помогите разобраться что не так. Особенно в цикле
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            foreach (KeyValuePair<string, WordInfo> obj in dict)
            {
                if (obj.Key == listBox1.SelectedItem.ToString())
                {
                    listBox2.Text = obj.Value.cont1 + "\r\n";
                    listBox3.Text = obj.Value.cont2 + "\r\n";
                    label3.Text = "Частота: " + obj.Value.freq;
                }
            }
        }

Решение задачи: «KeyValuePair. По нажатию кнопки объект класса должен быть представлен в "красивом" виде: частота и контексты»

textual
Листинг программы
public Dictionary<string, int> dict1 = new Dictionary<string, int>();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы