Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
6 / 6 / 1
Регистрация: 12.10.2016
Сообщений: 141

T9 правописание

02.09.2019, 13:14. Показов 2681. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, делал клавиатуру t9 как в задании https://code.google.com/codeja... 51101#s=p2, хотел бы узнать так ли сделал и можно ли упростить алгоритм?

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace TNine
{
    public partial class Form1 : MetroFramework.Forms.MetroForm
    {
        Dictionary<char, string> dictionary;
        Timer timer = new Timer();
 
        string text = string.Empty;
        int oldcount = 0;
        int count = 0;
 
        public Form1()
        {
            InitializeComponent();
            DictionaryInit();
 
            timer.Tick += Timer_Tick;
            timer.Interval = 700;
        }
 
        private void metroBtn_Click(object sender, EventArgs e)
        {
            metroLabel2.Text += ((MetroFramework.Controls.MetroButton)sender).Text[0].ToString();
            count++;
 
            if (!timer.Enabled)
                timer.Start();
        }
 
        private void Timer_Tick(object sender, EventArgs e)
        {
            if (oldcount < count)
            {
                oldcount = count;
                timer.Stop();
                timer.Start();
            }
            else if (oldcount == count)
            {
                metroLabel2.Text += " ";
                Decoding();
                timer.Stop();
            }
        }
 
        private void Decoding()
        {
            metroTextBox1.Clear();
 
            List<char> list = new List<char>(metroLabel2.Text.ToArray());
            List<List<char>> groupList = new List<List<char>>();
 
            foreach (var elem in list)
                if (groupList.Count == 0)
                {
                    groupList.Add(new List<char>());
                    groupList.Last().Add(list.First());
                }
                else if (groupList.Last().Count > 0 && groupList.Last().First() == elem)
                    groupList.Last().Add(elem);
                else
                {
                    groupList.Add(new List<char>());
                    groupList.Last().Add(elem);
                }
 
            foreach (var group in groupList)
                foreach (var item in dictionary)
                {
                    string symbol = new string(group.ToArray());
                    if (symbol == item.Value)
                    {
                        metroTextBox1.Text += symbol == "0" ? " " : item.Key.ToString();
                        break;
                    }
                }
        }
 
        private void DictionaryInit()
        {
            dictionary = new Dictionary<char, string>();
 
            dictionary[' '] = "0";
 
            dictionary['a'] = "2";
            dictionary['b'] = "22";
            dictionary['c'] = "222";
 
            dictionary['d'] = "3";
            dictionary['e'] = "33";
            dictionary['f'] = "333";
 
            dictionary['g'] = "4";
            dictionary['h'] = "44";
            dictionary['i'] = "444";
 
            dictionary['j'] = "5";
            dictionary['k'] = "55";
            dictionary['l'] = "555";
 
            dictionary['m'] = "6";
            dictionary['n'] = "66";
            dictionary['o'] = "666";
 
            dictionary['p'] = "7";
            dictionary['q'] = "77";
            dictionary['r'] = "777";
            dictionary['s'] = "7777";
 
            dictionary['t'] = "8";
            dictionary['u'] = "88";
            dictionary['v'] = "888";
 
            dictionary['w'] = "9";
            dictionary['x'] = "99";
            dictionary['y'] = "999";
            dictionary['z'] = "9999";
        }      
 
        private void metroButton13_Click(object sender, EventArgs e)
        {
            metroTextBox1.Clear();
            metroLabel2.Text = string.Empty;
            count = oldcount = 0;
        } 
    }
}
Вложения
Тип файла: 7z TNineUI.7z (846.8 Кб, 31 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2019, 13:14
Ответы с готовыми решениями:

Правописание
Есть метод класса, который в качестве возвращаемого значения выдает указатель. Как правильно писать: int vector :: *get() { ... ...

Правописание
Если кто может - подскажите как написать такую прогу: 1. Ввести предложение; 2. Исправит слова, которые написаны неправильно. ...

Правописание
Добрый день! Как правильно написать: Выбранное значение ComboBox (марка машины), добавить в Edit? (страна изготовления). ...

6
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
03.09.2019, 11:34
алгоритм можно сделать сложнее, но вот код надо править, у вас код сложно развивать. для начала его нужно структурировать, и добавить стилистику и систематизацию.
0
6 / 6 / 1
Регистрация: 12.10.2016
Сообщений: 141
03.09.2019, 15:15  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
сложнее
зачем? если надо делать его проще. По поводу
Цитата Сообщение от V_Monomax Посмотреть сообщение
сложно развивать
он у меня заточен для одного действия, зачем его развивать?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
03.09.2019, 15:21
Цитата Сообщение от Yerta Посмотреть сообщение
зачем его развивать?
иначе ваш код умрет, и никому не нужен будет)))
Цитата Сообщение от Yerta Посмотреть сообщение
ачем? если надо делать его проще.
Смотря что подразумевать под сложностью (я например подразумеваю расширение функциональности).
0
6 / 6 / 1
Регистрация: 12.10.2016
Сообщений: 141
03.09.2019, 15:31  [ТС]
Цитата Сообщение от V_Monomax Посмотреть сообщение
Смотря что подразумевать под сложностью (я например подразумеваю расширение функциональности).
функционал может будет расширен
Хотел бы узнать, моя программа пусть и таким кодом, выполнена ли она по сравнению с заданием?
0
 Аватар для V_Monomax
1406 / 1260 / 20
Регистрация: 09.08.2011
Сообщений: 2,319
Записей в блоге: 1
03.09.2019, 16:22
Цитата Сообщение от Yerta Посмотреть сообщение
Хотел бы узнать, моя программа пусть и таким кодом, выполнена ли она по сравнению с заданием?
зависит от того что ваш препод требует, я бы сказал что не выполнена, так как не читаема!

Добавлено через 13 минут
кроме того у вас не русского алфавита и их сочетаний. Более того у вас реализовано множественное тыкание, но нет вариативной подсказки (например ввод 7376723, выдаст pdpmpad вместо resource), а значит про Т9 говорить рано (Т9 предполагает при тыкание на кнопки вывод слов которые соответствуют данному набору). Поэтому сам алгоритм Т9 не реализован, но его апроксимальная часть, по сути первые вариации ввода с клавиатуры можно считать таковыми. С другой стороны вы не реализуете ситуацию когда у вас существует сращение: по сути у вас 7777 - может быть как ppq так и pr так и s, не забывайте добавлять разделитель букв, в вашем задании он:"#".
1
6 / 6 / 1
Регистрация: 12.10.2016
Сообщений: 141
03.09.2019, 16:55  [ТС]
Спасибо, учту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2019, 16:55
Помогаю со студенческими работами здесь

Правописание
Составить программу, которая проверяет правописание &quot;жи – ши&quot; (т.е. если в заданном тексте после &quot;ш&quot; или &quot;ж&quot;...

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

Правописание текста
Заменить каждую первую букву в слове на заглавную, а все остальные буквы — на строчные. Дан заголовок статьи, который заканчивается...

Правописание в Ворде
У меня в большом тексте много программных листингов и слов с переносами. Как: 1) запретить Word-у при проверке кидаться на английские...

Правописание в Word 2016
Не могу выставить нижние галочки Что делать или как исправить ? Ворд активирован но скачен не с оф сайта ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru