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

Подсчитать количество нажатий клавиш

13.04.2015, 14:33. Показов 3678. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, уважаемые форумчане. Учусь на специальности "Программная инженерия". Нужна ваша помощь с лабораторной работой. Возможно не совсем корректно написал заголовок, постараюсь кратко изложить суть. Есть задача: Дана последовательность, содержащая слова, в каждом из которых от 1 до 5 прописных (больших) латинских букв, разделенные не менее чем одним пробелом, после последнего слова - точка. Указать слова, в которых есть повторяющиеся символы.
У меня есть два вопроса. Каким образом можно проверить количество введенных букв(от 1 до 5 по условию) и как проверить на латинские буквы. Ниже скину код, который у меня получился. Все работает кроме проверок на латинские буквы и их количество. Очень надеюсь на вашу подсказку. Спасибо.

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
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        char[] razdeliteli = { ' ', '.' };
        string text;
        string[] words;
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
 
 
        private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void EnterDataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            labelStroka.Visible = true;
            textBoxData.Visible = true;
            
        }
 
        private void CalcToolStripMenuItem_Click(object sender, EventArgs e)
        {
            labelRez.Visible = true;
            listBox1.Visible = true;
 
            enterData();
 
            listBox1.Items.Add("Исходная последовательность слов:");
            foreach (string word in words)
                
                    listBox1.Items.Add(word);
 
            listBox1.Items.Add("Слова с повторяющимися символами: ");
 
            calc();
 
 
 
        }
 
        private void enterData()
        {
            text = textBoxData.Text;  //считываем строку с текстбокса
            words = text.Split(razdeliteli); // выделяем из строки отлельные слова в массив строк
            
        }
 
 
        private void calc()
        {
            foreach (string word in words) //перебираем все строки (выделенные слова) в массиве
            {
                int count = 0;
                char[] tmp = word.ToCharArray(); // массив чаров для преобразования одной строки (слова) из массива words
                for (int i = 0; i < tmp.Length - 1; i++)
                {
                    for (int j = i + 1; j < tmp.Length; j++) // сравниваем буквы в массиве чаров. Если есть одинаковые, увеличиваем каунт.
                        if (tmp[j] == tmp[i]) count++;
                }
                if (count != 0)
                    listBox1.Items.Add(word); // выводим слово (строку) из массива строк words в листбокс, если есть одинаковые символы
 
            }
 
        }
 
        private void textBoxData_KeyPress(object sender, KeyPressEventArgs e) // обрабатываем нажатие клавиш
        {
            if (!(char.IsWhiteSpace(e.KeyChar) || e.KeyChar.Equals('.') || (char.IsUpper(e.KeyChar)) && char.IsLetter(e.KeyChar)) ) //истина, если символ - не большая буква, точка или пробел
            {
                MessageBox.Show("Вводите только большие буквы");
                e.KeyChar = '\0';
            }
 
        }
 
        
    }
 
}
Добавлено через 1 минуту
Если нужно могу скинуть готовый экзешник программы для примера или файлы проекта вижуал студио.

Добавлено через 2 минуты
не прошу решать задачу за меня, просто натолкнуть на мысль как это сделать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.04.2015, 14:33
Ответы с готовыми решениями:

Имитация нажатий клавиш клавиатуры
Доброго времени суток господа программисты ! Вопрос вот в чём ! Как можно из программы с имитировать нажатие клавиши клавиатуры ! Если...

Обработка нажатий клавиш в консоли
C# Консольное выполнение клавиши А можно сделать консольное выполнение клавиши static void Main(string...

Отслеживание нажатий комбинаций клавиш
Здравстуйте. Подскажите пожалуйста как можно отследить нажатие клавиш fn + (f1, .. ,f12) с помощью C#. KeyPress event не видит комбинаций...

2
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
13.04.2015, 17:55
Что можно использовать:
C#
1
2
3
string str = "EXAMPLE"; // строка для примера
bool isUpper = Char.IsUpper(str[0]) && Char.IsLetter(str[0]); // проверка, является ли первый символ строки заглавной буквой, меняете индекс, проверяете любой другой символ
int len = str.Length; // количество символов в строке
Для примера метод, проверяющий состоит ли строка только из заглавных символов:
C#
1
2
3
4
5
6
7
8
9
bool IsAllUpper(string input)
    {
        for (int i = 0; i < input.Length; i++)
        {
            if (Char.IsLetter(input[i]) && !Char.IsUpper(input[i]))
                return false;
        }
        return true;
    }
0
1 / 1 / 1
Регистрация: 13.04.2015
Сообщений: 31
13.04.2015, 21:36  [ТС]
Это я понимаю. У меня по сути написано то же самое
C#
1
2
3
4
5
6
7
 
 
  if (!(char.IsWhiteSpace(e.KeyChar) || e.KeyChar.Equals('.') || (char.IsUpper(e.KeyChar)) && char.IsLetter(e.KeyChar)) ) //истина, если символ - не большая буква, точка или пробел
            {
                MessageBox.Show("Вводите только большие буквы");
                e.KeyChar = '\0';
            }
Дело в том, что нужно делать проверку всех условий сразу в процессе ввода символа в текстбокс. То есть, если пользователь вводит недопустимое значение (не пробел, не точку, не большую букву ) то должно сразу выводится сообщение с предупреждением. У меня в коде данные проверки работают отлично, вот только есть один нюанс. Нужно также проверять количество вводимых символов и является ли символ именно латинской буквой. По условию задачи, одно слово не должно быть больше 5 символов. Если число символов неразделенных пробелом в одном слове превышает 5, то должно тоже выводится предупредительное сообщение. Меня интересует каким образом написать данную проверку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2015, 21:36
Помогаю со студенческими работами здесь

Обработка нажатий клавиш мыши и кнопок клавиатуры
Здравствуйте, возникла проблема с кодом: private void Form1_MouseDown(object sender, MouseEventArgs e) { ...

Как в классе создать обработчик событий нажатий клавиш
Нужно создать обработчик нажатия клавиш в классе, как для KeyUp так и для KeyDown пример кода пожалуйста если не трудно, в шарпе новичок....

Отслеживание нажатий клавиш на клавиатуре после нажатия на кнопку
В программе имеется форма с кнопкой(button1). Больше ничего нет, у кнопки изменил только свойство TabStop = false. При нажатии на...

Перехват нажатий клавиш
Добрый вечер! Подскажите пожалуйста, как в консольном приложении перехватить нажатие клавиш на клавиатуре. Добавлено через 22 минуты...

Считывание нажатий клавиш
В моем случае из окна предка вызывается новое окно. Мне нужно чтобы дочернее очно оставалось открытым, а клавиши считывались в родительском...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru