Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 5
.NET 4.x

Определить тип вводимых данных

17.05.2013, 23:53. Показов 2085. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем Надо для универа составить программу , анализирующую нажатую клавишу на ее принадлежность к определенной группе клавиш. Соответствующие сообщения выдаются для цифровых клавиш, больших букв и малых букв латинского алфавита.
Помогите,пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2013, 23:53
Ответы с готовыми решениями:

Получить тип вводимых значений в столбец таблицы посредством LINQ
Как узнать к какому типу по умолчанию принадлежат значения вводимые в определенный столбец. Например в базе данных создаем таблицу...

Возможно ли определить тип данных, имея в распоряжении массив строк?
Допустим на вход подается массив строк : "true", "123" ,"123.99" ,"b" , "strrr". Можно ли как-то обработать эти элементы и получить...

Определить тип микропроцессора, тип ЭВМ и исправен ли аккумулятор на материнке
Можно ли это сделать в С# ? Если да то как, если нет, то можно ли в С\С++ ?

7
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
18.05.2013, 01:16
можно так
Вложения
Тип файла: rar WindowsFormsApplication1.rar (39.1 Кб, 12 просмотров)
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 5
18.05.2013, 01:29  [ТС]
Цитата Сообщение от C17H19NO3 Посмотреть сообщение
можно так
Не так понял условие

В консоли вбиваешь цифру или букву(заглавную или строчную)
В ответ - программа выводит тебе один из 3-х вариантов : "Цифра" ,"Строчная буква", "Заглавная буква"
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
18.05.2013, 01:54
добавил проверку на латиницу
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
internal class Prog
    {
        private static void Main()
        {
            while (true)
            {
                var c = (char) Console.Read();
                if (c == '\n' || c == '\r') continue;
                string m;
                if (!Test(c, out m))
                {
                    Console.WriteLine(m);
                    break;
                }
                Console.WriteLine(m);
            }
            Console.ReadKey();
        }
 
        private static bool IsLatin(char c)
        {
            return (c <= '\x00ff');
        }
           
        private static bool Test(char c, out string msg)
        {
            if (char.IsNumber(c))
            {
                msg = "Цифра";
                return true;
            }
            if (!char.IsLetter(c) || !IsLatin(c))
            {
                msg = "Херня какая-то, к этому меня не готовили!";
                return false;
            }
            if (char.IsUpper(c))
            {
                msg = "Заглавная буква";
                return true;
            }
            msg = "Строчная буква";
            return true;
        }
    }
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 5
18.05.2013, 02:14  [ТС]
Цитата Сообщение от dev-a1056 Посмотреть сообщение
добавил проверку на латиницу
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
internal class Prog
    {
        private static void Main()
        {
            while (true)
            {
                var c = (char) Console.Read();
                if (c == '\n' || c == '\r') continue;
                string m;
                if (!Test(c, out m))
                {
                    Console.WriteLine(m);
                    break;
                }
                Console.WriteLine(m);
            }
            Console.ReadKey();
        }
 
        private static bool IsLatin(char c)
        {
            return (c <= '\x00ff');
        }
           
        private static bool Test(char c, out string msg)
        {
            if (char.IsNumber(c))
            {
                msg = "Цифра";
                return true;
            }
            if (!char.IsLetter(c) || !IsLatin(c))
            {
                msg = "Херня какая-то, к этому меня не готовили!";
                return false;
            }
            if (char.IsUpper(c))
            {
                msg = "Заглавная буква";
                return true;
            }
            msg = "Строчная буква";
            return true;
        }
    }
Cпасибо огромное!
Можешь,пожалуйста объяснить строчки:
if (c == '\n' || c == '\r') continue; - что за '\n' и '\r'. Пока что еще не прошли это
if (!Test(c, out m)) - вообще не понял условие и что означает слово Test?
return (c <= '\x00ff'); - что за '\x00ff' ??
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
18.05.2013, 03:52
немого изменил код и прокомментировал, как мог
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
internal class Prog
    {
        private static void Main()
        {
            while (true)
            {
                var c = (char) Console.Read(); //читаем символ с консоли, пока не будет нажат enter функция не вернет управление
                if (c == '\n' || c == '\r') //'\n\r' - это и есть код перевода строки, выражаемый в винде как два спец символа 
                    continue; //игнорируем нажатие enter  
                string m; //объявляем строку
                if (!Test(c, out m)) //тестируем
                {
                    Console.WriteLine(m); //если мы попали сюда, то был введен плохой символ: запятая, например.
                    break; //прерываем цикл
                }
                Console.WriteLine(m); //тут все ок! просто выводим результат теста
            }
            Console.ReadKey(); //ну тут просто ждем пока юзер чего-нибудь введет, для завершения программы
        }
 
        //Является ли символ латинской буквой?
        private static bool IsLatinLetter(char c)
        {
            //т.к. в таблице ASCII (Unicode для латиницы имеет теже кода)
            
            //буквы в двоичной системе находятся в диапазоне: 
            //[01100001, 01100010,  .. ,01111010] - нижний регистр
            //[01000001, 01000010, ..  ,01011010] - верхний
            //можно заметить, а можно просто прочитать в вики хотя бы,  
            //что верхний регист отличается от нижнего только 6-м битом(слева на право)
 
            //пробел имеет двоичное представление 00100000,
            //т.е. мы делаем побитовое 'или' (код символа | код пробела) и получаем нижний регистр,
            //при этом нам в общем то и не важно в каком регистре был символ
            //ПРИМЕР: с = 'B' в двоичном представлении (01000010) | (00100000) = (01100010), а это уже код  'b'.
            //Вообще в c# char - это двух байтовое целое число, но во втором байте нули для латиницы 
            //и поэтому мы рассматриваем только первый байт
            c = (char)(c | ' '); //тоже самое что: (двоичный код символа c) | (00100000) = (01100010)  
            return ((c >= 'a') && (c <= 'z'));// в силу последовательного расположения символов алфавита в кодовой таблице достаточно проверить попадает ли символ в диапазон [a..z]
        }
       
        //метод получает на вход символ для проверки
        //и возвращает true - если символ удовлетворяет условиям ввода
        //msg - это выходной параметр в которой записывается текстовый результат теста
        private static bool Test(char c, out string msg)
        {
            if (char.IsNumber(c)) 
            {
                msg = "Цифра";
                return true;
            }
            if (!IsLatinLetter(c))
            {
                msg = "Херня какая-то, к этому меня не готовили!";
                return false;
            }
            if (char.IsUpper(c))
            {
                msg = "Заглавная буква";
                return true;
            }
            msg = "Строчная буква";
            return true;
        }
    }
Добавлено через 7 минут
метод Main можно вот так изменить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private static void Main()
        {
            while (true)
            {
                string s = Console.ReadLine();
                if(string.IsNullOrEmpty(s)) continue;
                char c = s[0];
                string m; //объявлеям строку
                if (!Test(c, out m)) //тестируем
                {
                    Console.WriteLine(m); //если мы попали сюда, то был введен плохой символ: запятая, например.
                    break; //прерываем цикл
                }
                Console.WriteLine(m); //тут все ок! просто выводим результат теста
            }
            Console.ReadKey(); //ну тут просто ждем пока юзер чего-нибуть введет, для завершения программы
        }
Добавлено через 2 минуты

Не по теме:

о.. ты из Питера, может мы вообще в одном доме живем:)

1
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 5
18.05.2013, 11:58  [ТС]
Цитата Сообщение от dev-a1056 Посмотреть сообщение
немого изменил код и прокомментировал, как мог
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
internal class Prog
    {
        private static void Main()
        {
            while (true)
            {
                var c = (char) Console.Read(); //читаем символ с консоли, пока не будет нажат enter функция не вернет управление
                if (c == '\n' || c == '\r') //'\n\r' - это и есть код перевода строки, выражаемый в винде как два спец символа 
                    continue; //игнорируем нажатие enter  
                string m; //объявляем строку
                if (!Test(c, out m)) //тестируем
                {
                    Console.WriteLine(m); //если мы попали сюда, то был введен плохой символ: запятая, например.
                    break; //прерываем цикл
                }
                Console.WriteLine(m); //тут все ок! просто выводим результат теста
            }
            Console.ReadKey(); //ну тут просто ждем пока юзер чего-нибудь введет, для завершения программы
        }
 
        //Является ли символ латинской буквой?
        private static bool IsLatinLetter(char c)
        {
            //т.к. в таблице ASCII (Unicode для латиницы имеет теже кода)
            
            //буквы в двоичной системе находятся в диапазоне: 
            //[01100001, 01100010,  .. ,01111010] - нижний регистр
            //[01000001, 01000010, ..  ,01011010] - верхний
            //можно заметить, а можно просто прочитать в вики хотя бы,  
            //что верхний регист отличается от нижнего только 6-м битом(слева на право)
 
            //пробел имеет двоичное представление 00100000,
            //т.е. мы делаем побитовое 'или' (код символа | код пробела) и получаем нижний регистр,
            //при этом нам в общем то и не важно в каком регистре был символ
            //ПРИМЕР: с = 'B' в двоичном представлении (01000010) | (00100000) = (01100010), а это уже код  'b'.
            //Вообще в c# char - это двух байтовое целое число, но во втором байте нули для латиницы 
            //и поэтому мы рассматриваем только первый байт
            c = (char)(c | ' '); //тоже самое что: (двоичный код символа c) | (00100000) = (01100010)  
            return ((c >= 'a') && (c <= 'z'));// в силу последовательного расположения символов алфавита в кодовой таблице достаточно проверить попадает ли символ в диапазон [a..z]
        }
       
        //метод получает на вход символ для проверки
        //и возвращает true - если символ удовлетворяет условиям ввода
        //msg - это выходной параметр в которой записывается текстовый результат теста
        private static bool Test(char c, out string msg)
        {
            if (char.IsNumber(c)) 
            {
                msg = "Цифра";
                return true;
            }
            if (!IsLatinLetter(c))
            {
                msg = "Херня какая-то, к этому меня не готовили!";
                return false;
            }
            if (char.IsUpper(c))
            {
                msg = "Заглавная буква";
                return true;
            }
            msg = "Строчная буква";
            return true;
        }
    }
Добавлено через 7 минут
метод Main можно вот так изменить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private static void Main()
        {
            while (true)
            {
                string s = Console.ReadLine();
                if(string.IsNullOrEmpty(s)) continue;
                char c = s[0];
                string m; //объявлеям строку
                if (!Test(c, out m)) //тестируем
                {
                    Console.WriteLine(m); //если мы попали сюда, то был введен плохой символ: запятая, например.
                    break; //прерываем цикл
                }
                Console.WriteLine(m); //тут все ок! просто выводим результат теста
            }
            Console.ReadKey(); //ну тут просто ждем пока юзер чего-нибуть введет, для завершения программы
        }
Добавлено через 2 минуты

Не по теме:

о.. ты из Питера, может мы вообще в одном доме живем:)

Спасиб большое!)


p.s. я в общаге живу
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
18.05.2013, 17:51
Цитата Сообщение от VetDE67 Посмотреть сообщение
p.s. я в общаге живу
ну это совершенно не противоречит моему утверждению.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2013, 17:51
Помогаю со студенческими работами здесь

Как определить тип данных по массиву байтов
Всем привет. Подскажите, пожалуйста, как определить тип данных по массиву байтов?

Определить тип данных в textBox - число или текст
доброе утро. Как определить тип данных которые ввели в textBox1. А конкретно узнать число это или текст. Можно это конечно сделать...

Подскажите тип данных в ADO, если в SQL сервере тип Text ?
Господа подскажите тип данных в ADO, если в SQL сервере тип Text ?

Проверить на тип вводимых данных
Опыта в программировании у меня нету,всего пару дней :) поэтому может вопрос и глупый, тем не менее: Вобщем простенькая функция с...

Ограничение на тип вводимых данных в Excel
Пожалуйста! В определенную область на листе пользователь вводит данные. Нужно, чтобы вводились только числовые даные, а в остальных случаях...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru