Loading...
GeorgiSotirov avatar GeorgiSotirov 16 Точки

Здравей,

Задачката наистина е интересна. Виждам, че си си поиграл/а доста. 

Аз доста се забавлявах на тази задача, признавам. Опитах се да я направя колкото може по-динамична без много хардкодване и мисля, че се получи добре.

Може да видиш моето решение: http://pastebin.com/FqcSjEvc

Както може да се види, моето е доста дълго, поради факта, че имам някакви по-специални проверки за input-а, което бих те посъветвал да се опиташ да направиш и ти :) за да няма изненади когато някой вкара "3214534425633фсддфгдсф124" примерно.

При теб виждам, че в последния масив имаш хардкоднати стойностите на стотиците, което мисля, че може да се избегне, ако просто вземеш стойността от първият масив digits и просто добавиш стринг "hundred" на изхода :) 

Примерно: return digits[hunds] + " hundred";

Също така може да слееш първите два масива - digits и tenToTwenty. Защо им е да са разделени :) Правиш масив от 0 до 19 и след това проверяваш дали въведеното число е от 0 до 19 и му принтираш името - return nums0to19[num];

Това е просто съвет от моя страна :)

Поздравления за задачката!

Cheers :)

1
Al3xFx avatar Al3xFx 33 Точки

Мнооого красиво написана и перфектно документирана програма. Останах без думи. Браво...

1
GeorgiSotirov avatar GeorgiSotirov 16 Точки

Благодаря :) 

0
Blagoy_Blagoev avatar Blagoy_Blagoev 3 Точки

На 21 ред при индексацията на "twentyToHundred[(number / 10) - 2]" това (-2) прави объркване и при 99 връща seventy nine.

Навсякъде проверяваш под или над 100 и когато зададеш 100 не връща нищо.

При числата над  20 когато последната цифра е нула връща и нула. При 900 дава резултат nine hundred and zero.Може да го избегнеш чрез if(number == 0). Резултат zero трябва да връща само при стойност на въведеното число 0.

А това е мойто решение заради темата Conditional Statements използвах "if" и "switch" конструкции
http://pastebin.com/J8XAFDQP

1
22/09/2015 13:47:07
GeorgiSotirov avatar GeorgiSotirov 16 Точки

Здравей колега, 

Интересно решение :) Доста IF - ове, но все пак се упражняваме върху Conditionals, така че, goo job :) 

Cheers :) 

0
simeon_petrov avatar simeon_petrov 45 Точки

Колега чудесен код! Само една дребна забележка, ако се въведе 001 програмата дава отговор and one. Предлагам едно съвсем дребно подобрение, примерно някъде след проверката на парсването:

string nn = "";

            for (int i = 0; i < number.Length; i++)
            {
                if ((number.Length > 1) && (number[0] == '0'))
                {
                    for (int j = 0; j < number.Length - 1; j++)
                    { nn += Convert.ToString(number[j + 1]); }

                }
                if (nn != "") { number = nn; }
                nn = "";
            }

1
GeorgiSotirov avatar GeorgiSotirov 16 Точки

Благодаря не бях го тествал с 001. 

Ще го прегледам :) 

0
valiobar avatar valiobar 29 Точки

Ето едино решение и от мен http://pastebin.com/CYa5Z9ZP

0
GeorgiSotirov avatar GeorgiSotirov 16 Точки

Здравей колега,

Гледам, че си се постарал, поздравления за старанието :)

Сега и малко градивна критика :)

Копирах кода ти, пуснах го и хоп - от 100 нагоре (примерно 111) гърми ето тук: hundreds = ones[number / 100] + "hundreds"

След няколко теста забелязах, че всъщност не трябва да е once[], а трябва да е onceArr[] както ти се казва масива с единиците. Ако си го предал така, поправи го и го качи наново, докато имаш време :) Също така форматирай малко стринга за да не излиза "onehundreds and eleven", а да си е както трябва - "One hundred and eleven" :)

Също така, можеш да помислиш как да го раздробиш на отделни методи за да не е толкова объркващо. Има доста nested IFs, което прави кода доста неразбираем.

Поздравления отново и успех!

Cheers :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.