Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 19:15   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C #: цифры в слова. Выход из switch

Дорогие форумчане, проконсультируйте меня:мы переходим от цифр к буквам, у меня уже готово перечисление через case возможных вариантов. Но вот когда начинаешь складывать эти слова, получается, компилятор их не видит. То есть за вместо "number"+"ty" выводит пустоту и "ty".

Так как я пишу расширенный метод (Extensions), под это создается отдельный класс и вся эта красота храниться в функции, маловероятно что из функции можно вызвать другую функцию, которая бы весь этот switch просмотрела... А как это сделать изящно и с небольшими исправлениями уже написанного я не представляю.

Код:
static class ExtensionsM
    {
        public static string Convert(this int n)
        {
            string word="";
             int t=0;

            switch (n)
            {

                case 1: words = "one"; break;
                case 2: words = "two"; break;
                case 3: words = "three"; break;
                case 4: words = "four"; break;
                case 5: words = "five"; break;
                case 6: words = "six"; break;
                case 7: words = "seven"; break;
                case 8: words = "eight"; break;
             //**************************

                case 20: words = "twenty"; break;
                case 30: words = "thirty"; break;
               case 100: words = "hundred"; break;
                
                                 
                             
                default:
                    break;
            }

            if ((number % 10 == 4)||(number % 10 == 6)||(number % 10 == 7)||(number % 10 ==8)||(number % 10 == 9))//если 14, 17, 18 или 19 
            
{
               
                n = n % 10;
                w = (case(n)) + "teen";
               

            }
                
           
            
        }
    }
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 16.03.2012 в 17:16.
Blondy вне форума Ответить с цитированием
Старый 15.03.2012, 21:09   #2
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Все, разобрались)) Это я с расширенным методом сама себя перемудрила.

Можно закрывать))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 15.03.2012, 22:01   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Очень нескромный вопрос: Почему бы не заменить switch на массив значений. Или даже ассоциированный кортеж?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.03.2012, 01:09   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Такой же нескромный ответ - мы еще такого не проходили. Пример в студию!!! А то я уже запарилась писать words + "ty" и words + and words + words вернее проверки к ним - типа сколько разрядов в числе.....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 16.03.2012, 14:02   #5
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Недавно писал такую программу для преобразования числа до 999 триллионов в его текстовое представление на русский язык на C#. Если что, могу помочь.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 16.03.2012, 17:00   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Дорогой ByAlex, что там помогать - я же делала подобные проекты в других языковых средах - просто надо вспомнить....

Но меня очень интересует идея Виталика - я пока слабо представляю, как выглядит ассоциативный кортеж и массив в подобной реализации.. Я всегда через switch делала
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 16.03.2012, 17:15   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

наверное, Виталик имел в виду массив вида
mas['1'] = "one";
mas['2'] = "two";
А потом разбивать вводимое число на цифры и подставлять к индексам.
mas[number]. Как-то так.

Немного не понятно условие //если 14, 17, 18 или 19
(number % 10 == 4). Разве если мы введем 24, то у нас не получится true в результате?

И еще - чисто из любопытства, потому что с Си шарпом давно не общалась.
(case(number)) - как это работает? Что такое case в данном случае?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 16.03.2012, 19:43   #8
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Blondy Посмотреть сообщение
Дорогой ByAlex, что там помогать - я же делала подобные проекты в других языковых средах - просто надо вспомнить....

Но меня очень интересует идея Виталика - я пока слабо представляю, как выглядит ассоциативный кортеж и массив в подобной реализации.. Я всегда через switch делала
Что то не культурно вы код оформляете! Зачем делать через Switch, если можно сделать просто массивы значений, например,
Код:
string[] Edinicy =  new string[10]{"один","два","три","четыре","пять" и т.д};
, и обращаться к ним через их индексы(Edinicy[1]="один"). Я так делал. А с таким кодом как у вас слишком много строк кода получается.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 16.03.2012, 19:59   #9
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Код:
      case 1: words = "one"; break;
                case 2: words = "two"; break;
                case 3: words = "three"; break;
                case 4: words = "four"; break;
                case 5: words = "five"; break;
                case 6: words = "six"; break;
                case 7: words = "seven"; break;
                case 8: words = "eight"; break;
             //**************************

                case 20: words = "twenty"; break;
                case 30: words = "thirty"; break;
               case 100: words = "hundred"; break;
                
...
            if ((number % 10 == 4)||(number % 10 == 6)||(number % 10 == 7)||(number % 10 ==8)||(number % 10 == 9))//если 14, 17, 18 или 19
O.M.G. нет слов (((((((((((Ж
Rififi вне форума Ответить с цитированием
Старый 16.03.2012, 21:29   #10
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Для ACE Valery: в том то и дело что не работает так. Это я говорю, что перемудрила, надо наоборот, вначале проверку сделать - сделать проверку диапазона, все что надо поделить, посмотреть остаток, прикинуть, что можно поклеить и лишь потом в switch выходить....

Я знаю, что много строк получается, вот я и ищу оптимальный метод... поэффектнее. Поэтому и ждала Виталика с примером. Но Вы его опередили)) Надо теперь прикинуть, как это все применить к моему примеру....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка Выход(на выход Из программы)С++ Напишите код ProGec4 Общие вопросы C/C++ 3 19.02.2012 15:36
Преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в начало слова, изменив порядок следования цифр в с Нортон Общие вопросы C/C++ 0 11.02.2012 18:38
Вывести на консоль слова не содержащие цифры Luchia Помощь студентам 0 20.12.2011 13:30
Напечатать слова в которые входят цифры profi Помощь студентам 3 02.12.2009 23:34
вводить свои слова и цифры для регистрации. Nicky21 Microsoft Office Access 2 18.11.2008 11:04