Доработать программу-переводчик на перевод словосочетаний - C#
Формулировка задачи:
Люди, может кто поможет доделать прогу. Нужно чтобы программа переводила по несколько слов ( так сказать подстрочный перевод). Сейчас работает как словарь( и то иногда с ошибками). Ну и добавление в словарь по кнопке OK. Кому не трудно...
Решение задачи: «Доработать программу-переводчик на перевод словосочетаний»
textual
Листинг программы
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; using System.Text.RegularExpressions; namespace Курсач { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public List<String> En = new List<string>(); //Словарь с англ. словами. public List<String> Rus = new List<string>(); //Словарь с рус. словами. private void Form1_Load(object sender, EventArgs e) { comboBox1.Focus(); textBox3.Enabled = false; textBox4.Enabled = false; label1.Enabled = false; label2.Enabled = false; button4.Enabled = false; } private void button3_Click(object sender, EventArgs e) { Close(); } private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = true; //Можно было просто в свойствах ТХТбокса поставить textBox2.ReadOnly = true } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.Text == "Английский") //Тут я думаю все понятно. comboBox2.Text = "Русский"; else comboBox2.Text = "Английский"; } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox2.Text == "Английский") //Тут я думаю все понятно. comboBox1.Text = "Русский"; else comboBox1.Text = "Английский"; } private void button2_Click(object sender, EventArgs e) { textBox3.Enabled = true; textBox4.Enabled = true; label1.Enabled = true; label2.Enabled = true; button4.Enabled = true; textBox3.Focus(); } private void выходToolStripMenuItem_Click(object sender, EventArgs e) { Close(); } private void button4_Click(object sender, EventArgs e) { if (textBox3.Text == "" || textBox4.Text == "") //Если тхтбокс3 или тхтбокс4 пусты то MessageBox.Show("Не все поля заполнены!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); //Ошибка. else //Иначе { System.IO.File.AppendAllText(richTextBox1.Text, "\r\n" + textBox3.Text + "#" + textBox4.Text); //Дополняем файл с словами: "\r\n" - переход на новую строку. textBox3.Text = ""; //Чистим textBox4.Text = ""; //Чистим button4.Enabled = false; textBox3.Enabled = false; textBox4.Enabled = false; label1.Enabled = false; label2.Enabled = false; button4.Enabled = false; } } private void выбратьФайлСоСловаремToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { En.Clear(); //Если выбрали файл то чистим листы с словами. Rus.Clear(); ////////////////////////////////////////////// string[] temp = System.IO.File.ReadAllLines(openFileDialog1.FileName); for (int i = 0; i <= temp.Length - 1; i += 1) { try //Обрабатываем ошибки тхт документа если в строке отсутствует # и т.д. { En.Add(temp[i].Split('#')[0]); //Добовляем в англ. словарь (лист) 1 слово от #. Rus.Add(temp[i].Split('#')[1]); //Добовляем в рус. словарь (лист) 2 слово от #. } catch { En.Clear(); //Если ошибка чистим словари. Rus.Clear(); MessageBox.Show("Ошибка в словоре!"); //Выдаем ошибку. } } } } private void button1_Click(object sender, EventArgs e) { textBox2.Clear(); string[] mass = textBox1.Text.Split(' '); //Делим текст из тхт бокса на слова между которыми пробел. for (int i = 0; i < mass.Length; i += 1) //Цикл берем каждое слово по порядку: { if (comboBox1.Text == "Английский" && comboBox2.Text == "Русский") //Без коментариев { if (En.Contains(mass[i]) == true) //Если наше слово есть в англ. словоре то: { if (textBox2.Text == "") //Если тхтбокс пустой то { textBox2.Text = textBox2.Text + Rus[getIndexList(En, mass[i])]; //Заполняем его без 1-го пробела. } else //Иначе { textBox2.Text = textBox2.Text + " " + Rus[getIndexList(En, mass[i])]; //Ставим пробел } } else //Если мы не нашли слово в словоре оставим его без изменений { if (textBox2.Text == "") { textBox2.Text = textBox2.Text + mass[i]; } else { textBox2.Text = textBox2.Text + " " + mass[i]; } } } else if (comboBox1.Text == "Русский" && comboBox2.Text == "Английский") //Тут тоже самое что и с анг. словорем. { if (Rus.Contains(mass[i]) == true) { if (textBox2.Text == "") { textBox2.Text = textBox2.Text + En[getIndexList(Rus, mass[i])]; } else { textBox2.Text = textBox2.Text + " " + En[getIndexList(Rus, mass[i])]; } } else { if (textBox2.Text == "") { textBox2.Text = textBox2.Text + mass[i]; } else { textBox2.Text = textBox2.Text + " " + mass[i]; } } } } } private int getIndexList(List<string> list, string find) //Функция поиска индекса слова в словоре. { for (int i = 0; i < list.Count; i++) { if (list[i] == find) //Если в листе обнаружили слово которое искали то выводим индекс. { return i; } } return 0; } private void button3_Click_1(object sender, EventArgs e) { textBox1.Text = ""; textBox2.Text = ""; } private void справкаToolStripMenuItem_Click(object sender, EventArgs e) { Form2 myF1 = new Form2(); myF1.Show(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д