Loading...
Kristianchooy avatar Kristianchooy 59 Точки

Number 0...100 to Text

Някой може ли да ми обясни как да я реша или да напише решение с разяснение ? аз се сещам само за метода да изпиша всички числа с проверките :Д , видях няколко примера на решение но не ги разбрах, нямат обяснения

Тагове:
0
Programming Basics
RoYaL avatar RoYaL Trainer 6849 Точки

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

За 10, 11, 12, 13 и 15 важи същото. Трудно може да ги съставиш от N + teen. За останалите до 20 важи правилото N + "teen". Т.е.14 е 4 + teen. Тъй като имаш 4 записано в числата от нула до девет, взимаш го от там (four) и долепяш (teen). Същото важи за 16, 17, 18 и 19.

20 отново е от тези числа, които трябва да ги провериш и да ги изпишеш - "twenty". Но пък 21 е просто комбинация от вече записаните 20 и 1 (twenty one). Подобно и за останалите до 100.

Общо взето логиката е - изключенията, които не може да се съставяш от две или повече части - да ги запишеш. И останалите са просто долепяне от записани до момента числа.

Разбира се за да изкараш да речем от 34 числото 30 и 4 по отделно ще трябва да направиш някаква проста аритметика, като например да намериш остатъци и т.н. :) Оставям те от тук нататък да помислиш.

 

Успех!

2
PlamenMarkov92 avatar PlamenMarkov92 0 Точки

Системата е упорита, въпреки че нейният изход и моят съвпадат за вход "-1" ми дава грешка :D

Ето и кода, който използвам :

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        int value;
        var num = int.Parse(Console.ReadLine());
        string numToString = num.ToString();
        if (numToString.Contains("-"))
        {
            Console.WriteLine("invalid number");
        }
        var dict = new Dictionary<string, Dictionary<int, string>>();
        dict.Add("NumToText", new Dictionary<int, string>()
            {
                { -1, ""},
                { 0, "zero"},
                { 1, "one"},
                { 2, "two"},
                { 3, "three"},
                { 4, "four"},
                { 5, "five"},
                { 6, "six"},
                { 7, "seven"},
                { 8, "eight"},
                { 9, "nine"},
                { 10, "ten"},
                { 11, "eleven"},
                { 12, "twelve"},
                { 13, "thirteen"},
                { 14, "fourteen"},
                { 15, "fifteen"},
                { 16, "sixteen"},
                { 17, "seventeen"},
                { 18, "eighteen"},
                { 19, "nineteen"},
                { 20, "twenty"},
                { 30, "thirty"},
                { 40, "fourty"},
                { 50, "fifty"},
                { 60, "sixty"},
                { 70, "seventy"},
                { 80, "eighty"},
                { 90, "ninety"},
                { 100, "one hundred"}
            });
        if(num <= 20 || num == 0)
        {
            Console.WriteLine(dict["NumToText"][num]);
        }
        else if (num > 20 && num < 30)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][20] + " " + dict["NumToText"][value]);
        }
        else if (num > 30 && num < 40)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][30] + " " + dict["NumToText"][value]);
        }
        else if (num > 40 && num < 50)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][40] + " " + dict["NumToText"][value]);
        }
        else if (num > 50 && num < 60)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][50] + " " + dict["NumToText"][value]);
        }
        else if (num > 60 && num < 70)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][60] + " " + dict["NumToText"][value]);
        }
        else if (num > 70 && num < 80)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][70] + " " + dict["NumToText"][value]);
        }
        else if (num > 80 && num < 90)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][80] + " " + dict["NumToText"][value]);
        }
        else if (num > 90 && num < 100)
        {
            value = num % 10;
            Console.WriteLine(dict["NumToText"][90] + " " + dict["NumToText"][value]);
        }else if( num == 90 || num == 80 || num == 70 || num == 60 || num == 50 || num == 40 || num == 30 || num == 20)
        {
            Console.WriteLine(dict["NumToText"][num]);
        }
        else if (num == 100)
        {
            Console.WriteLine(dict["NumToText"][num]);
        }else if(num > 100)
        {
            Console.WriteLine("invalid number");
        }else if(!(num > 0))
        {
            Console.WriteLine("invalid number");
        }
    }
}

0
IvMironov avatar IvMironov 35 Точки

Здравей,

Кодът, който си ни написал гърми в Judge не само на -1, а и на всяко число по-малко от нула, както и на всяко двуцифрено число без кръглите 20, 30, 40, и т.н.

С малка редакция минава на 100%. Интересно решение:http://pastebin.com/0TLRD58N

 

Аз си поиграх да направя задачата само с проверки за да схвана идеята:http://pastebin.com/2LTR7TFr

Поздрави

 

0
27/06/2016 00:18:47
Plamen27 avatar Plamen27 599 Точки

Перфектна задача за да оттренираш Switch конструкцията:

Идеята е, че решението може да бъде разбито на блокове в моя случай на 3 блока:

1/ числа от 0 до 9

2/ цифри от 20 до 90

3/ числа от 10 до 19  (има и отделен случай 100)

Повечето цифри може да получиш като обединяваш блок 2 и блок 1 - примерно twenty five

Ето кода ми:

http://pastebin.com/7kYh1dh5

Остава да напишеш 2 switch блока аналогично на първия. Успех.

      

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