Loading...
RifatCholakov avatar RifatCholakov 53 Точки

Mоже ли да дадеш цялото условие и линк към задачата в jude?

0
Simeon22 avatar Simeon22 12 Точки

https://softuni.bg/trainings/resources/officedocument/11645/exercise-csharp-programming-basics-december-2016

Това е линка към условието на задачата, последната задача от упражнението.

https://judge.softuni.bg/Contests/Practice/Index/152#15

А това е линка към judge.

Благодаря за вниманието!

0
viktorlazarov avatar viktorlazarov 16 Точки

Трябва да напишеш и един if ,в който ако числото е 32 примерно, да изпише thirty + two , тоест thirty two.

0
09/03/2017 13:02:37
viktorlazarov avatar viktorlazarov 16 Точки

Трябва да вземеш колко са десетиците и колко единиците.Можеш да го направвиш като създадеш две променливи,в които да държиш остатъка от деление на 10 и деление без остатък също на 10.Ако остатъка с деление на 10 е 3 ,пишеш "three".Aко делението без остатък е равно на 5 ,пишеш "fifty" и след това ги съединяваш в конзолата.

0
09/03/2017 13:08:52
bojidar95 avatar bojidar95 9 Точки

Това е моят код: http://pastebin.com/qC2D3s3B

Доста е дълъг, но аз (като начинаещ) се справих лесно по този начин и смятам, че не е труден за разчитане. 

Първо си прочитам входа от конзолата (цяло число intNumber) и го превръщам в string number, за да мога да прочета дължината му в последствие. Създавам си също и string numberText, който ще съдържа крайния резултат (! Важно е да му се определи стойност, зашото иначе дава грешка по-надолу).

Използвам if statement, за да проверя дали числото ми е "валидно", т.е. между 0 и 100, както и опция за изписване на "one hundred", ако числото е 100. 

Ако числото ми е "валидно" и не е 100, продължавам нататък като прочитам дължината му (1 или 2 цифри), за да мога да разработя поотделно десетици и единици и да ги обединя в отговора. Не съм сигурен колко оптимално съм използвал switch-ове и if statements, но оставям кода така за момента. Ако числото ми е 2-цифрено, разглеждам първата цифра number[0] (character на място 0 в string number). Ако е 1-ца, още тук прочитам и втората цифра, защото вариантите са особени (eleven, а не ten one) и записвам резултата в string numberText. Ако цифрата на десетиците не е 1-ца, продължавам надолу по switcha и добавям към numberText думата за десетици, която ми е нужна.

Следва if statement, който проверява дали цифрата на десетиците е 1-ца отново, за да не добавям към резултата излишен текст ("eleven one", "twelve two", etc.). Ако не е, със switcha под него се прочита цифрата на единиците number[1] (character на място 1 в string number) и добавям към резултата numberText дума за единиците с разстояние пред нея (" one", " two", etc.).

Това извежда резултат при двуцифрени числа. Отдолу имам else, който се включва, ако числото НЕ е двуцифрено и в него, със switch, съм си извел възможните 10 резултата - от 0 до 9.

Завършвам с извеждане на резултата в конзолата - Console.WriteLine(numberText);

Когато решавах задачата, това ми се стори най-добрият начин да я "автоматизирам". Надявам се да ти помогне поне малко. Ако не ми се разбира нищо, мога евентуално да кача кода с обясненията написани в него.

Edit: viktorlazarov ме подсеща, че може да се направи подобно нещо с деление на 10, вместо четенето на string, което не е включено в курса, но на мен, лично, ми е по-лесно да го направя по този начин.

2
09/03/2017 18:24:06
AlucardDracula avatar AlucardDracula 416 Точки

понякога не е важно как е решено, а резултата. Успял си да решиш задачата значи вс. ОК, после ако не ти хареса може да го оптимизираш и т.н. . Виждам че кода ти е 160 реда, можеше да направиш switch и за всяко число Console.WriteLinе, така кода ще е 40-50 реда по малко :) 

0
bojidar95 avatar bojidar95 9 Точки

Моите суичове са форматирани с кейсове от по 3 реда, така че кодът ми реално е по-кратък от 100 реда Console.WriteLine(). Като цяло идеята ми беше да го направя автоматично и лесно за разширяване. Предполагам, че ще се върна към задачата и може би ще си направя отделни методи (за единици, десетици, стотици, etc.) и ще мога да я разширявам до безкрайност с лекота.
Опитвам се да търся не просто решение на задачата, а практичен, код, който има приложение извън рамките ѝ. Кодът ми не е идеален, но нямах възможност да го пренапиша/редактирам и реших да го използвам като пример, за да обясня процеса си на мислене/работа.

1
Simeon22 avatar Simeon22 12 Точки

Благодаря много за изчерпателния отговор! Поздрави!

0
AlucardDracula avatar AlucardDracula 416 Точки

ето решение от мен : ЛИНК

0
09/03/2017 16:54:41
Simeon22 avatar Simeon22 12 Точки

Благодаря за решението! Ще се помъча още и сам да измисля вариант за решение. Поздрави!

1
spzvtbg avatar spzvtbg 581 Точки

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

0
Simeon22 avatar Simeon22 12 Точки

Благодаря за решението, но ще се мъча още сам да я реша. Въпроса ми беше за нчкакви насоки към моето решение. Поздрави!

0
krasio12356 avatar krasio12356 19 Точки

Преводачески задачи не се решават с иф елс или суич кейс. Решават се с речници, хеш таблици или обикновени масиви, както е в случая, понеже ключове са естествените числа от нула до девет.

Правят се три масива с по 10 елемента от тип стринг. Думата нула, стои на индекс нула, думата 1 на индекс едно и така нататък до 9. Още един масив с думите от 10 до 19 и още един от 20 до 90, всъщност пак от нула до девет, само че се получават в контекст за десетици.

Ако числото е по малко от десет, отговора се извлича директно от масива за единиците. Ако е от 10 до 19, отговора се получава като се извлече директно думата от съответния масив. От 20 до 100 се извличат от двата масива, за единици и за десетици и се долепват думите с един интервал между тях.

Ако са изключени невалидните числа, числото 100 може да се напише на индекс на десетиците - нула. А може и като специален случай.

0
Simeon22 avatar Simeon22 12 Точки

Благодаря за информацията, но в курса Programming Bassics не се учат все още масиви. Поздрави!

0
desislava777 avatar desislava777 165 Точки

Не си разгледал случаите когато числата са между 10 и 20, 20 и 30 и т.н. Например, ако в конзолата се напише 55 няма да излезе нищо.

0
Simeon22 avatar Simeon22 12 Точки

Това е проблема, че не мога да измисля как да ги разгледам.

0
desislava777 avatar desislava777 165 Точки

Ще ти стане много дълъг кода. Не можах да се сетя за за някакъв по-елегантен начин, защото съм начинаещ програмист, но ще получиш 100 точки. Можеш да използваш if else или switch. Ето едно решение:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication51
{
    class Program
    {
        static void Main(string[] args)
        {
            var num = int.Parse(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("eleven");
            }
            else if (num == 12)
            {
                Console.WriteLine("twelve");
            }
            else if (num == 13)
            {
                Console.WriteLine("thirteen");
            }
            else if (num == 14)
            {
                Console.WriteLine("fourteen");
            }
            else if (num == 15)
            {
               Console.WriteLine("fifteen");
            }
            else if (num == 16)
            {
                Console.WriteLine("sixteen");
            }
            else if (num == 17)
            {
                Console.WriteLine("seventeen");
            }
            else if (num == 18)
            {
                Console.WriteLine("eighteen");
            }
            else if (num == 19)
            {
                Console.WriteLine("nineteen");
            }
            else if (num==20)
            {
                Console.WriteLine("twenty");
            }
            else if (num == 21)
            {
                Console.WriteLine("twenty one");
            }
            else if (num == 22)
            {
                Console.WriteLine("twenty two");
            }
            else if (num == 23)
            {
                Console.WriteLine("twenty three");
            }
            else if (num == 24)
            {
                Console.WriteLine("twenty four");
            }
            else if (num == 25)
            {
                Console.WriteLine("twenty five");
            }
            else if (num == 26)
            {
                Console.WriteLine("twenty six");
            }
            else if (num == 27)
            {
                Console.WriteLine("twenty seven");
            }
            else if (num == 28)
            {
                Console.WriteLine("twenty eight");
            }
            else if (num == 29)
            {
                Console.WriteLine("twenty nine");
            }
            else if (num == 30)
            {
                Console.WriteLine("thirty");
            }
            else if (num == 31)
            {
                Console.WriteLine("thirty one");
            }
            else if (num == 32)
            {
                Console.WriteLine("thirty two");
            }
            else if (num == 33)
            {
                Console.WriteLine("thirty three");
            }
            else if (num == 34)
            {
                Console.WriteLine("thirty four");
            }
            else if (num == 35)
            {
                Console.WriteLine("thirty five");
            }
            else if (num == 36)
            {
                Console.WriteLine("thirty six");
            }
            else if (num == 37)
            {
                Console.WriteLine("thirty seven");
            }
            else if (num == 38)
            {
                Console.WriteLine("thirty eight");
            }
            else if (num == 39)
            {
                Console.WriteLine("thirty nine");
            }
            else if (num == 40)
            {
                Console.WriteLine("fourty");
            }
             else if (num == 41)
            {
                Console.WriteLine("fourty one");
            }
            else if (num == 42)
            {
                Console.WriteLine("fourty two");
            }
            else if (num == 43)
            {
                Console.WriteLine("fourty three");
            }
            else if (num == 44)
            {
                Console.WriteLine("fourty four");
            }
            else if (num == 45)
            {
                Console.WriteLine("fourty five");
            }
            else if (num == 46)
            {
                Console.WriteLine("fourty six");
            }
            else if (num == 47)
            {
                Console.WriteLine("fourty seven");
            }
            else if (num == 48)
            {
                Console.WriteLine("fourty eight");
            }
            else if (num == 49)
            {
                Console.WriteLine("fourty nine");
            }
            else if (num == 50)
            {
                Console.WriteLine("fifty");
            }
            else if (num == 51)
            {
                Console.WriteLine("fifty one");
            }
            else if (num == 52)
            {
                Console.WriteLine("fifty two");
            }
            else if (num == 53)
        

    Console.WriteLine("fifty three");
            }
            else if (num == 54)
            {
                Console.WriteLine("fifty four");
            }
            else if (num == 55)
            {
                Console.WriteLine("fifty five");
            }
            else if (num == 56)
            {
                Console.WriteLine("fifty six");
            }
            else if (num == 57)
            {
                Console.WriteLine("fifty seven");
            }
            else if (num == 58)
            {
                Console.WriteLine("fifty eight");
            }
            else if (num == 59)
            {
                Console.WriteLine("fifty nine");
            }
            else if (num == 60)
            {
                Console.WriteLine("sixty");
            }
             else if (num == 61)
            {
                Console.WriteLine("sixty one");
            }
            else if (num == 62)
            {
                Console.WriteLine("sixty two");
            }
            else if (num == 63)
            {
                Console.WriteLine("sixty three");
            }
            else if (num == 64)
            {
                Console.WriteLine("sixty four");
            }
            else if (num == 65)
            {
                Console.WriteLine("sixty five");
            }
            else if (num == 66)
            {
                Console.WriteLine("sixty six");
            }
            else if (num == 67)
            {
                Console.WriteLine("sixty seven");
            }
            else if (num == 68)
            {
                Console.WriteLine("sixty eight");
            }
            else if (num == 69)
            {
                Console.WriteLine("sixty nine");
            }
            else if (num == 70)
            {
                Console.WriteLine("seventy");
            }
            else if (num == 71)
            {
                Console.WriteLine("seventy one");
            }
            else if (num == 72)
            {
                Console.WriteLine("seventy two");
            }
            else if (num == 73)
            {
                Console.WriteLine("seventy three");
            }
            else if (num == 74)
            {
                Console.WriteLine("seventy four");
            }
            else if (num == 75)
            {
                Console.WriteLine("seventy five");
            }
            else if (num == 76)
            {
                Console.WriteLine("seventy six");
            }
            else if (num == 77)
            {
                Console.WriteLine("seventy seven");
            }
            else if (num == 78)
            {
                Console.WriteLine("seventy eight");
            }
            else if (num == 79)
            {
                Console.WriteLine("seventy nine");
            }
            else if (num == 80)
            {
                Console.WriteLine("eighty");
            }
            else if (num == 81)
            {
                Console.WriteLine("eighty one");
            }
            else if (num == 82)
            {
                Console.WriteLine("eighty two");
            }
            else if (num == 83)
            {
                Console.WriteLine("eighty three");
            }
            else if (num == 84)
            {
                Console.WriteLine("eighty four");
            }
            else if (num == 85)
            {
                Console.WriteLine("eighty five");
            }
            else if (num == 86)
            {
                Console.WriteLine("eighty six");
            }
            else if (num == 87)
            {
                Console.WriteLine("eighty seven");
            }
            else if (num == 88)
            {
                Console.WriteLine("eighty eight");
            }
            else if (num == 89)
            {
                Console.WriteLine("eighty nine");
            }
            else if (num == 90)
            {
                Console.WriteLine("ninety");
            }
            else if (num == 91)
            {
                Console.WriteLine("ninety one");
            }
            else if (num == 92)
            {
                Console.WriteLine("ninety two");
            }
            else if (num == 93)
            {
                Console.WriteLine("ninety three");
            }
            else if (num == 94)
            {
                Console.WriteLine("ninety four");
            }
            else if (num == 95)
            {
                Console.WriteLine("ninety five");
            }
            else if (num == 96)
            {
                Console.WriteLine("ninety six");
            }
            else if (num == 97)
            {
                Console.WriteLine("ninety seven");
            }
            else if (num == 98)
            {
                Console.WriteLine("ninety eight");
            }
            else if (num == 99)
            {
                Console.WriteLine("ninety nine");
            }
            else if (num == 100)
            {
                Console.WriteLine("one hundred");
            }
             else
            {
                Console.WriteLine("invalid number");
            }   
        }
    }
}

 

    {

 

 

0
mcwolf avatar mcwolf 3 Точки

Този код е мазохизъм :)

1
desislava777 avatar desislava777 165 Точки

Така е, обаче дава 100 точки.

0
spzvtbg avatar spzvtbg 581 Точки

това е  код легенда .... :)

 

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