Доработать программу-переводчик на перевод словосочетаний - 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();
        }
    }
}

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


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

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

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