Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод цифр в буквенном написании в числовое, Программа для перевода цифр в буквенном  
V
    Опции темы
жека2905
  Дата 7.6.2012, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 19.10.2011

Репутация: нет
Всего: нет



Всем привет!
Может кто помочь???
Мне нужно написать программу чтобы она переводила цифры прописью в числовое значение.
Например,
когда вводишь "двадцать три" в ответе выводило 23
может у кого нибудь есть программный код или идеи!!! можно на любом языке программирования но желательно VB Net
PM MAIL   Вверх
diadiavova
Дата 7.6.2012, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



А в чем собственно проблема? У всех числовых типов есть метод Parse, используй его для парсинга строки.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
жека2905
Дата 7.6.2012, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 19.10.2011

Репутация: нет
Всего: нет



Цитата(diadiavova @ 7.6.2012,  22:18)
А в чем собственно проблема? У всех числовых типов есть метод Parse, используй его для парсинга строки.

А можно по подробнее а то я в гугле смотрю но не чего не понятно!!!! и как этим методом пользоваться если можно не большой пример пожалуйста!
PM MAIL   Вверх
diadiavova
Дата 7.6.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Так в документации все есть
http://msdn.microsoft.com/ru-ru/library/b3...28VS.90%29.aspx


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Экскалупатор
Дата 7.6.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 1
Всего: 24



Цитата(diadiavova @  7.6.2012,  21:18 Найти цитируемый пост)
А в чем собственно проблема? У всех числовых типов есть метод Parse, используй его для парсинга строки. 

я думаю, судя из примера, строка "двадцать три" и строка "23" это всеж разные штуки и возможно автору нужно распарсить именно первый вариант, а тут стандартным парсером ничего не сделаешь надо придумывать свой словарь и искать соответствия.

или под строкой подразумевается именно "23"?
PM MAIL ICQ   Вверх
diadiavova
Дата 8.6.2012, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Экскалупатор @  8.6.2012,  00:53 Найти цитируемый пост)
я думаю, судя из примера, строка "двадцать три" и строка "23" это всеж разные штуки

Ты прав: видимо проблема именно в этом. В пример я не особенно вчитывался, а разницу между цифрами и числительными все же понимаю smile 
жека2905, если тебе нужна именно такая программа, то писать ее самому придется. Я правда сомневаюсь, что она будет особенно полезной, поскольку вводить числа в виде числительных вряд ли удобно, а если еще учесть, что написать числительное правильно могут далеко не все smile , то еще придется предусмотреть и это обстоятельство


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Данкинг
Дата 8.6.2012, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Вообще если число записать прописью - такие примеры есть, возможно, и на VB тоже. А чтобы обратно - ни разу не сталкивался.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
жека2905
Дата 8.6.2012, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 19.10.2011

Репутация: нет
Всего: нет



я конечно понимаю что программа эта бесполезная, но мне её надо сделать чтобы получить зачёт!!! вообще надо 2 лабы сделать,  одну я уже написал там наоборот надо написать цифру в числовом формате, а в ответ выводится в письменном!!!!
вот как я это сделал
Код

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a, c As String
        Dim b, d, f, n, g, h, w, p, u As String
        a = TextBox1.Text
        If 100000 < a < 0 Then
            MessageBox.Show("Введено число меньше 0 или больше 100000 !!!", "Ошибка")
        End If
        If a = 100000 Then
            RichTextBox1.Text = "сто тысяч"
        End If
        c = Len(a) 'len для подсчёта символов в строке
        f = Mid(a, 1, 2)   'для 10-19    mid -Возвращает строку, содержащую указанное число знаков строки
        n = Mid(a, 2, 2)   'для 110-119
        h = Mid(a, 3, 2)   'для 1010-9019
        u = Mid(a, 4, 2)   'для 10010-90019
        d = Mid(a, 1, 1)   '(a - откуда,1 - номер по счёту,1 - число символ) для 1-9 и 20-90 и 100-900 и 1000-9000
        b = Mid(a, 2, 1)   'для 1-9 и 20-90  и 1200-9900
        w = Mid(a, 3, 1)   'для 101-909 и 1020-9090
        g = Mid(a, 4, 1)   'для 1001-9009
        p = Mid(a, 5, 1)   'для 10000-90000
        '************************** для едениц*************************
        If c = 1 Then
            Select Case d
                Case 0
                    d = "ноль"
                Case 1
                    d = "один"
                Case 2
                    d = "два"
                Case 3
                    d = "три"
                Case 4
                    d = "четыре"
                Case 5
                    d = "пять"
                Case 6
                    d = "шесть"
                Case 7
                    d = "семь"
                Case 8
                    d = "восемь"
                Case 9
                    d = "девять"
            End Select
            RichTextBox1.Text = d
        End If
        '**************************для десяток*******************************
        If c = 2 Then
            If d = 1 Then     'если d = 1 тогда 10-19
                Select Case f
                    Case 10
                        f = "десять"
                    Case 11
                        f = "одиннадцать"
                    Case 12
                        f = "двенадцать"
                    Case 13
                        f = "тринадцать"
                    Case 14
                        f = "четырнадцать"
                    Case 15
                        f = "пятнадцать"
                    Case 16
                        f = "шестнадцать"
                    Case 17
                        f = "семнадцать"
                    Case 18
                        f = "восемнадцать"
                    Case 19
                        f = "девятнадцать"
                End Select
                RichTextBox1.Text = f
            Else                                  ' иначе 1-9 и 20-90
                Select Case d
                    Case 0
                        d = ""
                    Case 1
                        d = ""
                    Case 2
                        d = "двадцать"
                    Case 3
                        d = "тридцать"
                    Case 4
                        d = "сорок"
                    Case 5
                        d = "пятьдесят"
                    Case 6
                        d = "шестьдесят"
                    Case 7
                        d = "семьдесят"
                    Case 8
                        d = "восемьдесят"
                    Case 9
                        d = "девяносто"
                End Select
                Select Case b
                    Case 0
                        b = ""
                    Case 1
                        b = "один"
                    Case 2
                        b = "два"
                    Case 3
                        b = "три"
                    Case 4
                        b = "четыре"
                    Case 5
                        b = "пять"
                    Case 6
                        b = "шесть"
                    Case 7
                        b = "семь"
                    Case 8
                        b = "восемь"
                    Case 9
                        b = "девять"
                End Select
                RichTextBox1.Text = d + " " + b
            End If
        End If
        '****************************для сотен********************************
       и так далее.................

а вот наоборот не знаю как сделать!
PM MAIL   Вверх
Экскалупатор
Дата 8.6.2012, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 1
Всего: 24



точно также. берешь строку, разбиваешь ее на слова и ищешь в массивах заранее заготовленных значений соответствия.
т.е. если ввели "двадцать три"
то получаешь два слова "двадцать" и "три"
потом ищешь в точно таких же свичах(только наоборот, ты искал по числу и выводил слово, а тут надо искать по слову и получать число)
собираешь число и выводишь
PM MAIL ICQ   Вверх
diadiavova
Дата 8.6.2012, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(жека2905 @  8.6.2012,  13:11 Найти цитируемый пост)
а вот наоборот не знаю как сделать! 
Я набросал тебе пример с функцией для чисел от 1 до 999, разберись с примером, остальное сделай сам.

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  txt2num.rar 63,84 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
жека2905
Дата 8.6.2012, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 19.10.2011

Репутация: нет
Всего: нет



Цитата(Экскалупатор @  8.6.2012,  12:28 Найти цитируемый пост)
точно также. берешь строку, разбиваешь ее на слова и ищешь в массивах заранее заготовленных значений соответствия.
т.е. если ввели "двадцать три"
то получаешь два слова "двадцать" и "три"

а можно небольшой примерчик пожалуйста??
PM MAIL   Вверх
жека2905
  Дата 8.6.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 19.10.2011

Репутация: нет
Всего: нет



Цитата(diadiavova @  8.6.2012,  12:40 Найти цитируемый пост)
Я набросал тебе пример с функцией для чисел от 1 до 999, разберись с примером, остальное сделай сам. 

спасибо большое!!! сейчас буду разбираться!!!!

Добавлено через 8 минут и 30 секунд
Цитата(diadiavova @  8.6.2012,  12:40 Найти цитируемый пост)
Я набросал тебе пример с функцией для чисел от 1 до 999, разберись с примером, остальное сделай сам. 

а можно поподробнее что тут происходит?
Код

Function ParseTriplex(s As String) As Integer
        Dim words = s.Split(New Char() {" ", vbTab, vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
        Return Aggregate w As String In words Select _nums(w) Into Sum()
    End Function

PM MAIL   Вверх
diadiavova
Дата 8.6.2012, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(жека2905 @  8.6.2012,  14:15 Найти цитируемый пост)
а можно поподробнее что тут происходит?

Сначала текст делим на слова и получаем массив слов, потом в массиве заменяем каждое слово на соответствующее ему значение из словаря и вычисляем сумму этих значений.

Добавлено через 1 минуту и 9 секунд
Если линк-запросы тебе не понятны, можно сделать это с помощью цикла, немного длиннее будет.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.