Затруднение с задач "Number 0...9 to Text"
Здравейте,
Имам затруднение със задача "Number 0...9 to Text". Разгледах няколко варянта от подобни задачи и стигнах до следния код:
using System;
class NumberToText
{
static void Main(string[] args)
{
string num = Console.ReadLine();
if (num == "0")
Console.WriteLine("zero");
else if (num == "1")
Console.WriteLine("one");
else if (num == "2")
Console.WriteLine("two");
else if (num == "3")
Console.WriteLine("three");
else if (num == "4")
Console.WriteLine("four");
else if (num == "5")
Console.WriteLine("five");
else if (num == "6")
Console.WriteLine("six");
else if (num == "7")
Console.WriteLine("seven");
else if (num == "8")
Console.WriteLine("eight");
else if (num == "9")
Console.WriteLine("nine");
else if (num == "10")
Console.WriteLine("ten");
else if (num >= "11")
Console.WriteLine("number too big");
}
}
Проблема е ясен "Operator '>' cannot be applied to operands of type 'string' and 'string'" (в края на кода).
Въпроса е какво да променя? Пробвах и по-сложни кодове, но там още повече се овъртях.
Поздрави,
Здравейте,
Съгласен, най-добре чрез масив(и).
Решение чрез масиви: https://gist.github.com/andreybozhkov/ebaa26d7e8e4b261c1b3e32cd199269b (Забележка: сбърках името в проекта - трябва да е 0 to 9, а не 0 to 10.)
Само масивите и популация на масива с числа за мързеливите:
Най-важното в програмирането е да напишеш кода по възможно най-краткия начин, за да проследяваш по-бързо какво се случва в програмата.
Едно е да четеш 1 000 реда код, друго е тия 1000 редове да са 100 примерно. :)
Ето така трябва да изглежда горното обяснение:
string[] numbersinwords = new string[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
for (int i = 0; i <= 9; i++)
{
Console.WriteLine(numbersinwords[i]);
}
това второто bold-нато се чете примерно така: "изпиши ми стойността на string[] numbersinwords на позиция i от for цикъла".
@Leprikona: Относно дължината на кода, съгласен съм. Със сигурност има как кода да се опрости и оптимизира.
За предложената ти поправка, не съм съгласен, че е подходяща. Целта на задачата не е да се изкарат на екрана числата от 0 до 9 с думи. Целта е за въведено число (от 0 до 9) от потребителя да се изведе на екрана съответното число с дума.
Целта на цитирания код тук е да:
1) Създаде масив съдържащ числата от условието в думи.
2) Създаде масив съдържащ възможните входни данни от потребителя. Индексите на елементите и съдържанието им от двата масива си съответстват. Например, вход 3 = индекс 3 = three.
Проверката и извеждането на резултата на екрана се изпълнява по следния начин:
Предполагам, че кодът може да се подобри като се добави break във for - if структурата, тъй като няма смисъл проверката да продължава щом резултатът е намерен.
Пълното решение, може да намерите тук: https://gist.github.com/andreybozhkov/ebaa26d7e8e4b261c1b3e32cd199269b
Пример с switch case;
Пример с for цикъл.