Loading...
Kuncavia avatar Kuncavia 1 Точки

Затруднение с задач "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'" (в края на кода). 

Въпроса е какво да променя? Пробвах и по-сложни кодове, но там още повече се овъртях. 

Поздрави,

 

Тагове:
1
Programming Basics
Leprikona avatar Leprikona 108 Точки

Най-лесният, според мен, начин е да направиш един string масив, в който да съхраняваш всички числа като думи.

След това да завъртиш един цикъл от първото число до последното (в случая от 0 до 9) и да кажеш на програмата да ти отпечата името на това число от масива, който си създал.

Или смени string num с int num и махни кавичките от if-else-a и ще сработи.

0
18/09/2016 13:57:23
AndreyBozhkov avatar AndreyBozhkov 1 Точки

Здравейте,

Съгласен, най-добре чрез масив(и).

Решение чрез масиви: https://gist.github.com/andreybozhkov/ebaa26d7e8e4b261c1b3e32cd199269b (Забележка: сбърках името в проекта - трябва да е 0 to 9, а не 0 to 10.)

Само масивите и популация на масива с числа за мързеливите:

string[] numbersinwords = new string[] {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int[] numbers = new int[10];
for (int i = 0; i <= 9; i++)
{
    numbers[i] = i;
}

 

1
19/09/2016 00:10:02
Leprikona avatar Leprikona 108 Точки

Най-важното в програмирането е да напишеш кода по възможно най-краткия начин, за да проследяваш по-бързо какво се случва в програмата.

Едно е да четеш 1 000 реда код, друго е тия 1000 редове да са 100 примерно. :)

0
19/09/2016 21:09:17
Leprikona avatar Leprikona 108 Точки

Ето така трябва да изглежда горното обяснение:

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 цикъла".

0
19/09/2016 21:26:23
AndreyBozhkov avatar AndreyBozhkov 1 Точки

@Leprikona: Относно дължината на кода, съгласен съм. Със сигурност има как кода да се опрости и оптимизира.

За предложената ти поправка, не съм съгласен, че е подходяща. Целта на задачата не е да се изкарат на екрана числата от 0 до 9 с думи. Целта е за въведено число (от 0 до 9) от потребителя да се изведе на екрана съответното число с дума.

Целта на цитирания код тук е да:

1) Създаде масив съдържащ числата от условието в думи.

2) Създаде масив съдържащ възможните входни данни от потребителя. Индексите на елементите и съдържанието им от двата масива си съответстват. Например, вход 3 = индекс 3 = three.

Проверката и извеждането на резултата на екрана се изпълнява по следния начин:

if (num > numbers[numbers.Length - 1]) { Console.WriteLine("number too big");}
else
{
    for (int i = 0; i < numbers.Length; i++)
    {
        if (num == numbers[i]){Console.WriteLine(numbersinwords[i]);}
    }
}

Предполагам, че кодът може да се подобри като се добави break във for - if структурата, тъй като няма смисъл проверката да продължава щом резултатът е намерен.

Пълното решение, може да намерите тук: https://gist.github.com/andreybozhkov/ebaa26d7e8e4b261c1b3e32cd199269b

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