Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.06.2018
Сообщений: 1
1

Нужно переделать код

11.06.2018, 15:24. Показов 575. Ответов 4
Метки c# (Все метки)

Author24 — интернет-сервис помощи студентам
Главная форма Form1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Model;
using System.IO;
using System.Linq;
 
namespace AppTranslator
{
    public partial class Form1 : Form
    {
        //хранилище слов
        Dictionary<string, Record> store;
 
        public Form1()
        {
            InitializeComponent();
            //если файл существует 
            if (File.Exists(Properties.Settings.Default.Path))
                //извлекаем из него информацию
                store = XMLHelper.Load(Properties.Settings.Default.Path);
            else //иначе создаем новый объект
                store = new Dictionary<string, Record>();
        }
        //переключение режимов
        private void англорусскийToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.Mode = Mode.EngRus.ToString();
            русскоанглийскийToolStripMenuItem.Checked = false;
            англорусскийToolStripMenuItem.Checked = true;
        }
        private void русскоанглийскийToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.Mode = Mode.EngRus.ToString();
            англорусскийToolStripMenuItem.Checked = false;
            русскоанглийскийToolStripMenuItem.Checked = true;
        }
        private void загрузкаБДToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //диалог для открытия файла
            var fd = new OpenFileDialog();
            //ставим фильтр только на .xml файлы
            fd.Filter = "Xml files (.xml)|*.xml";
            //если какой-то из файлов был выбран
            if (fd.ShowDialog() == DialogResult.OK)
            {
                //загружаем информацию
                store = XMLHelper.Load(fd.FileName);
                //сохраняем путь
                Properties.Settings.Default.Path = fd.FileName;
            }
        }
        private void добавитьСловоToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var form = new AddWord();
            //открываем диалоговую форму для добавления файла
            form.ShowDialog();
 
            foreach (var record in form.Records)
            {
                //если значение уже есть в словаре добавляем новые переводы
                //в соответствующий список
                if (store.ContainsKey(record.Word))
                    foreach (var r in record.Values)
                        store[record.Word].Values.Add(r);
                else
                    //иначе добавляем новую запись
                    store.Add(record.Word, record);
            }
            //сохраняем новую информацию в файл
            XMLHelper.Save(store, Properties.Settings.Default.Path);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //получаем слово для перевода
            var key = textBox1.Text.Trim().ToLower();
            //если слово есть в хранилище выводим все варианты перевода
            if (store.ContainsKey(key))
                textBox2.Text = string.Join(Environment.NewLine, store[key].Values);
            else
            {
                //проверяем что такое слово не встречается нигде в "вариантах" перевода
                var first = store.FirstOrDefault(pair => pair.Value.Values.Contains(key));
                if (first.Value != null) //если такое слово есть отображаем его
                    textBox2.Text = first.Value.Word;
                else
                    MessageBox.Show("Указанное слово отсутствует в словаре");
            }
        }
    }
}
Класс XMLHelper
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
 
namespace Model
{
   //вспомогательный класс для работы с xml
    public static class XMLHelper
    {
        //метод, отвечающие за получение информации из файле
        public static Dictionary<string, Record> Load(string path)
        {
            var xd = XDocument.Load(path);
            return
            xd.Element("root") //получаем корень
                .Elements("word")//возвращаем все элементы с указанным названием
                .Select(word => new Record //преобразовываем XElement в тип записи
                    (
                    word: (string)word.Attribute("value"),
                    values: word.Elements("translation").Select(x => (string)x),
                    mode: (Mode)Enum.Parse(typeof(Mode), (string)word.Attribute("mode"))
                    ))
                //создаем словарь для быстрой проверки нахождения слова
                .ToDictionary(x => x.Word, val => val);
 
        }
        //сохранение инфорации в файл
        public static void Save(Dictionary<string, Record> dct, string path)
        {
            var xd = new XElement("root");
            
            foreach (var val in dct.Values)
            {
                xd.Add(new XElement("word",
                            new XAttribute("mode", val.Mode),
                            new XAttribute("value", val.Word),
                            val.Values.Select(t => new XElement("translation", t)).ToArray()
                            ));
            }
            xd.Save(path);
        }
    }
}
Класс AddWord
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
 
namespace AppTranslator
{
    public partial class AddWord : Form
    {
        //список добавленных слов
        public List<Record> Records { get; set; }
        private Mode mode;
        public AddWord()
        {
            InitializeComponent();
            Enum.TryParse(Properties.Settings.Default.Mode, out mode);
 
            Records = new List<Record>();
 
            button1.Click += Button1_Click;
            button2.Click += Button2_Click;
        }
        //обработчики событий
        private void Button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void Button1_Click(object sender, EventArgs e)
        {
            //преобразуем слово введенное пользователем к нижнем регистру, а также удаляем начальные и конечные пробельные символы
            var word = textBox1.Text.Trim().ToLower();
            var values =
                textBox2.Text //разбиваем строку из второго текстобокса по символу-разделителю
                .Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
                .Select(x => x.ToLower());//приводим к нижнему регистру
            //создаем запись
            var record = new Record(word, values, mode);
            //добавляем её в список
            Records.Add(record);
            //очищаем поля для ввода
            textBox1.Clear();
            textBox2.Clear();
        }
    }
}
Класс Record
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections.Generic;
 
namespace Model
{
    //перечисление с возможными режимами
    public enum Mode { RusEng, EngRus }
    //класс запись, отвечает за одну запись в файл
    public class Record
    {
        //режим
        public Mode Mode { get; private set; }
        //слово
        public string Word { get; private set; }
        //множество значений для перевода
        public HashSet<string> Values { get; private set; }
        public Record(string word, IEnumerable<string> values, Mode mode)
        {
            Word = word;
            Values = new HashSet<string>(values);
            Mode = mode;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2018, 15:24
Ответы с готовыми решениями:

Нужно переделать код в Си
А именно заменить cin cout на printf scanf #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

Нужно переделать код через циклы while/do while
Господа, помогите допилить код, а то я не много не пойму как его нужно через while/do while...

Есть код программы с динамическими массивами, но нужно переделать его под локальные.
Добрый вечер, нужна помощь! Есть код программы с динамическими массивами, но нужно переделать его...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт...

4
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
11.06.2018, 22:58 2
KAPJICOHuk, а ты уверен что это Си?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
12.06.2018, 17:47 3
ValeryS, может, ТС хочет на Си переделать?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
12.06.2018, 18:00 4
Цитата Сообщение от volvo Посмотреть сообщение
ТС хочет на Си переделать
ООП на Си
может все таки плюсы
0
174 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 719
15.06.2018, 15:20 5
ValeryS, скорее всего, ему нужно сделать программу, которая делает то же самое, только написать её на C.
0
15.06.2018, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2018, 15:20
Помогаю со студенческими работами здесь

Переделать исходный код. Код в Паскале,а нужно сделать его в Фортране
{$S+,R+} program arab_to_roman; uses crt; var n : word; ch : char; procedure...

Есть такой код.Нужно переделать в код с функцией. Благодарю
program lab9(input,output); var s:string; len:integer; begin write('vvedit text:');...

Нужно переделать код в Си
Заменить все cin cout на stdio ( printf scnaf ) #include &lt;iostream&gt; #include &lt;conio.h&gt;...

Нужно переделать код
Надо переделать код. Так как я понял. Это C++ тут cout и cin а мне надо с printf и scanf


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru