Number 0....100 to text
Здравейте колеги, малко се измъчих с последната задача от домашното с простото условие "Да се напише програма, която превръща число [0…100] в текст: 25 - “twenty five”. След як рисърч в StackOverflow и с малко мислене стигнах до следното решение -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Numbers0._._._100Text
{
class Program
{
static void Main(string[] args)
{
var number = int.Parse(Console.ReadLine());
if (number == 0)
{
Console.Write("zero");
}
else if (number < 0 || number > 100)
{
Console.Write("invalid number");
}
string words = "";
if (number > 0)
{
if (words != "")
words += "and ";
var unitsMap = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
var tensMap = new[] { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
if (number < 20)
words += unitsMap[number];
else
{
words += tensMap[number / 10];
if ((number % 10) > 0)
words += " " + unitsMap[number % 10];
}
}
Console.WriteLine(words);
}
}
}
Въпроса ми е защо при 100 и при числа под 100 или над него дава отговора, но гърми? Judge ми дава 88 точки от 100 заради тези проблеми. Ще съм благодарен за подсказаки ;)
Колега, благодаря за полезния отговор, и аз се измъчих да разбера защо ми дава 88 точки, но от твоя код видях, че се очаква, в случай че въведеното число е извън диапазона от 1 до 100 програмата да изпише "Invalid number", което не беше описано в условието.
Та добавих този случай и точките станаха 100.
Сърдечно благодаря!