Loading...
tdk928 avatar tdk928 108 Точки

Number 0..100 to Text

Здравейте, имам проблем с кода.Трябва да въведа число от конзолата и да го изпише с думи.Над 100 - invalid number.Пример:
55
fifty five:
255
invalid number
Та..  Проблемът ми е ,че кода ми отпечатва числата от 0-10 и от 20-100 но неможе 10-20 при опит да отпечатам 14 ми излиза four при опит да отпечатам 585 - five и така при 10-20 и 100+ ми отпечатва само последната цифра.
 

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

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            double tens = a / 10;
            double ones = a % 10;


           
            if (a == 0)
            {
                Console.WriteLine("zero");
            }
            
            if ( tens == 2)
            {
                Console.Write("twenty ");
            }
            else if (tens == 3)
            {
                Console.Write("thirty ");
            }
            else if (tens == 4)
            {
                Console.Write("fourty ");
            }
            else if (tens == 5)
            {
                Console.Write("fifty ");
            }
            else if (tens == 6)
            {
                Console.Write("sixty ");
            }
            else if (tens == 7)
            {
                Console.Write("seventy ");
            }
            else if (tens == 8)
            {
                Console.Write("eighty ");
            }
            else if (tens == 9)
            {
                Console.Write("ninety ");
            }

            if (ones == 1)
            {
                Console.WriteLine("one");
            }
            else if ( ones == 2)
            {
                Console.WriteLine("two");
            }
            else if (ones == 3)
            {
                Console.WriteLine("three");
            }
            else if (ones == 4)
            {
                Console.WriteLine("four");
            }
            else if (ones == 5)
            {
                Console.WriteLine("five");
            }
            else if (ones == 6)
            {
                Console.WriteLine("six");
            }
            else if (ones == 7)
            {
                Console.WriteLine("seven");
            }
            else if (ones == 8)
            {
                Console.WriteLine("eight");
            }
            else if (ones == 9)
            {
                Console.WriteLine("nine");
            }
            else if ( a == 100)
            {
                Console.WriteLine("one hundred");
            }
            else if (a > 100)
            {
                Console.WriteLine("invalid number");
            }

        }
    }
}
 

Тагове:
0
Programming Basics
dimitur_botev avatar dimitur_botev 112 Точки

Смени double tens на int tens, защото когато разделиш приметно 13/ 10 връща double 1.3  и не влиза в никое от улсовията. Когато делиш примерно 20 /10 връща 2 и за това влиза в проверките, но това е частен случай. Когат го направиш на int часта зад десетичната запетая не се записва и така ще имаш цифра, не дробна стойност

0
30/06/2016 23:06:37
tdk928 avatar tdk928 108 Точки

Благодаря за уточнението смених го но отново не ми изкарва invalid number при въвеждане на > 100 . Накрая смених и с само с else но пак нестава.

0
dimitur_botev avatar dimitur_botev 112 Точки

Според мен най-удачно е да проверяваш за > 100  и == 100 най-напред, защото иначе влиза в логиката и почва да принти думи, докато направи тези две проверки  вече е амазано :) Направи така if(a > 100) {

  Console.WriteLine("invalid number");

}else if( a == 100) {

    Console.WriteLine("one hundred");

}else{

цялата останало логика без проверката за > 100 и == 100

}

 

0
30/06/2016 23:32:06
tdk928 avatar tdk928 108 Точки

Прав си така вади > 100 но когато въведа 586 ми изважда:

five

invalid number 
отново ми вади последната цифра на числото+

в judge в детайлите имам проблем.за 20-100 използвам
else if (tens == 5)
            {
                Console.Write("fifty ");
            }
 else if (ones == 5)
            {
                Console.WriteLine("five");
            }

Така нямам никакъв проблем когато числото е 55 заради интервала след fifty.Но когато числото е 50 ми изкарва "fifty " което е грешка в judge.

0
Luko193 avatar Luko193 342 Точки

Ето това е моят код за тази задача: http://pastebin.com/8VXrpJqy. Можеш да изпишеш чрез switch statement директно числата от 0 до 19. За по-големите числа, трябва да раздробиш числото до цифри и спрямо тях да изпишеш цялото наименование на числото. Дано съм помогнал.

0
tdk928 avatar tdk928 108 Точки

Благодаря за решението но все още не съм стигнал до switch и ми се иска да я реша с сегашните си знания и този метод.

0
borislav9212 avatar borislav9212 745 Точки

Здравей,

Имаш пропуснати проверки, затова не ти отпечатва някой от числата. Редактирах ти кода, малко дълъг стана, но така е с "if-else" проверките-> http://pastebin.com/EWJVtAgA

Ето едно решение със "switch-case", малко по кратко -> http://pastebin.com/fXdMPqfK

И още по-кратко с Dictionary -> http://pastebin.com/187AcLQ3

0
srebrina.kirova avatar srebrina.kirova 0 Точки

Тези кодове минават ли в Judje? На решението с масивите мисля, че ти липсва проверка за Невалидно число. Освен това аз имах много ядове с тази задача, защото гърми, ако се въведе дробно, а не цяло число. Накрая ми се наложи да сложа CatchException, за да си събера всички точки 😕 а със знанията, които се очакват за този етап, аз поне нямам идея как да стане😊

0
Pilgrimage avatar Pilgrimage 515 Точки

Минава теста в Judge системата.

А в условието на задачата пише, че входът е цяло число, затова си спестих "излишните" проверки и задълбах в логиката.

0
LardaX avatar LardaX 15 Точки

И мен ме мъчеше тая задачка, но днеска четох за switch case - овете и написах вариант на задачата, който се приемаше от judge-а със 100 точки, но включваше писане на case-ове за числата от 0 до 19. След това помъдрих още малко и с добавянета на един if и && успях да съкратя значително кода, премахвайки числата от 1 до 9 от първия switch case. Прие ми го със 100 точки - погледнете го ако искате. Надявам се да е от полза.

http://pastebin.com/Wk5tmWdY

0
04/07/2016 21:52:20
Radoslav98 avatar Radoslav98 0 Точки

Ето моето решение : http://pastebin.com/5daCrLvf

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