Problem 4. N-th Digit от 5. Operators-Expressions-and-Statements-Exercises
Колеги помогнете нещо не мога да се спрвя с тази задача, дава ми различен резултат?
Problem 1. N-th Digit
Write a program that prints the n-th digit of a number (from right to left). If no such digit exists, print a dash "-".
Hints:
- Declare three variables (number, n and nDigit).
- Read the user input from the console. (int.Parse(Console.ReadLine());).
- Find the n-th digit of the number by using the formulae ( The word mod means modular division (or the operator % in C#).
- Print the result on the console (Console.WriteLine(area));).
Number n result
2174 3 1
169 2 6
46 4 -
Ето моя код:
using System;
class NthDigit
{
static void Main()
{
Console.Write("Pleace enter one number: ");
int number = int.Parse(Console.ReadLine());
Console.Write("Pleace enter n-th digit of a number: ");
int n = int.Parse(Console.ReadLine());
double nDigit = number / Math.Pow((n - 1), 10) % 10;
Console.WriteLine(nDigit);
}
}
Колега, както е коментирано по-нагоре, с този вариант който си дал ти, няма да е напълно вярно с условието на задачата, а именно ако позицията която е подадена е по-голяма от цифрите на въведеното число,програмата трябва да връща "-" , а в твоя случай връща 0
Моя грешка, но въпреки това, този проблем се оправя с най - простата проверка:
Ами тази проверка не работи при числа започващи с цифра по-малка от позицията. На база на това което изчетох по-нагоре тази проверка би трябвало да върши работа
Това е моето решение на задачата:
static void Main()
{
int number = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
int subScript = (int)Math.Pow(10, n-1);
int nDigit = (number / subScript ) % (10);
if (nDigit != 0)
{
Console.WriteLine(nDigit);
}
else
{
Console.WriteLine('-');
}
}
Дано да помогне на някого! :)
Чудно. Имаш си условие. Имаш си формула, няма защо да се занимаваш с глупости. Браво!
Cwetkoyy , Здравей, когато имаш цифра 0 в числото, например 108 и искаш да извадиш нея програмата ти няма да работи коректно
Много правилно!
Можеш да разбереш дали съществува такава цифра като просто провериш дали number > subScript.
Нещо такова:
if (number >= subScript)
{
Console.WriteLine((number / subScript ) % 10);
}
else
{
Console.WriteLine("-");
}
Не съм го тествал, но трябва да работи. Пробвай формулата с няколко различни числа (наум или на хартия) ако не схващаш веднага зависимостта. Аз лично така направих и май го схванах.
Поздрави!
Прави сте, моя е грешката, твоя код TonislavAtanasov е сполучлив. :)
Ето и моето решение:
using System;
namespace Uprajnenie4
{
class Uprajnenie4
{
static void Main(string[] args)
{
double number = double.Parse(Console.ReadLine());
double n = double.Parse(Console.ReadLine());
//double a = Math.Pow(n, -1);
double nDigit = (int)((number / (Math.Pow(10, (n - 1))) % 10));
Console.WriteLine("{0}", nDigit);
}
}
}