Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
При TryParse, когато не успея да парсне чилсото към int връща default value, а именно 0.
Може да си решиш проблема с една проверка например:
if(digit.ToString() != value){
Console.WriteLine("Not a Digit");
}
else{
stwitch...
}
Може проверката да е по доста различни начини сещам се още и за:
if(value.Length != 1)
EDIT: Също така TryParse връща и стойност дали е успял да парсне и можеш да проверяваш нея, което може би е най-правилния начин, нещо такова:
bool hasConverted = int.TryParse(value, out digit);
if(hasConverted )
Аз лично се сещам за още два варианта ,но единия не е коментиран и е по- интересен за това:
string [] toNinе = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
правиш проверка дали числото е между 0 и 9 и ако е, печаташ toNine[num],където num е въведеното число.
и по този начин може да направиш редицата не до 9 а до 19 на пример
string [] toNineteen = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen","seventeen", "eighteen", "nineteen" };
По този начин няма да си реши проблема с 0.1 защото при парсване към инт пак ще стани 0 и ще му изведе нулевия елемнт от масива, а и отговаря на условието между 0 и 9.
Ето и вариант да се превръща в думи многоцифрено число.
В превръщането на 0.1 в думи има два проблема:
първият е, че алгоритъма на dim.dim е за цифри (digits), и не може да работи с многоцифрени числа, а 0.1 е многоцифрено число, има повече от една цифра.
Но и задачата е Digit аs Word, едва ли се очаква инпут от дробни числа.
Вторият проблем е именуването и на десетичния знак.
Всъщност идеята на dim.dim да се приемат като инпут и floating point numbers между 0 и 9 е страшно интересна.
Може и самият алгоритъм на dim.dim да се продължи, за да приема и floating point numbers между 0 и 9, и с една цифра след десетичния знак:
code: http://pastebin.com/Xp27HULf
output:
This program asks for a number (0-9),
including 2.8 (rounded to one digit after the decimal point)
and depending on the input, shows the digits as a words.
Please, enter a number (0-9): 2.123456789
two point one
Press any key to continue . . .
ето моето решение
int a;
bool check = int.TryParse(Console.ReadLine(), out a);
if ((check == true) && (a >= 0 && a <= 9))
{
switch (a)
{
case 1: Console.WriteLine("one"); break;
case 2: Console.WriteLine("two"); break;
case 3: Console.WriteLine("three"); break;
case 4: Console.WriteLine("four"); break;
case 5: Console.WriteLine("five"); break;
case 6: Console.WriteLine("six"); break;
case 7: Console.WriteLine("seven"); break;
case 8: Console.WriteLine("eight"); break;
case 9: Console.WriteLine("nine"); break;
}
}
else
{
Console.WriteLine("not a digit");
}
Да няма да му реши проблема, аз разсъждавам ако въведеното число е integer а не string.Но всъщност в конкретната задача спокойно входа може да бъде integer.Защо трябва да е string?