Loading...
peterto11 avatar peterto11 0 Точки

*Изписване на число до 100 с думи

Условието е числа от 0 до 100 ще бъдат въведени ор програмата. Когато бъдат въведени, под 0 и над 100 програмата да изписва invalid number. Когато го вкарам в джъдж обаче... ми казва че програмата ми нищо не изписва и нищо не се очаква... Когато си го тествам в visual studio е ок и програмата изписва invalid number.. Не мога да открия проблема...

http://pastebin.com/ZiMEYn8f

0
Programming Basics
ambiorix avatar ambiorix 640 Точки
Best Answer

Здравей. Проблемът идва от това, че в случаите когато изписваш "invalid number" или "one hundred" слагаш един допълнителен ред заради var numberWord = ""; и judge го хваща защото винаги накрая принтираш numberWord и в случаите на невалидно число или 100 имаш два реда - "invalid number" или "one hundred" + празен ред заради Console.WriteLine(numberWord); накрая.

Ето как се решава най-лесно проблемът и вече си на 100 (с return; отиваш накрая на текущия метод):

       if (number < 0 || number > 100)
            {
                Console.WriteLine("invalid number");
                return;
            }
            if (number == 100)
            {
                Console.WriteLine("one hundred");
                return;
            }

 

1
05/01/2017 15:06:17
peterto11 avatar peterto11 0 Точки

Благоадаря, много! Нямаше да се сетя сам.

0
alienghost avatar alienghost 22 Точки

ето ти едно решение    http://pastebin.com/SijFG7Hr

 

-1
Terziyski avatar Terziyski 54 Точки

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

 

Поздравления!

0
aburlakov avatar aburlakov 18 Точки

Махни ги тези var-ове. Я помисли ако делиш 27/10 какъв ще е резултатът. 2,7 и var става реално число. Ползвай конкретен тип данни и ще стане, аз и по-надолу не я погледнах задачката, но сигурно ще е вярна :)

0
moholovka avatar moholovka 169 Точки

Колегата е прав, var се използва когато от дясната част на израза се разбира какъв е типът данни. В случая ти не знаеш с какъв тип работиш, варианта е както каза колегата да изписваш типовете, другият е от дясно да кастваш.

0
peterto11 avatar peterto11 0 Точки

Под реално число, имаш предвид дробно? Защото търсих в нета какво е реално число и не разбирам как се връзва с задачата. http://www.mathspadilla.com/matI/Unit1-RealNumbers/conjuntos_reales.png.

Оставих var защото те автоматично се превръщат в int понеже на променливата ми която чете числото имам int.Parse. Правилно ли мисля или греша?

 

0
05/01/2017 16:30:37
NonaG avatar NonaG 111 Точки

Да, var - овете в случая си остават int и според лектора на моите лекции, var всъщност е улеснение, защото в момента на използването му вниманието ти не е върху типа данни, а  впоследствие винаги можеш да поставиш акцента върху тях и да ги имплицитнеш или експлицитнеш, или кастнеш. Фактът, че кодът ти не гърми заради var, означава, че ти е съвсем на място. А за проверка можеш във всеки един момент да дебъгнеш постъпково, а по-лесно - да ги изпишеш на конзолата и да ги видиш временно: в твоя случай

var number = int.Parse(Console.ReadLine());

var firstDigit = number / 10;

var secondDigit = number % 10;

Console.WriteLine(firstDigit);

Console.WriteLine(secondDigit);

И виждаш, че са цели числа.

Но всеки си има  предпочитания за работата с променливи, така че с var трябва да се внимава. :) Всъщност, ambiorix обясни вече какъв е бил проблемът.

0
NonaG avatar NonaG 111 Точки

Наистина е странно, във visual studio работи съвсем коректно, а при джъдж гърми в случаите извън диапазона и при 100. Интересното е, че при грешните тестове не изписва нищо като очакван изход, няма и "invalid number". А при моите решения, преди да стигна 100/100, на същите тестове ми е гърмяло, но изходът ми е бил празен ред, а джъдж е очаквал "invalid number". Но има разлика в коментара при грешката. При теб е:

Invalid number of lines on line 1

 

При моите грешни тестове е:

Line 0 is different.

 

0
anton_mironov avatar anton_mironov 19 Точки

Колега,

скрипта ти бачка без проблем. Не копираш правилно решението.... използвай ctrl + a преди да копираш... така няма начин да пропуснеш някоя крайна затваряща скоба, както и библиотеките отгоре... ако не стане копирай тук съобщението от judge..

Поздрави,
Антон Миронов

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